




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2022-3-71第第3章章MCS-51MCS-51指令系統(tǒng)指令系統(tǒng) 1 1 匯編語(yǔ)言與指令系統(tǒng)匯編語(yǔ)言與指令系統(tǒng) 2 2 尋址方式尋址方式 3 3 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 4 4 算術(shù)操作指令算術(shù)操作指令 邏輯操作類命令邏輯操作類命令 6 6 程序轉(zhuǎn)換類指令程序轉(zhuǎn)換類指令 7 7 位操作指令位操作指令 8 8 匯程序格式及偽指令匯程序格式及偽指令 應(yīng)用舉例應(yīng)用舉例 2022-3-721 1 匯編語(yǔ)言與指令系統(tǒng)匯編語(yǔ)言與指令系統(tǒng)機(jī)器語(yǔ)言(二進(jìn)制代碼)機(jī)器語(yǔ)言(二進(jìn)制代碼)效率高,程序短,執(zhí)行速度快,效率高,程序短,執(zhí)行速度快,可讀性差,通用性差可讀性差,通用性差匯編語(yǔ)言(指令助記符)匯編
2、語(yǔ)言(指令助記符)解釋解釋編譯編譯高級(jí)語(yǔ)言高級(jí)語(yǔ)言效率低,程序龐大,效率低,程序龐大,可讀性好,可移植性好可讀性好,可移植性好MCS51指令系統(tǒng)指令系統(tǒng)l l111條指令,分為數(shù)據(jù)傳送,算術(shù)操作,邏輯操作,程序轉(zhuǎn)移,條指令,分為數(shù)據(jù)傳送,算術(shù)操作,邏輯操作,程序轉(zhuǎn)移,位操作位操作5類。類。l l單字節(jié)單字節(jié)49條條,雙字節(jié)雙字節(jié)46條條,三字節(jié)三字節(jié)16條條l l單周期單周期64條條,1s(12MHz時(shí))時(shí));雙周期雙周期45條條,2s;四周期四周期2條條4s2022-3-73 標(biāo)號(hào):標(biāo)號(hào): 操作碼操作碼 操作數(shù)操作數(shù)1 1,操作數(shù),操作數(shù)22;注釋;注釋 換行表示一條指令結(jié)束。換行表示一條指
3、令結(jié)束。 例:例: LOOPLOOP: MOV A MOV A,#40H #40H ;取參數(shù)取參數(shù)1.標(biāo)號(hào):標(biāo)號(hào):指令的符號(hào)地址指令的符號(hào)地址2.操作碼:操作碼:指明指令功能。指明指令功能。3.操作數(shù):操作數(shù):指令操作對(duì)象指令操作對(duì)象數(shù)據(jù)、地址、寄存器名及約定符號(hào)。數(shù)據(jù)、地址、寄存器名及約定符號(hào)。4.注釋行:注釋行:說(shuō)明指令在程序中的作用。說(shuō)明指令在程序中的作用。操作碼和操作數(shù)操作碼和操作數(shù)是指令主體。是指令主體。MOV_move傳送傳送XCH_exchange交換交換ANL_andlogic與邏輯運(yùn)算與邏輯運(yùn)算XRL_exclusiveor異或運(yùn)算異或運(yùn)算MUL_Multiply乘法乘法RR
4、_rotateright右循環(huán)右循環(huán)SJMP_shortjump短跳轉(zhuǎn)短跳轉(zhuǎn)RET_return子程序返回子程序返回2022-3-74一一.立即尋址方式立即尋址方式指令中給出實(shí)際操作數(shù)據(jù)指令中給出實(shí)際操作數(shù)據(jù)(立即數(shù)立即數(shù)),一般用于為寄存器或,一般用于為寄存器或存儲(chǔ)器賦常數(shù)初值。存儲(chǔ)器賦常數(shù)初值。舉例:舉例:8位立即數(shù):位立即數(shù):MOVA,#40H;A40H16位立即數(shù):位立即數(shù):MOVDPTR,#2100H;DPTR2100H2尋址方式尋址方式2022-3-75二二. .寄存器尋址方式寄存器尋址方式指令操作數(shù)為寄存器名,數(shù)據(jù)在寄存器中。指令操作數(shù)為寄存器名,數(shù)據(jù)在寄存器中。例例: :MOV
5、 AMOV A,R0R0;A AR0R0 MOV A MOV A,R2R2;A AR2R2 MOV R7 MOV R7,A A;R7R7AA 2尋址方式尋址方式2022-3-762尋址方式尋址方式三三. .寄存器間接尋址寄存器間接尋址 指令的操作數(shù)為寄存器名,寄存器中為數(shù)據(jù)地指令的操作數(shù)為寄存器名,寄存器中為數(shù)據(jù)地址。存放地址的寄存器稱為間址寄存器或數(shù)據(jù)指址。存放地址的寄存器稱為間址寄存器或數(shù)據(jù)指針。針。MOV AMOV A,RjRjMOVX AMOVX A,Rj Rj MOVX AMOVX A,DPTR DPTR 等等注意:注意: j=0 j=0、1 1 2022-3-772尋址方式尋址方式
6、四四. .直接尋址直接尋址 指令操作數(shù)是存儲(chǔ)器單元地址,數(shù)據(jù)在存儲(chǔ)器單元中。指令操作數(shù)是存儲(chǔ)器單元地址,數(shù)據(jù)在存儲(chǔ)器單元中。MOVA,30HACALLaddr11AJMPaddr11LCALLaddr16LJMPaddr16直接位尋址直接位尋址SETB80H等等直接尋址方式對(duì)數(shù)據(jù)操作時(shí),地址是固定值,而地址所指直接尋址方式對(duì)數(shù)據(jù)操作時(shí),地址是固定值,而地址所指定的單元內(nèi)容為變量形式。定的單元內(nèi)容為變量形式。思考:思考:直接尋址方式指令和立即尋址方式指令的形式有什么直接尋址方式指令和立即尋址方式指令的形式有什么不同?不同?2022-3-78五五. .基礎(chǔ)寄存器加變址寄存器間接尋址基礎(chǔ)寄存器加變址
7、寄存器間接尋址 數(shù)據(jù)在存儲(chǔ)器中,指令給出的數(shù)據(jù)地址中為數(shù)據(jù)的數(shù)據(jù)在存儲(chǔ)器中,指令給出的數(shù)據(jù)地址中為數(shù)據(jù)的基地址和偏移量。以基地址和偏移量。以PCPC或或DPTRDPTR作為基本地址寄存器,以作為基本地址寄存器,以A A作為變址寄存器。作為變址寄存器。數(shù)據(jù)地址數(shù)據(jù)地址 = = 基地址基地址 + + 偏移量。偏移量。2尋址方式尋址方式例:例:MOVCA, A+DPTRMOVCA, A+PC2022-3-79六六.相對(duì)尋址相對(duì)尋址 指令給出地址的相對(duì)偏移量指令給出地址的相對(duì)偏移量rel,在加上,在加上PC中的當(dāng)前值,如中的當(dāng)前值,如此得到真正的數(shù)據(jù)地址。此得到真正的數(shù)據(jù)地址。例:例:1000H:JC
8、55H;若若Cy為為1,則轉(zhuǎn)移,則轉(zhuǎn)移設(shè)指令執(zhí)行前設(shè)指令執(zhí)行前Cy=1,執(zhí)行指令后,執(zhí)行指令后,PC=?2尋址方式尋址方式2022-3-7103數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令3-1以累加器以累加器A為一方的傳送指令(單周期)為一方的傳送指令(單周期)(1)MOVA,Rii=07,具體單元由具體單元由PSW的的RS0,RS1定定MOVRi,A(2)MOVA, Rj片內(nèi)片內(nèi)RAM(51系列系列Rj值為值為07F,52系列,系列,Rj為為0FF)MOV Rj,A的數(shù)據(jù)與的數(shù)據(jù)與A之間的傳送之間的傳送j=0、12022-3-7113-1以累加器以累加器A為一方的傳送指令(單周期)為一方的傳送指令(單周期
9、)(3)MOVA,direct訪問(wèn)片內(nèi)訪問(wèn)片內(nèi)RAM,direct為片內(nèi)為片內(nèi)RAM地址地址MOVdirect,A注意:對(duì)于注意:對(duì)于51,它訪問(wèn)所有,它訪問(wèn)所有RAM(128字節(jié))及有定義的字節(jié))及有定義的SFR21字節(jié)字節(jié)對(duì)于對(duì)于52,它只訪問(wèn),它只訪問(wèn)128字節(jié)字節(jié)RAM(其余(其余RAM有(有(2)方式訪問(wèn))方式訪問(wèn))及有定義的及有定義的SFR(26字節(jié))。字節(jié))。3數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令2022-3-7123數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令3-2不以累加器不以累加器A為一方傳送指令(二周期)為一方傳送指令(二周期)(1)MOVdirectRi訪問(wèn)片內(nèi)訪問(wèn)片內(nèi)RAM的低的低128字節(jié)
10、及字節(jié)及SFRMOVRi,direct雙字節(jié)指令,第雙字節(jié)指令,第2字節(jié)為直接尋址的地址字節(jié)為直接尋址的地址2022-3-7133-2不以累加器不以累加器A為一方傳送指令(二周期)為一方傳送指令(二周期)(2)MOVdirect, Rj某片內(nèi)某片內(nèi)RAM單元(單元(0FF)內(nèi)容送片)內(nèi)容送片內(nèi)內(nèi)RAM(128字節(jié))或字節(jié))或SFRMOV Rj,direct3數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令2022-3-7143數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令3-2不以累加器不以累加器A為一方傳送指令(二周期)為一方傳送指令(二周期)(3)MOVdirect,direct某直接尋址字節(jié)送另一直接尋址字節(jié)某直接尋址字節(jié)送
11、另一直接尋址字節(jié)(128RAM及及SFR),不可訪問(wèn)),不可訪問(wèn)52系列的高系列的高128字節(jié)片內(nèi)字節(jié)片內(nèi)RAM2022-3-7153數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令3-3用立即數(shù)置數(shù)的指令用立即數(shù)置數(shù)的指令(1)MOVA,#data雙字節(jié)指令,第雙字節(jié)指令,第2字節(jié)為立即數(shù)字節(jié)為立即數(shù)(2)MOVRi,#data雙字節(jié)指令,第雙字節(jié)指令,第2字節(jié)為立即數(shù)字節(jié)為立即數(shù)(3)MOV Rj,#data立即數(shù)送片內(nèi)立即數(shù)送片內(nèi)RAM雙字節(jié)指令,第雙字節(jié)指令,第2字節(jié)為立即數(shù)字節(jié)為立即數(shù)(4)MOVdirect,#data立即數(shù)送直接地址(片內(nèi)立即數(shù)送直接地址(片內(nèi)RAM07F或或SFR)三字節(jié)指令,第三
12、字節(jié)指令,第2字節(jié)為直接地址,第字節(jié)為直接地址,第3字節(jié)為立即數(shù)字節(jié)為立即數(shù)(5)MOVDPTR,#data16位立即數(shù)送數(shù)據(jù)指針位立即數(shù)送數(shù)據(jù)指針唯一的一條唯一的一條16位數(shù)據(jù)傳送指令,位數(shù)據(jù)傳送指令,三字節(jié)指令三字節(jié)指令2022-3-7163數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令3-4訪問(wèn)片外訪問(wèn)片外RAM(三周期)(三周期)訪問(wèn)片外訪問(wèn)片外RAM,用,用MOVX指針指針(1)MOVXA, Rj訪問(wèn)片外訪問(wèn)片外0FF單元,單元,8位編址,單字節(jié)位編址,單字節(jié)指令指令MOVX Rj,A(2)MOVXA, DPTR訪問(wèn)片外訪問(wèn)片外0000FFFF單元,單元,16位編位編址,單字節(jié)指令址,單字節(jié)指令MOV
13、X DPTR,A2022-3-7173數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令3-5基址寄存器加變址寄存器間址指令(基址寄存器加變址寄存器間址指令(2周期)周期)(1)MOVCA, A+DPTR訪問(wèn)程序存貯器,單字節(jié)指令訪問(wèn)程序存貯器,單字節(jié)指令例例執(zhí)行前執(zhí)行前A=5DPTR=2000H在在2005H單元存放值為單元存放值為8,則,則執(zhí)行后執(zhí)行后A為為8(2)MOVCA, A+PC訪問(wèn)程序存貯器,單字節(jié)指令訪問(wèn)程序存貯器,單字節(jié)指令注意:若當(dāng)前單字節(jié)為注意:若當(dāng)前單字節(jié)為2000地址,則地址,則PC值為值為2001,因?yàn)閳?zhí)行此指,因?yàn)閳?zhí)行此指令時(shí),令時(shí),PC已已+12022-3-7183數(shù)據(jù)傳送類指令數(shù)據(jù)
14、傳送類指令3-6交換指令交換指令數(shù)據(jù)交換,互為源地址與目的地址(單周期)數(shù)據(jù)交換,互為源地址與目的地址(單周期)(1)XCHA,Ri單字節(jié)單字節(jié)(2)XCHA, Rj單字節(jié)單字節(jié)(3)XCHA,direct雙字節(jié),第雙字節(jié),第2字節(jié)為直接尋址字節(jié)為直接尋址(4)XCHDA, Rj單字節(jié)指令,單字節(jié)指令,交換低半字節(jié)交換低半字節(jié)(5)SWAPA單字節(jié)指令,單字節(jié)指令,交換交換A的高低半字節(jié)的高低半字節(jié)SAM11.ASMSAM11.ASM2022-3-7193數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令3-7進(jìn)棧出棧(進(jìn)棧出棧(2周期)周期)(1)PUSHdirect雙字節(jié)指令,第雙字節(jié)指令,第2字節(jié)直接尋址字節(jié)
15、直接尋址(SP)(SP)+1(SP)(direct)(2)POPdirect雙字節(jié)指令,第雙字節(jié)指令,第2字節(jié)為直接尋址字節(jié)為直接尋址(direct)(SP)(SP)(SP)-1SAM12.ASMSAM12.ASM2022-3-720說(shuō)明:說(shuō)明: 只有指令表中的指令才有對(duì)應(yīng)指令代碼,計(jì)算機(jī)才能執(zhí)行。編程時(shí),不能隨意創(chuàng)造發(fā)明指令。1. 一條指令中不能同時(shí)出現(xiàn)兩個(gè)工作寄存器:非法指令:MOV R1,R2MOV R2,R02. 間址寄存器只能使用 R0、R1。 非法指令: MOV A,R23. SFR區(qū)只能直接尋址,不能用寄存器間接尋址。非法指令: MOV R0,#80H MOV A,R04. 指令
16、表:指令字節(jié)數(shù),機(jī)器周期數(shù)2022-3-7214算術(shù)操作類指令算術(shù)操作類指令I(lǐng)NCDPTR為周期為周期MULAB為周期為周期DLVAB其余為單周期其余為單周期4-1加法指令加法指令(1)ADDA,Ri單字節(jié)指令單字節(jié)指令A(yù)DDCA,Ri進(jìn)位位進(jìn)入最低位進(jìn)位位進(jìn)入最低位(2)ADDA,RRj j 單字節(jié)指令單字節(jié)指令A(yù)DDCA,RRj j 訪問(wèn)片內(nèi)訪問(wèn)片內(nèi)RAMRAM(0 0FFFF)(3 3)ADD AADD A,direct direct 直接尋址字節(jié)與累加器相加,直接尋址字節(jié)與累加器相加,ADDC AADDC A,direct direct 雙字節(jié)指令,第雙字節(jié)指令,第2 2字節(jié)為直接尋址
17、字節(jié)為直接尋址(4 4)ADD AADD A, #data #data 立即數(shù)與累加數(shù)相加立即數(shù)與累加數(shù)相加 ADDC AADDC A, #data #data 雙字節(jié)指令,第雙字節(jié)指令,第2 2字節(jié)為立即數(shù)字節(jié)為立即數(shù)2022-3-7224算術(shù)操作類指令算術(shù)操作類指令4-1加法指令加法指令說(shuō)明:說(shuō)明: * * 加法運(yùn)算時(shí),加法運(yùn)算時(shí),PSWPSW的影響的影響 相加后整個(gè)字節(jié)有溢出相加后整個(gè)字節(jié)有溢出 C C置位,否則置位,否則C C為為0 0 低半字節(jié)有溢出低半字節(jié)有溢出 ACAC置位,否則置位,否則ACAC為為0 0 最高位與次高位有一個(gè)進(jìn)位,最高位與次高位有一個(gè)進(jìn)位,OVOV置位,否則置
18、位,否則OVOV為為0 0 * *加法有帶符號(hào)數(shù)相加與不帶符號(hào)數(shù)相加之分,但機(jī)器本身是做加法有帶符號(hào)數(shù)相加與不帶符號(hào)數(shù)相加之分,但機(jī)器本身是做統(tǒng)一處理,并不認(rèn)識(shí)有無(wú)符號(hào),也不接受負(fù)數(shù)輸入(要用補(bǔ)碼表統(tǒng)一處理,并不認(rèn)識(shí)有無(wú)符號(hào),也不接受負(fù)數(shù)輸入(要用補(bǔ)碼表示),運(yùn)算結(jié)果要由人為判定。示),運(yùn)算結(jié)果要由人為判定。 * * OVOV為為1 1表示超出一個(gè)字節(jié)對(duì)有符號(hào)數(shù)的表示范圍,表示超出一個(gè)字節(jié)對(duì)有符號(hào)數(shù)的表示范圍,-128-128127127SAM13.ASMSAM13.ASM2022-3-7234算術(shù)操作類指令算術(shù)操作類指令4-2 4-2 減法指令減法指令 均涉及進(jìn)位位均涉及進(jìn)位位(1 1)SU
19、BB ASUBB A,R Ri i 單字節(jié)單字節(jié) A-RA-Ri i-C-C(2 2)SUBB ASUBB A,RRj j 單字節(jié)單字節(jié) 片內(nèi)片內(nèi)RAMRAM(3 3)SUBB ASUBB A,direct direct 雙字節(jié)雙字節(jié) 第第1 1字節(jié)為字節(jié)為95H95H,第二字節(jié)為直接地址,第二字節(jié)為直接地址(4 4)SUBB ASUBB A,#data #data 雙字節(jié),第二字節(jié)為雙字節(jié),第二字節(jié)為data data SAMPLE14.ASMSAMPLE14.ASM2022-3-7244算術(shù)操作類指令算術(shù)操作類指令4-2 4-2 減法指令減法指令說(shuō)明:說(shuō)明:* * 減法運(yùn)算影響減法運(yùn)算影響
20、PSWPSW 不夠減(最高位有借位)不夠減(最高位有借位) C=1C=1 低半字節(jié)不夠減低半字節(jié)不夠減AC=1C=1 最高位與次高位不同時(shí)借位(有一個(gè))最高位與次高位不同時(shí)借位(有一個(gè)) OV=1 OV=1 否則為否則為0 0C OV C OV (+ +)- -(+ +) (+ +)- -(- -) (- -)- -(+ +) (- -)- -(- -)0 0 127-1=126 -1-1=-2 -1-(-128)=1270 0 127-1=126 -1-1=-2 -1-(-128)=1270 1 0 1 -128-127=1-128-127=11 0 1-127=-126 1-(-1)=2
21、-128-(-1)=-127 1 0 1-127=-126 1-(-1)=2 -128-(-1)=-127 1 1 1 1 127-(-128)=-1127-(-128)=-12022-3-7254算術(shù)操作類指令算術(shù)操作類指令4-2 4-2 減法指令減法指令例:例:80H-81H80H-81H 128-129 -1 128-129 -1 正確(有符號(hào)數(shù))正確(有符號(hào)數(shù))1000 0000 128-1000 0000 128-(-127-127) 255 255 正確,無(wú)符號(hào)數(shù)正確,無(wú)符號(hào)數(shù)1000 0001 C=1 OV=0 -128-129 -257 1000 0001 C=1 OV=0 -
22、128-129 -257 出錯(cuò)出錯(cuò)1111 1111 -128-1111 1111 -128-(-127-127) -1 -1 正確,有符號(hào)數(shù)正確,有符號(hào)數(shù)注:無(wú)論加法運(yùn)算,還是減法運(yùn)算,均掌握規(guī)律。注:無(wú)論加法運(yùn)算,還是減法運(yùn)算,均掌握規(guī)律。l 只要給定兩數(shù)只要給定兩數(shù)0000FFHFFH,運(yùn)算后其結(jié)果是定的,對(duì),運(yùn)算后其結(jié)果是定的,對(duì)PSWPSW相關(guān)位(相關(guān)位(C C、OVOV、ACAC等)的影響也是定的。等)的影響也是定的。l 得到的結(jié)果是否正是用戶所需的,要看操作數(shù)的其正意義,(比得到的結(jié)果是否正是用戶所需的,要看操作數(shù)的其正意義,(比如如FFHFFH可能代表可能代表-1-1,也可能代
23、表,也可能代表255255),該結(jié)果可能有效,也可能無(wú)),該結(jié)果可能有效,也可能無(wú)效,可能當(dāng)成有符號(hào)數(shù),也可能當(dāng)成無(wú)符號(hào)數(shù)。效,可能當(dāng)成有符號(hào)數(shù),也可能當(dāng)成無(wú)符號(hào)數(shù)。l 用戶按照你輸入的操作數(shù)的具體意圖及用戶按照你輸入的操作數(shù)的具體意圖及PSWPSW的相關(guān)位來(lái)讀取結(jié)果。的相關(guān)位來(lái)讀取結(jié)果。 2022-3-7264算術(shù)操作類指令算術(shù)操作類指令4-34-3加加1指令指令 (不影響標(biāo)志位)(不影響標(biāo)志位)(1 1)INC A INC A 單字節(jié)單字節(jié)(2 2)INC RINC Rj j 單字節(jié)單字節(jié)(3 3)INC RINC Rj j 單字節(jié)單字節(jié)(4 4)INC direct INC direct
24、 雙字節(jié),第二字節(jié)為直接地址雙字節(jié),第二字節(jié)為直接地址(5 5)INC DPTR INC DPTR 單字節(jié)單字節(jié) 。SAMPLE16.ASMSAMPLE16.ASM 2022-3-7274算術(shù)操作類指令算術(shù)操作類指令4-44-4減減1指令指令 (不影響標(biāo)志位)(不影響標(biāo)志位)(1 1)DEC ADEC A(2 2)DEC RDEC R j j(3 3)DEC RDEC Rj j(4 4)DEC direct DEC direct SAMPLE17.ASMSAMPLE17.ASM2022-3-7284算術(shù)操作類指令算術(shù)操作類指令4-5 4-5 其它算術(shù)操作指令其它算術(shù)操作指令(1 1)DA A
25、DA A 單字節(jié),累加器內(nèi)容十進(jìn)制調(diào)整單字節(jié),累加器內(nèi)容十進(jìn)制調(diào)整 機(jī)器操作是按機(jī)器操作是按2 2進(jìn)制,如要作進(jìn)制,如要作BCDBCD碼運(yùn)算,則需調(diào)整,例:碼運(yùn)算,則需調(diào)整,例: (3838)BCDBCD+ +(8989)BCDBCD 0011 1000 1100 0001 0011 1000 1100 0001 1000 1001 0110 0110 127 1000 1001 0110 0110 127 1100 0001 10010 0111 1100 0001 10010 0111 非法非法 AC=1AC=1l A A為為1或低四位非法,低或低四位非法,低4位位l 為或高四位非法,高位
26、為或高四位非法,高位l 不會(huì)同時(shí)出現(xiàn)二者不會(huì)同時(shí)出現(xiàn)二者l 調(diào)整過(guò)程運(yùn)算結(jié)果,只影響,不影響、調(diào)整過(guò)程運(yùn)算結(jié)果,只影響,不影響、 SAMPLE15.ASMSAMPLE15.ASM2022-3-7294算術(shù)操作類指令算術(shù)操作類指令4-5 4-5 其它算術(shù)操作指令其它算術(shù)操作指令()()()()結(jié)果的高位低位()()結(jié)果的高位低位單字節(jié)周期指令不影響單字節(jié)周期指令不影響影響標(biāo)志位:影響標(biāo)志位:;積大于積大于255,為;,為;積小于等于積小于等于255,為,可只取中結(jié)果。,為,可只取中結(jié)果。()()()()商余數(shù)()()商余數(shù)影響標(biāo)志位:;除數(shù)為時(shí),為,否則為。影響標(biāo)志位:;除數(shù)為時(shí),為,否則為。S
27、AMPLE18.ASMSAMPLE18.ASM 2022-3-730邏輯操作類命令邏輯操作類命令共條共條direct direct datadatadirect direct datadata為兩個(gè)機(jī)器周期為兩個(gè)機(jī)器周期direct direct datadata一、與指令一、與指令:用于修改某些單元的內(nèi)容,用讀修改寫(xiě)的方式用于修改某些單元的內(nèi)容,用讀修改寫(xiě)的方式控制位為時(shí),使相關(guān)位清,這則保持不變??刂莆粸闀r(shí),使相關(guān)位清,這則保持不變。ANLANL,i i 單單 ANL AANL A, #0FEH#0FEHANLANL, j j 單單ANL PSWANL PSW, #1110 0111B#1
28、110 0111BANL AANL A,direct direct 雙雙ANL directANL direct,A A 雙雙 無(wú)法修改無(wú)法修改5252的高的高128128字節(jié)字節(jié)RAMRAMANL AANL A, #data #data 雙雙ANL directANL direct,#data #data 三三 2022-3-731邏輯操作類命令邏輯操作類命令二、或指令二、或指令 控制位為控制位為0 0,則保持不變,為,則保持不變,為1 1則是則是1 1ORL AORL A,R Ri i 單單ORL AORL A,RRj j 單單ORL AORL A,direct direct 雙雙ORL
29、directORL direct,A A 雙雙ORL AORL A,#data #data 雙雙ORL directORL direct,#data #data 三三例例 P P1 1端口前三位不變,后五位由端口前三位不變,后五位由A A的后的后5 5位決定位決定ANL AANL A,#0001 1111B A#0001 1111B A前三位為前三位為0 0,后,后5 5位不變位不變ORL PORL P1 1,A PA P1 1前三位不變,后前三位不變,后5 5位中根據(jù)位中根據(jù)A A,把該置,把該置1 1的置位的置位ORL AORL A,#1110 0000 B A#1110 0000 B A
30、前三位為前三位為1 1,后,后5 5位不變位不變ANL PANL P1 1,A PA P1 1前三位不變,后前三位不變,后5 5位中根據(jù)位中根據(jù)A A,把該置,把該置0 0的清的清0 0 SAMPLE19.ASMSAMPLE19.ASM2022-3-732邏輯操作類命令邏輯操作類命令三、異或指令三、異或指令 控制位為控制位為1 1,使原相應(yīng)位改變,使原相應(yīng)位改變 控制位為控制位為0 0,使相應(yīng)位不變,使相應(yīng)位不變XRL AXRL A, R Ri i 單單XRL AXRL A, RRj j 單單XRL AXRL A,direct direct 雙雙XRL directXRL direct,A A
31、 雙雙XRL AXRL A,#data #data 雙雙XRL directXRL direct,#data #data 三三 第第2 2為直接地址,第為直接地址,第3 3字節(jié)為立即數(shù)字節(jié)為立即數(shù)SAMPLE20.ASMSAMPLE20.ASM 2022-3-733四、四、A A操作指令操作指令1.A A取反指令:取反指令:CPL A CPL A ;A/A ,A/A ,單字節(jié)單字節(jié) 2. A A清清0 0指令:指令: CLR A CLR A ;A0 ,A0 ,單字節(jié)單字節(jié)3.循環(huán)移位指令:循環(huán)移位指令:1)8位循環(huán)指令:位循環(huán)指令:RL A ;A循環(huán)左移一位,單字節(jié)單字節(jié)RR A ;A循環(huán)右移
32、一位,單字節(jié)單字節(jié)2)9位循環(huán)指令:位循環(huán)指令:RLC A;帶C循環(huán)左移一位,單字節(jié)單字節(jié)RRC A;帶C循環(huán)右移一位,單字節(jié)單字節(jié)SAMPLE21.ASMSAMPLE21.ASMC邏輯操作類命令邏輯操作類命令C2022-3-7346 6 程序轉(zhuǎn)換類指令程序轉(zhuǎn)換類指令共共1717條條NOP NOP 空操作,只延時(shí),空操作,只延時(shí),1 1個(gè)機(jī)器周期個(gè)機(jī)器周期其余均為其余均為2 2個(gè)機(jī)器周期個(gè)機(jī)器周期一、無(wú)條件轉(zhuǎn)移一、無(wú)條件轉(zhuǎn)移(1 1)絕對(duì)轉(zhuǎn)移指令:)絕對(duì)轉(zhuǎn)移指令:AJMP addr11 AJMP addr11 (PCPC) (PCPC)+2 +2 雙字節(jié)指令雙字節(jié)指令 (PCPC10100 0
33、) addr 11addr 11 (PCPC151511)不變)不變l 轉(zhuǎn)移發(fā)生在轉(zhuǎn)移發(fā)生在PCPC當(dāng)前值(當(dāng)前值(PC+2PC+2后)所在的后)所在的2K2K范圍內(nèi)。范圍內(nèi)。l 同樣的指令,由同樣的指令,由PCPC當(dāng)前值不同,程序入口會(huì)不一樣當(dāng)前值不同,程序入口會(huì)不一樣l 在在2K2K內(nèi)轉(zhuǎn)移內(nèi)轉(zhuǎn)移例:例: AJMP 111 1111 1111 BAJMP 111 1111 1111 B執(zhí)行后入口為執(zhí)行后入口為 07FFH07FFH若上面指令在若上面指令在07FFH07FFH單元,則單元,則+2+2后為后為0801H0801H,入口變?yōu)?,入口變?yōu)?FFFH0FFFH單元單元SAMPLE22.A
34、SMSAMPLE22.ASM 2022-3-7356 6 程序轉(zhuǎn)換類指令程序轉(zhuǎn)換類指令一、無(wú)條件轉(zhuǎn)移一、無(wú)條件轉(zhuǎn)移(2 2)長(zhǎng)轉(zhuǎn)移指令:長(zhǎng)轉(zhuǎn)移指令:LJMP addr 16 LJMP addr 16 三字節(jié),第三字節(jié),第2 2字節(jié)為高字節(jié)為高8 8位,位,第第3 3字節(jié)為低字節(jié)為低8 8位位 (PCPC) (PCPC)+3+3 (PCPC) addr 16addr 16 在范圍在范圍64K64K內(nèi)轉(zhuǎn)移內(nèi)轉(zhuǎn)移(3 3)相對(duì)短相對(duì)短轉(zhuǎn)移指令:轉(zhuǎn)移指令:SJMP rel SJMP rel 相對(duì)轉(zhuǎn)移,相對(duì)轉(zhuǎn)移,-128-128127127范圍內(nèi)范圍內(nèi) (PCPC) (PCPC)+2 +2 雙字節(jié)雙字節(jié)
35、 (PCPC) (PCPC)+ +相對(duì)地址相對(duì)地址 在在1 1頁(yè)內(nèi)轉(zhuǎn)移,匯編編程時(shí),頁(yè)內(nèi)轉(zhuǎn)移,匯編編程時(shí),relrel為地址標(biāo)號(hào)為地址標(biāo)號(hào)(4 4)相對(duì)長(zhǎng)相對(duì)長(zhǎng)轉(zhuǎn)移指令:轉(zhuǎn)移指令:JMP A+DPTR JMP A+DPTR 單字節(jié)單字節(jié) (PCPC) (A A)+ +(DPTRDPTR) 在在64K64K范圍內(nèi)轉(zhuǎn)移范圍內(nèi)轉(zhuǎn)移SAMPLE23.ASMSAMPLE23.ASM2022-3-7366 6 程序轉(zhuǎn)換類指令程序轉(zhuǎn)換類指令二、二、 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令(1 1)累加器內(nèi)容為零轉(zhuǎn)移指令:累加器內(nèi)容為零轉(zhuǎn)移指令:JZ rel JZ rel 雙字節(jié)指令,在雙字節(jié)指令,在1 1頁(yè)頁(yè)內(nèi)(內(nèi)(25
36、6256)轉(zhuǎn)移,)轉(zhuǎn)移,relrel為相對(duì)地址,為相對(duì)地址,A A累器為累器為0則轉(zhuǎn)則轉(zhuǎn)(2 2)累加器內(nèi)容不為零轉(zhuǎn)移指令:累加器內(nèi)容不為零轉(zhuǎn)移指令:JNZ rel JNZ rel 同上,同上,A A不為不為0 0則則轉(zhuǎn),雙字節(jié)指令轉(zhuǎn),雙字節(jié)指令2022-3-737(3 3)累加器內(nèi)容與某片內(nèi)累加器內(nèi)容與某片內(nèi)RAM單元(低單元(低128字節(jié))或某專用寄字節(jié))或某專用寄存器內(nèi)容不等轉(zhuǎn)移指令存器內(nèi)容不等轉(zhuǎn)移指令 CJNE A CJNE A,directdirect,relrel 三字節(jié),第三字節(jié),第2 2為直接地址,第為直接地址,第3 3字節(jié)為相對(duì)地址字節(jié)為相對(duì)地址 A A與與directdir
37、ect內(nèi)容不等則轉(zhuǎn)內(nèi)容不等則轉(zhuǎn)(4 4)累加器內(nèi)容與立即數(shù)不等轉(zhuǎn)移指令累加器內(nèi)容與立即數(shù)不等轉(zhuǎn)移指令 CJNE A CJNE A,#data, rel#data, rel三字節(jié),三字節(jié),A A與與#data#data不等則轉(zhuǎn)不等則轉(zhuǎn)(5 5)某工作寄存器內(nèi)容與立即數(shù)不等轉(zhuǎn)移指令某工作寄存器內(nèi)容與立即數(shù)不等轉(zhuǎn)移指令 CJNE R CJNE Ri i,#data#data,relrel R Ri i(I=0I=07 7)與)與#data#data不等則轉(zhuǎn),三個(gè)字節(jié)不等則轉(zhuǎn),三個(gè)字節(jié)(6 6)某片內(nèi)某片內(nèi)RAM單元內(nèi)容與立即數(shù)不等轉(zhuǎn)移指令單元內(nèi)容與立即數(shù)不等轉(zhuǎn)移指令 CJNE R CJNE Rj j
38、,#data#data,rel rel 三個(gè)字節(jié),片內(nèi)三個(gè)字節(jié),片內(nèi)RAMRAM內(nèi)容同內(nèi)容同#data#data比較比較二、二、 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令6 6 程序轉(zhuǎn)換類指令程序轉(zhuǎn)換類指令2022-3-738(7 7)某工作寄存器內(nèi)容減某工作寄存器內(nèi)容減1不為不為0轉(zhuǎn)移指令轉(zhuǎn)移指令 DJNZ R DJNZ Ri i, rel , rel 雙字節(jié)雙字節(jié) R Ri i(i=0=07 7),內(nèi)容先減),內(nèi)容先減1 1,再判斷,不為,再判斷,不為0 0則轉(zhuǎn)則轉(zhuǎn)(8 8)某片內(nèi)某片內(nèi)RAM單元(低單元(低128字節(jié))或某專用寄存器內(nèi)容減字節(jié))或某專用寄存器內(nèi)容減1不不為為0轉(zhuǎn)移指令轉(zhuǎn)移指令 DJNZ
39、direct DJNZ direct,rel rel 三字節(jié)三字節(jié) (directdirect)-1 -1 不為不為0 0則轉(zhuǎn)則轉(zhuǎn) SAMPLE24.ASMSAMPLE24.ASM6 6 程序轉(zhuǎn)換類指令程序轉(zhuǎn)換類指令二、二、 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令2022-3-7396 6 程序轉(zhuǎn)換類指令程序轉(zhuǎn)換類指令6-2 6-2 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令例:例: MOV RMOV R0 0,#0AH#0AH LP LP:CPL PCPL P1 1。0 0 ;1個(gè)周期個(gè)周期 DJNZ RDJNZ R0 0,LP LP ;2 2個(gè)周期個(gè)周期 DONEDONE:每每3 3個(gè)器周期個(gè)器周期P P1 1。0 0反
40、向一次,同時(shí)反向一次,同時(shí)R R0 0減減1 1,故結(jié)果為,故結(jié)果為假定假定P P1 1。0 0原為原為0 30 3個(gè)機(jī)器周期個(gè)機(jī)器周期出現(xiàn)出現(xiàn)5 5個(gè)周期方波個(gè)周期方波 2022-3-7406 6 程序轉(zhuǎn)換類指令程序轉(zhuǎn)換類指令 (PCPC) (PCPC)+2+26-36-3調(diào)子程序調(diào)子程序 (SPSP) (SPSP)+1+1(1)(1)絕對(duì)調(diào)子指令:絕對(duì)調(diào)子指令:ACALL addr11 ACALL addr11 (SPSP) (PCPC7 70 0)雙字節(jié)指令雙字節(jié)指令 (SPSP) (SPSP)+1+1用在當(dāng)前用在當(dāng)前PCPC所所在的在的2K2K范圍內(nèi)范圍內(nèi) (SPSP) (PCPC15
41、158 8) (PCPC10100 0) addr11addr11(2)(2)長(zhǎng)調(diào)子指令:長(zhǎng)調(diào)子指令:LCALL addr16 LCALL addr16 三字節(jié)指令三字節(jié)指令 執(zhí)行同前面執(zhí)行同前面類似,只是類似,只是PCPC要加要加3 3,而更新,而更新PCPC是是addr 16addr 16,在在64K64K范圍內(nèi)調(diào)用子程范圍內(nèi)調(diào)用子程序序(PCPC) (PCPC)+3+3 (SPSP) (SPSP)+1+1(SPSP) (PCPC7 70 0)(SPSP) (SPSP)+1+1(SPSP) (PCPC15158 8)(PCPC) addr16addr162022-3-741(3)返主指令:
42、返主指令:RET單字節(jié)單字節(jié)(PC)(PC)+1(PC158)(SP)(SP)(SP)-1(PC70)(SP)(SP)(SP)-1l 在執(zhí)行時(shí)在執(zhí)行時(shí)PC仍要仍要+1,只不過(guò)由于要全部更新,故不強(qiáng)調(diào),只不過(guò)由于要全部更新,故不強(qiáng)調(diào)l PC保留是先低后高字節(jié),恢復(fù)是先高后低字節(jié)。保留是先低后高字節(jié),恢復(fù)是先高后低字節(jié)。(4)RETI中斷返回指令,功能與中斷返回指令,功能與RET同同只是先要恢復(fù)優(yōu)先級(jí)觸發(fā)器為只是先要恢復(fù)優(yōu)先級(jí)觸發(fā)器為02022-3-7427 7 位操作指令位操作指令MCS-51MCS-51單片機(jī)有位處理功能,適合于位處理、邏輯控制任務(wù)。單片機(jī)有位處理功能,適合于位處理、邏輯控制任
43、務(wù)。位的表示方式:位地址位的表示方式:位地址 比如比如PSWPSW的最低位的最低位P P,可用,可用D D0H表示表示點(diǎn)方式點(diǎn)方式 PSW.0PSW.0位名稱表示位名稱表示 P P標(biāo)號(hào)表示少用(后面講,標(biāo)號(hào)標(biāo)號(hào)表示少用(后面講,標(biāo)號(hào)bit bit 位)位)7-1 7-1 位傳送位傳送 1 1 個(gè)機(jī)器周期個(gè)機(jī)器周期 bitbit代表尋址位代表尋址位(1 1)MOV C bit MOV C bit (例(例 MOV C P0MOV C P0 ,P0P0的低位進(jìn)標(biāo)志位的低位進(jìn)標(biāo)志位C C)(2 2)MOV bit CMOV bit C 例如例如 MOV 00HMOV 00H, C C指指C C進(jìn)入進(jìn)
44、入RAM20HRAM20H單元的低位單元的低位2022-3-7437 7 位操作指令位操作指令7-2 7-2 位邏輯操作位邏輯操作(1 1)進(jìn)位位取反指令:進(jìn)位位取反指令:CPL C CPL C 單字節(jié)單周期單字節(jié)單周期(2 2)進(jìn)位位清零指令:進(jìn)位位清零指令:CLR C CLR C 單字節(jié)單周期單字節(jié)單周期(3 3)進(jìn)位位置進(jìn)位位置1指令:指令:SETB C SETB C 單字節(jié)單周期單字節(jié)單周期(4 4)直接尋址位取反指令:直接尋址位取反指令:CPL bit CPL bit 雙字節(jié)雙字節(jié) 單周期,第二字單周期,第二字節(jié)為位地址節(jié)為位地址(5)直接尋址位清零指令:直接尋址位清零指令:CLR
45、bit CLR bit 雙字節(jié)雙字節(jié) 單周期,第二字單周期,第二字節(jié)為位地址節(jié)為位地址(6)直接尋址位置直接尋址位置1指令:指令:SETB bitSETB bit雙字節(jié)雙字節(jié) 單周期,第二字節(jié)單周期,第二字節(jié)為位地址為位地址2022-3-7447-2 7-2 位邏輯操作位邏輯操作(7)直接尋址位與進(jìn)位位相與指令:直接尋址位與進(jìn)位位相與指令:ANL C, bit ANL C, bit 雙字節(jié)雙字節(jié) 單周單周期,第二字節(jié)為位地址期,第二字節(jié)為位地址(8)直接尋址位與進(jìn)位位相或指令:直接尋址位與進(jìn)位位相或指令:ORL CORL C,bitbit雙字節(jié)雙字節(jié) 單周期,單周期,第二字節(jié)為位地址第二字節(jié)為
46、位地址(9)直接尋址位取反后與進(jìn)位位相與指令:直接尋址位取反后與進(jìn)位位相與指令:ANL C, /bit ANL C, /bit 雙字雙字節(jié)節(jié) 單周期,單周期,/bit/bit代表先取反代表先取反 (10)(10)直接尋址位取反后與進(jìn)位位相或指令:直接尋址位取反后與進(jìn)位位相或指令:ORL C, /bit ORL C, /bit 雙字雙字節(jié)節(jié) 單周期,再操作單周期,再操作7 7 位操作指令位操作指令2022-3-7457 7 位操作指令位操作指令7-3 7-3 位條件轉(zhuǎn)移指令(二周期)位條件轉(zhuǎn)移指令(二周期)(1 1)JC rel JC rel 雙字節(jié),第二字節(jié)為相對(duì)地址(在雙字節(jié),第二字節(jié)為相對(duì)
47、地址(在1 1頁(yè)內(nèi)轉(zhuǎn))頁(yè)內(nèi)轉(zhuǎn))(2 2)JNC rel JNC rel 雙字節(jié),第二字節(jié)為相對(duì)地址(在雙字節(jié),第二字節(jié)為相對(duì)地址(在1 1頁(yè)內(nèi)轉(zhuǎn))頁(yè)內(nèi)轉(zhuǎn))(3 3)JB bit, rel JB bit, rel 三字節(jié),第三字節(jié),第2 2為位地址,第為位地址,第3 3字節(jié)為相對(duì)地址字節(jié)為相對(duì)地址(4 4)JNB bitJNB bit,rel rel 三字節(jié),不為三字節(jié),不為1 1轉(zhuǎn)轉(zhuǎn)(5 5)JBC bitJBC bit,rel rel 三字節(jié),同上三字節(jié),同上 位為位為1 1轉(zhuǎn),同時(shí)清除該位至轉(zhuǎn),同時(shí)清除該位至0 0 與與JB bitJB bit,rel rel 多一個(gè)清除操作多一個(gè)清除操作
48、 例例 CJNE RCJNE R0 0,#100#100,NEQU NEQU 比較,并影響標(biāo)志位比較,并影響標(biāo)志位代碼代碼1;相等,;相等,R R0 0=100=100 NEQU NEQU:JC LESSJC LESS 代碼代碼2 2 ; R R0 0100100 LESS LESS: 代碼代碼3 3 ; R R0 0100 100 2022-3-7468 8 匯程序格式及位指令匯程序格式及位指令8-18-1格式格式 標(biāo)號(hào):操作碼,操作數(shù);注釋標(biāo)號(hào):操作碼,操作數(shù);注釋(1 1)標(biāo)號(hào),)標(biāo)號(hào),1 16 6個(gè)字符,第個(gè)字符,第1 1個(gè)必為英文字母?jìng)€(gè)必為英文字母 不必都加,但在轉(zhuǎn)移時(shí)有用不必都加,
49、但在轉(zhuǎn)移時(shí)有用標(biāo)號(hào)實(shí)際就是符號(hào)地址標(biāo)號(hào)實(shí)際就是符號(hào)地址(2 2)操作碼:即指令助記符)操作碼:即指令助記符(3 3)操作數(shù):多個(gè)應(yīng)分開(kāi),用)操作數(shù):多個(gè)應(yīng)分開(kāi),用“,”(4 4)注釋:)注釋: 用;隔開(kāi),匯編時(shí)忽略用;隔開(kāi),匯編時(shí)忽略 2022-3-7478 8 匯程序格式及位指令匯程序格式及位指令8-2 8-2 偽指令偽指令計(jì)算機(jī)不執(zhí)行真正操作,沒(méi)有機(jī)器碼,不產(chǎn)生目標(biāo)程序計(jì)算機(jī)不執(zhí)行真正操作,沒(méi)有機(jī)器碼,不產(chǎn)生目標(biāo)程序(1 1)ORG 16ORG 16位地址位地址說(shuō)明緊隨其后的程序段存放的起始地址。說(shuō)明緊隨其后的程序段存放的起始地址。(2 2)ENDEND END END 標(biāo)號(hào)標(biāo)號(hào) 表示程序
50、結(jié)束表示程序結(jié)束(3 3)標(biāo)號(hào):)標(biāo)號(hào):DBDB字節(jié)或用字節(jié)或用,分開(kāi)的字節(jié)串分開(kāi)的字節(jié)串從標(biāo)號(hào)的符號(hào)地址依次存入后面的字節(jié)從標(biāo)號(hào)的符號(hào)地址依次存入后面的字節(jié)()標(biāo)號(hào):字或用()標(biāo)號(hào):字或用,分開(kāi)的字串分開(kāi)的字串同上,只是存放時(shí)低字節(jié)在前(低地址),高字節(jié)在后(高同上,只是存放時(shí)低字節(jié)在前(低地址),高字節(jié)在后(高地址)地址)()標(biāo)號(hào):()標(biāo)號(hào):數(shù)字,保留存貯單元數(shù)字,保留存貯單元 從標(biāo)號(hào)處保留從標(biāo)號(hào)處保留“數(shù)字?jǐn)?shù)字”個(gè)字節(jié)個(gè)字節(jié)()標(biāo)號(hào)()標(biāo)號(hào)bitbit位地址位地址bit Fbit F則則以后可由以后可由代替代替SAMPLE25.ASM2022-3-748算術(shù)邏輯處理程序算術(shù)邏輯處理程序例
51、例3-1將一雙字節(jié)數(shù)存入將一雙字節(jié)數(shù)存入RAM設(shè)該待存雙字節(jié)數(shù)高字節(jié)在設(shè)該待存雙字節(jié)數(shù)高字節(jié)在R2中、低字節(jié)在中、低字節(jié)在A中,中,要求高字節(jié)存入片內(nèi)要求高字節(jié)存入片內(nèi)RAM的的36H單元,低字節(jié)存入單元,低字節(jié)存入35H單元。程序:?jiǎn)卧?。程序:MOVR0,#35HMOVR0,AINCR0XCHA,R2MOVR0,AXCHA,R2SAMPLE26.ASM2022-3-749例例3-2多字節(jié)無(wú)符號(hào)數(shù)相加程序多字節(jié)無(wú)符號(hào)數(shù)相加程序ADR1EQU40HADR2EQU50HLEQU3MOVR0,#ADR1MOVR1,#ADR2MOVR2,#LCLRCLOOP1:MOVA,R0ADDCA,R1MOVR0
52、,AINCR0INCR1DJNZR2,LOOP1SAMPLE27.ASM2022-3-750例3-3 多字節(jié)無(wú)符號(hào)數(shù)相減程序 MOV R0,#ADR1 ;823456H-789ABCH MOV R1,#ADR2 MOV R2,#L CLR C LOOP2: MOV A,R0 SUBB A,R1 MOV R0,A INC R0 INC R1 DJNZ R2,LOOP2 SAMPLE28.ASM2022-3-751例3-4 將R1、R2、R3、R4中的BCD碼依次相加,要 求各中間計(jì)算的和都仍為BCD碼,且放回片內(nèi)RAM MOV R0,#30H MOV A,R1 ADD A,R2 ACALL SU
53、B ;R1+R2 ADD A,R3 ACALL SUB ;R1+R2+R3 ADD A,R4 ACALL SUB ;R1+R2+R3+R4 JMP ST0SUB: DA A MOV R0,A INC R0 RETSAMLE29.ASM2022-3-752例3-8 統(tǒng)計(jì)P1口輸入的數(shù)串中正數(shù)、負(fù)數(shù)、零的個(gè)數(shù)ST0: CLR A MOV R0,A MOV R1,A MOV R2,AENTER: MOV A,P1 JZ ZERO JB P1.7,NEG INC R0 ;正數(shù)個(gè)數(shù)R0加1 SJMP ENTERZERO: INC R2 ;零個(gè)數(shù)R2加1 SJMP ENTERNEG: INC R1 ;負(fù)數(shù)
54、個(gè)數(shù)R1加1 SJMP ENTERSAMPLE30.ASM2022-3-753數(shù)制轉(zhuǎn)換程序數(shù)制轉(zhuǎn)換程序例例3-11 3-11 將某十六進(jìn)制數(shù)轉(zhuǎn)換為將某十六進(jìn)制數(shù)轉(zhuǎn)換為ASCIIASCII碼碼 MOV R2,A ADD A,#0F6H MOV A,R2 JNC AD30;LP2: CJNE A,#9,JP2; SJMP AD30;JP2: JC AD30 ADD A,#07HAD30: ADD A,#30HSAMPLE31.ASM2022-3-754算術(shù)邏輯處理程序算術(shù)邏輯處理程序例例3-12 3-12 將一串十六進(jìn)制數(shù)轉(zhuǎn)換為將一串十六進(jìn)制數(shù)轉(zhuǎn)換為ASCIIASCII碼碼 MOV R0,#ADR
55、1 MOV R1,#ADR2 MOV R2,#05HLOOP3: MOV A,R0 ANL A,#0FH ACALL SUB1 MOV A,R0 ANL A,#0F0H SWAP A ACALL SUB1 INC R0 DJNZ R2,LOOP3 SAMPLE32.ASMSUB1: ;MOV R3,A ;ADD A,#0F6H ;MOV A,R3 ;JNC AD30A CJNE A,#9,JP3 SJMP AD30AJP3: JC AD30A ADD A,#07HAD30A: ADD A,#30HASC1: MOV R1,A INC R1 RET2022-3-755例3-13 將某BCD碼(十
56、六進(jìn)制數(shù))轉(zhuǎn)換為ASCII碼LP4: CALL TRANS1 CALL TRANS2 PUSH B CALL TRANS3 POP A JMP LP4TRANS1: MOV DPTR,#TAB MOVC A,A+DPTR RETTRANS2: INC A MOVC A,A+PC RET SAMPLE33.ASMTAB: DB 30H,31H,32H,33H DB 34H,35H,36H,37H DB 38H,39H,41H,42H DB 43H,44H,45H,46HTRANS3: MOV R0,SP DEC R0 DEC R0 XCH A,R0 MOV DPTR,#TAB MOVC A,A+
57、DPTR XCH A,R0 RET2022-3-756 例3-14 可多達(dá)128路分支出口的轉(zhuǎn)移程序 MOV DPTR,#JPTAB MOV A,R2 RL A JMP A+DPTRJPTAB: AJMP ADDR00 AJMP ADDR01 AJMP ADDR02; .; .; . AJMP ADDR7F SAMPLE34.ASMADDR00: MOV DPTR,#LJPTAB MOV A,R2 MOV B,#3 MUL AB XCH A,B ADD A,DPH MOV DPH,A XCH A,B JMP A+DPTRLJPTAB: LJMP LADR00 LJMP LADR01 LJMP LADR02; . LJMP LADR7F2022-3-757例3-18 利用單片機(jī)內(nèi)部定時(shí)器/計(jì)數(shù)器,達(dá)到1min延時(shí)程序
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省南京市、鹽城市2025屆高三下學(xué)期3月一模試題 物理 含解析
- 高考數(shù)學(xué)個(gè)體化學(xué)習(xí)策略與試題及答案
- 行政法學(xué)對(duì)經(jīng)濟(jì)社會(huì)影響試題及答案
- 計(jì)算機(jī)科學(xué)核心能力考題及答案
- 網(wǎng)絡(luò)管理員個(gè)人技能試題及答案總結(jié)
- 行政法學(xué)與技術(shù)進(jìn)步的關(guān)系試題及答案
- 火災(zāi)應(yīng)急預(yù)案?jìng)€(gè)人職責(zé)(3篇)
- 法學(xué)概論社會(huì)變遷對(duì)法制建設(shè)的影響試題及答案
- 教育機(jī)構(gòu)防火災(zāi)應(yīng)急預(yù)案(3篇)
- 網(wǎng)絡(luò)性能監(jiān)控技術(shù)試題及答案
- 2024年第三屆浙江技能大賽(農(nóng)機(jī)修理賽項(xiàng))理論考試題庫(kù)(含答案)
- 畬族非遺文化課程設(shè)計(jì)
- 《煤礦防治水細(xì)則》全文
- 發(fā)動(dòng)機(jī)大修免責(zé)協(xié)議書(shū)范本范本
- 文化強(qiáng)國(guó)課件
- 醫(yī)學(xué)教材 瓣環(huán)起源的室性心律失常的心電圖特征b
- 農(nóng)作物植保員技能競(jìng)賽理論考試題庫(kù)500題(含答案)
- 《公共政策學(xué)(第二版)》 課件第8章 政策創(chuàng)新與擴(kuò)散
- 課件6:環(huán)控電控柜主要部件-馬達(dá)保護(hù)器
- 小學(xué)生偏旁部首所表示的意義
- 七年級(jí)歷史上冊(cè) 第一單元 單元測(cè)試卷(人教版 2024年秋)
評(píng)論
0/150
提交評(píng)論