版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、8051單片機的指令系統(tǒng)1指令和助記符 指令本身是一組二進制數(shù)代碼,為了便于記憶,將這些代碼用具有一定含義的指令助記符來表示,助記符一般采用英文單詞的縮寫 。例: 指令代碼 助記符 功能 740A MOV A,#0AH 將十六進制數(shù)0AH放 入累加器A中 2指令的字節(jié)數(shù) 一條指令由操作碼和操作數(shù)組成。操作碼指明執(zhí)行什么操作,例如數(shù)的傳送、加法、減法等。操作數(shù)則表示這條指令所完成的操作對象,即是對誰進行操作。操作數(shù)可以是一個數(shù),或者是一個數(shù)所在的內(nèi)存地址。指令由指令字節(jié)組成,不同的指令,指令的字節(jié)數(shù)不相同。有單字節(jié)指令、雙字節(jié)指令和三字節(jié)指令。 3尋址方式1 寄存器尋址2 直接尋址3 立即尋址4
2、 寄存器間接尋址5 變址尋址6 相對尋址7 位尋址4寄存器尋址 以通用寄存器的內(nèi)容為操作數(shù)的尋址方式。通用寄存器為A、B 、DPTR以及R0R7 。 例: CLR A ;A0 INC DPTR ;DPTRDPTR+1 ADDR5,# 20H ;R5#20H+R55直接尋址 指令中直接給出操作數(shù)地址的尋址方式,能進行直接尋址的存儲空間有SFR寄存器和內(nèi)部數(shù)據(jù)RAM。 例: MOVPSW,# 20H ;PSW#20H MOVA,30H ;A(30H)6立即尋址 指令中直接給出操作數(shù)的尋址方式。立即操作數(shù)用前面加有#號的8位或16位數(shù)來表示。 例: MOVA,# 60H ;A#60H MOVDPTR
3、,# 3400H;DPTR#3400H MOV30H,# 40H;30H單元#40H 7寄存器間接尋址 以寄存器中內(nèi)容為地址,以該地址中內(nèi)容為操作數(shù)的尋址方式。間接尋址的存儲器空間包括內(nèi)部數(shù)據(jù)RAM和外部數(shù)據(jù)RAM。能用于寄存器間接尋址的寄存器有R0,R1和DPTR。在寄存器名稱前面加一個符號來表示寄存器間接尋址。 例: MOV A , R0 ;A (R0) MOVX DPTR,A ;外部RAM(DPTR)A8 片內(nèi)RAM30HR034HA30H34H MOV A ,R0 操作示意圖9片外RAM2000HDPTR30HA2000H30HMOVX DPTR,A 操作示意圖105 變址尋址 變址尋
4、址是以某個寄存器的內(nèi)容為基本地址,然后在這個基址上加以地址的偏移量,才是真正的操作數(shù)地址。 例: MOVC A, A+DPTR ;A(A+DPTR) MOVC A, A+PC ;A(A+PC) 11MOVC A, A+DPTR 操作示意圖程序存儲器02F1HDPTRA0302H1EH11HA執(zhí)行前1EHA執(zhí)行后+12相對尋址 以當前程序計數(shù)器PC的內(nèi)容為基礎(chǔ),加上指令給出的一字節(jié)補碼數(shù)(偏移量)形成新的PC值的尋址方式。相對尋址用于修改PC值,主要用于實現(xiàn)程序的分支轉(zhuǎn)移。 例: SJMP 08H ;PCPC+2+08H 13SJMP 08H 操作示意圖程序存儲器SJMP200AH08H2000
5、H+208H執(zhí)行前PC2000H執(zhí)行后PC147 位尋址 位尋址只能對有位地址的單元作位尋址操作。位尋址其實是一種直接尋址方式,不過其地址是位地址。 例: SETB 10H ;將10H位置1 MOV 32H,C ;32H進位位C CLR PSW.4 ;將RS1位清015指令分類說明1 數(shù)據(jù)傳送類指令2 算術(shù)運算類指令3 邏輯運算與循環(huán)類指令4 程序轉(zhuǎn)移類指令5 子程序調(diào)用及返回指令6 位操作指令16數(shù)據(jù)傳送類指令 助記符 說明 MOV、MOVX、MOVC 傳送操作 XCH、XCHD、SWAP 交換操作 PUSH、POP 堆棧操作 源操作數(shù)尋址方式: 立即尋址、直接尋址、寄存器尋址、 寄存器間接
6、尋址、變址尋址。 目的操作數(shù)尋址方式: 直接尋址、寄存器尋址、寄存器間接尋址 除了目的操作數(shù)為ACC的指令影響奇偶標志P外,一般不影 響標志位。17直接地址direct累加器A直接地址direct間接地址Ri寄存器Rn立即數(shù)#data寄存器DPTR8051單片機片內(nèi)數(shù)據(jù)傳送圖181 以累加器為目的操作數(shù)的指令(4條) MOV A,Rn MOV A,directMOV A,RiMOV A,#data 這組指令功能將源操作數(shù)指定內(nèi)容送到A中。 2 以寄存器Rn為目的操作數(shù)的指令 (3條) MOV Rn,A MOV Rn,direct MOV Rn,#data 這組指令功能是把源操作數(shù)指定的內(nèi)容送入
7、當前工作寄存 器,源操作數(shù)不變。19 3 以直接地址為目的操作數(shù)的指令(5條)MOV direct,AMOV direct,RnMOV direct1,direct2MOV direct,RiMOV direct,#data 這組指令功能是把源操作數(shù)指定的內(nèi)容送入由直接地址指出的片內(nèi)存儲單元。例: MOV 20H,AMOV 20H,R1MOV 20H,30HMOV 20H,R1MOV 0A0H,#34HMOV P2,#34H204 以間接地址為目的操作數(shù)的指令(3條)MOV Ri,A MOV Ri,directMOV Ri,#data 功能:把源操作數(shù)指定的內(nèi)容送入以R0或R1中內(nèi)容為 地址的
8、片內(nèi)存儲單元。例:MOV R0,AMOV R1,20HMOV R0,#34H215 十六位數(shù)的傳遞指令(1條)MOV DPTR,#data168051是8位機,這是唯一的一條16位立即數(shù)傳遞指令。功能:將一個16位的立即數(shù)送入DPTR中去。其中高8位 送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H執(zhí)行完了之后DPH中的值為12H,DPL中的值為34H。如果我們分別向DPH,DPL送數(shù),則結(jié)果也一樣。 如下面兩條指令: MOV DPH,#35H MOV DPL,#12H。 相當于執(zhí)行了 MOV DPTR,#3512H。226 累加器A與片外RAM之間的數(shù)據(jù)傳遞類指令(4條)
9、MOVX A,Ri MOVX Ri,A MOVX A,DPTR MOVX DPTR,A說明: 1.在8051中,與外部RAM存儲器打交道的只可以是累加器A 。所有需要送入外部RAM的數(shù)據(jù)必需要通過A送去,而所有要讀入的外部RAM中的數(shù)據(jù)也必需通過A讀入。 在此我們可以看出內(nèi)外部RAM的區(qū)別了,內(nèi)部RAM間可以直接進行數(shù)據(jù)的傳遞,而外部則不行。 比如,要將外部RAM中某一單元(設(shè)為0100H單元的數(shù)據(jù))送入另一個單元(設(shè)為0200H單元),也必須先將0100H單元中的內(nèi)容讀入A,然后再送到0200H單元中去。23 2.要讀或?qū)懲獠縍AM,必須要知道RAM的地址,采用DPTR時,地址被直接放在DP
10、TR中的。采用Ri(R0或R1)時,由于Ri只是8位的寄存器,所以只提供低8位地址。高8位地址由P2口來提供。 3.使用時應先將要讀或?qū)懙牡刂匪腿隓PTR或Ri中,然后再用讀寫命令。 例:將外部RAM中100H單元中的內(nèi)容送入外部RAM中200H單元中。MOV DPTR,#0100HMOVX A,DPTRMOV DPTR,#0200HMOVX DPTR,A247 讀程序存儲器指令(2條) MOVC A,A+DPTR MOVC A,A+PC 本組指令是將ROM中的數(shù)送入A中。本組指令也被稱為查表指 令,常用此指令來查一個已做好在ROM中的表格說明:查找到的結(jié)果被放在A中,因此,本條指令執(zhí)行前后,
11、A 中的值不一定相同。例:有一個數(shù)在R0中,要求用查表的方法確定它的平方值(此 數(shù)的取值范圍是0-5)MOV DPTR,#100H MOV A,R0 MOVC A,A+DPTR ORG 0100HDB 0,1,4,9,16,2525 8 堆棧操作(2條)PUSH directPOP direct 第一條為壓入指令,將direct中的內(nèi)容送入堆棧中,第二條為 彈出指令,將堆棧中的內(nèi)容送回到direct中。例: MOV SP,#10H MOV 40H,#50H PUSH 40H POP 30H 執(zhí)行第一條PUSH 40H指令是這樣的:將SP中的值加1,變?yōu)?1H,然后將40H中的值送到11H單元中
12、,因此執(zhí)行完本條指令后,內(nèi)存11H單元的值是50H,同樣,執(zhí)行POP 30H時,是將11H中的值送入到30H單元中,即執(zhí)行完本條指令后,30H單元中的值變?yōu)?0H。26 9 交換指令(5條)XCH A,RnXCH A, directXCH A, RiXCHD A, RiSWAP A例: 已知A中的內(nèi)容為34HMOV R6, #29HXCH A, R6SWAP AXCH A, R6 XCHD A, R027算術(shù)運算類指令 主要用于8位無符號數(shù)運算;也可用于帶符號數(shù)運算。包括:加、減、乘、除、加1、減1運算指令,指令操作將影響PSW中有關(guān)狀態(tài)位。 28 1 加法指令ADD A,#data ADD
13、A,direct ADD A,Rn ADD A,Ri 用途:將A中的值與源操作數(shù)所指內(nèi)容相加,最終結(jié)果 存在A中。(1)不帶進位位的加法指令(4條)29例1:ADD A,#47HADD A,34HADD A,R7ADD A,R0例2:MOV A,#0AEH ;-82ADD A,#81H ;-127則執(zhí)行完本條指令后,A中的值為2FHPSW中狀態(tài)位 C=1,AC=0,OV=1,P=1對無符號數(shù):結(jié)果為12FH;對帶符號數(shù):OV=1,有錯。30(2)帶進位位的加法指令(4條)ADDC A,Rn; ARnCYAADDC A,direct; A(direct )CYAADDC A,Ri; A(Ri)C
14、YAADDC A,#data; AdataCYA用途:將A中的值和其后面的值以及進位位C中的值相加, 最終結(jié)果存在A,常用于多字節(jié)數(shù)運算中。31例: 先做67H+A0H=107H,而107H顯然超過了0FFH,因此最終保存在A中的是07H,而1則到了PSW中的CY位了。換言之,CY就相當于是100H。 然后再做10H + 30H + CY,結(jié)果是41H,所以最終的結(jié)果是4107H。1067H+30A0H0001 0000 0110 0111 0011 0000 1010 0000 0100 0001 0000 0111 1067H30A0H4107H32又例: 先做67H+20H=87H,沒有
15、超過0FFH,因此最終保存在A中的是87H,而PSW中的CY=0。 然后再做10H + 30H + CY,結(jié)果是40H,所以最終的結(jié)果是4087H。1067H+3020H0001 0000 0110 0111 0011 0000 0010 0000 0100 0000 1000 0111 1067H3020H4087H33(3) 加1指令(5條)INC A;A+1A,影響P標志INC Rn;Rn+1RnINC direct;(direct)+1(direct)INC Ri;(Rn)+1(Rn)INC DPTR;DPTR+1DPTR功能很簡單,就是將后面目標中的值加1。例:A=12H,R0=33
16、H,(21H)=32H, (34H)=22H,DPTR=1234H。連續(xù)執(zhí)行下面的指令: INC A INC R0 INC 21H INC R0 INC DPTR; A=13H; R0=34H;(21H)=33H;(34H)=23H; DPTR=1235H34DA A在進行BCD碼加法運算時,跟在ADD和ADDC指令之后,用來對BCD碼加法運算結(jié)果進行自動修正。例:A=00010101(代表十進制數(shù)15) ADD A,#8(4) 十進制調(diào)整指令(1條); A=1DH,按二進制規(guī)律加; A=23H,按十進制規(guī)律加DA A352 減法指令(8條)SUBB A,Rn ; ARnCYASUBB A,d
17、irect ; A(direct )CYASUBB A,Ri ; A(Ri)CYASUBB A,#data; AdataCYA將A中的值減去源操作數(shù)所指內(nèi)容以及進位位C中的值,最終結(jié)果存在A中。說明:沒有不帶借位的減法指令,如果需要做不帶位的減法指令(在做第一次相減時),只要將CY清零即可。(1) 帶借位的減法指令(4條)36(2) 減1指令(4條)DEC A ;A-1A,DEC Rn;Rn-1RnDEC direct ;(direct)-1(direct)DEC Ri;(Rn)-1(Rn) 與加1指令類似。37 3 乘法指令(1條)MUL AB ;ABBA此指令的功能是將A和B中的兩個8位無
18、符號數(shù)相乘,結(jié)果將為16無符號數(shù)。其中高8位放在B中,低8位放在A中。在乘積大于FFH時,0V置1,否則OV為0;而CY總是0。例: A=4EH,B=5DH,執(zhí)行MUL AB指令后,乘積是1C56H,所以在B中放的是1CH,而A中放的則是56H。38 4 除法指令(1條)DIV AB;AB的商A,余數(shù)B此指令的功能是將A中的8位無符號數(shù)除B中的8位無符號數(shù),商放在A中,余數(shù)放在B中。如果在做除法前B中的值是00H,也就是除數(shù)為0,那么0V=1。例:A=11H,B=04H,執(zhí)行DIV AB指令后,結(jié)果為:A=04H,B=1。39邏輯運算與循環(huán)類指令主要用于對2個操作數(shù)按位進行邏輯操作,結(jié)果送到A
19、或直接尋址單元。 主要操作 與、或、異或、移位、取反、清零等。 對標志位的影響 除了目的操作數(shù)為ACC的指令影響奇偶標志P外,一般不影響標志位。401 邏輯或指令(6條)ORL A,Rn ;ARnAORL A,direct ;A(direct)AORL A,Ri ;A(Ri)AORL A,#data ;AdataAORL direct,A ;(direct)A(direct)ORL direct,#data ;(direct)data(direct)影響P標志例:71H和56H相或:01110001 (71H) ) 01010110 (56H) 01110111 即77H后兩條指令,若直接地址
20、為I/O端口,則為“讀改寫”操作。412 邏輯與指令 (6條)ANL A,Rn ;ARnAANL A,direct ;A(direct)AANL A,Ri ;A(Ri)AANL A,#data ;AdataAANL direct,A ;(direct)A(direct)ANL direct,#data ;(direct)data(direct)影響P標志例:71H和56H相與:01110001 (71H) )01010110 (56H) 01010000 即50H后兩條指令,若直接地址為I/O端口,則為“讀改寫”操作。42例:71H和56H相異或: 01110001 (71H) ) 01010
21、110 (56H) 3 邏輯異或指令(6條)XRL A,Rn ;A RnAXRL A,direct ;A (direct)AXRL A,Ri ;A (Ri)AXRL A,#data ;A dataAXRL direct,A ;(direct) A(direct)XRL direct,#data ;(direct) data(direct)影響P標志00100111 即27H后兩條指令,若直接地址為I/O端口,則為“讀改寫”操作。43 4 取反與清0指令(2條)取反:CPL A ;/AA例:若A=5CH, 執(zhí)行CPL A 結(jié)果:A=A3H清0:CLR A ;0A445 循環(huán)移位指令(4條)RL
22、ARR ARLC ARRC AA.7 A.0A.7 A.0A.7 A.0CYCYA.7 A.0后兩條指令,影響P和CY標志。45例:若A=5CH,CY=1,執(zhí)行RLC A后, 對RLC、RRC指令,在CY=0時RLC相當于乘以2RRC相當于除以2結(jié)果:A=B9H,CY=0,P=10101 110011011 1001046綜合舉例:ANL A,#0FH ;屏蔽A的高4位SWAP AANL P1,#0FH ;清P1口高4位ORL P1,A ;P1口高4位輸出A的低4位; 把累加器A中的低4位狀態(tài),通過P1口的高4位輸出, P1口的低4位狀態(tài)不變。47程序轉(zhuǎn)移類指令此類指令一般不影響PSW。包括以
23、下類型:無條件轉(zhuǎn)移和條件轉(zhuǎn)移相對轉(zhuǎn)移和絕對轉(zhuǎn)移長轉(zhuǎn)移和短轉(zhuǎn)移調(diào)用與返回指令48 無條件轉(zhuǎn)移類指令(4條) 短轉(zhuǎn)移類指令:AJMP addr11 長轉(zhuǎn)移類指令:LJMP addr16 相對轉(zhuǎn)移指令:SJMP rel 間接轉(zhuǎn)移指令:JMP A+DPTR(1)上面的前三條指令,統(tǒng)統(tǒng)理解成:PC值改變,即跳轉(zhuǎn)到一個標號處。 那么他們的區(qū)別何在呢?49跳轉(zhuǎn)的范圍不同。 短轉(zhuǎn)移類指令:AJMP addr11 長轉(zhuǎn)移類指令:LJMP addr16 相對轉(zhuǎn)移指令:SJMP rel轉(zhuǎn)移范圍:2KB64KB-128+127指令構(gòu)成不同。 AJMP、LJMP后跟的是絕對地址, 而SJMP后跟的是相對地址。 指令長度
24、不同 原則上,所有用SJMP或AJMP的地方都可以用 LJMP來替代。50散轉(zhuǎn)指令:JMP A+DPTR 這條指令的用途也是跳轉(zhuǎn),轉(zhuǎn)到什么地方去呢?這可不能由標號簡單地決定了。 轉(zhuǎn)移地址由A+DPTR形成,并直接送入PC。指令對A、DPTR和標志位均無影響。 本指令可代替眾多的判別跳轉(zhuǎn)指令,又稱為散轉(zhuǎn)指令,多用于多分支程序結(jié)構(gòu)中。(2)第四條指令與前三條指令相比有所不同51 條件轉(zhuǎn)移指令(8條)條件轉(zhuǎn)移指令是指在滿足一定條件時進行相對轉(zhuǎn)移,否則程序繼續(xù)執(zhí)行本指令的下一條指令。一、判A內(nèi)容是否為0轉(zhuǎn)移指令(2條) JZ rel ;如果A=0,則轉(zhuǎn)移,否則順序執(zhí)行。 JNZ rel ;如果A0,就
25、轉(zhuǎn)移。轉(zhuǎn)移到相對于當前PC值的8位移量的地址去。即: 新的PC值=當前PC+偏移量rel在編寫匯編語言源程序時,可以直接寫成: JZ 標號 ;即轉(zhuǎn)移到標號處。52二、比較不等轉(zhuǎn)移指令(4條)CJNE A,#data,rel CJNE A,direct,relCJNE Rn,#data,relCJNE Ri,#data,rel此類指令的功能是將兩個操作數(shù)比較,如果兩者相等,就順序執(zhí)行,如果不相等,就轉(zhuǎn)移。同樣地,使用時,可以將rel理解成標號,即:CJNE A,#data,標號CJNE A,direct,標號CJNE Rn,#data,標號CJNE Ri,#data,標號53利用這些指令,可以判
26、斷兩數(shù)是否相等。但有時還想得知兩數(shù)比較之后哪個大,哪個小,本條指令也具有這樣的功能:如果兩數(shù)不相等,則CPU還會用CY(進位位)來反映哪個數(shù)大,哪個數(shù)小。如果前面的數(shù)大,則CY=0,否則CY=1。因此在程序轉(zhuǎn)移后再次利用CY就可判斷出哪個數(shù)大,哪個數(shù)小了。54三、減1不為0轉(zhuǎn)移指令(2條)DJNZ Rn,relDJNZ direct,relDJNZ指令的執(zhí)行過程是這樣的:它將第一個參數(shù)中的值減1,然后看這個值是否等于0,如果等于0,就往下執(zhí)行,如果不等于0,就轉(zhuǎn)移到第二個參數(shù)所指定的地方去。例: LOOP: DJNZ 10H,LOOP 55例: MOV 23H,#0AH CLR ALOOP:
27、ADD A,23H DJNZ 23H,LOOP SJMP $上述程序段的執(zhí)行過程是:將23H單元中的數(shù)連續(xù)相加,存至A中,每加一次, 23H單元中的數(shù)值減1,直至減到0,共加(23H)次。56 子程序調(diào)用與返回指令一、調(diào)用指令(2條) LCALL addr16 ;長調(diào)用指令(3字節(jié)) ACALL addr11 ;短調(diào)用指令(2字節(jié))上面兩條指令都是在主程序中調(diào)用子程序,兩者的區(qū)別:對短調(diào)用指令,被調(diào)用子程序入口地址必須與調(diào)用指令下一條指令的第一字節(jié)在相同的2KB存儲區(qū)之內(nèi)。使用時可以用標號表示子程序首地址57二、返回指令 (2條)子程序執(zhí)行完后必須回到主程序,如何返回呢?只要執(zhí)行一條返回指令就
28、可以了。RET;子程序返回指令RETI;中斷子程序返回指令兩者不能互換使用。58空操作指令(1條) NOP空操作,就是什么事也不干,停一個周期,一般用作短時間的延時。59位操作指令8051單片機的硬件結(jié)構(gòu)中,有一個位處理器(又稱布爾處理器),它有一套位變量處理的指令集,包括位變量傳送、邏輯運算、控制程序轉(zhuǎn)移等。在8051中,有一部份RAM和一部份SFR是具有位尋址功能的。位操作區(qū):內(nèi)部RAM的20H-2FH這16個字節(jié)單元,即128個位單元(位地址空間位007FH);可以位尋址的特殊功能寄存器。60 以PSW中位4( RS1 )為例。直接(位)地址方式:如 D4H;點操作符號方式:如 PSW.
29、4,D0H.4;位名稱方式:如 RS1;用戶定義名方式:如用偽指令 bitSUB.REG bit RS1定義后,可用SUB.REG代替RS1。位地址表達方式61 位傳送指令(2條) MOV C,bit;bit CMOV bit,C;C bit這組指令的功能是實現(xiàn)位累加器(CY)和其它位地址之間的數(shù)據(jù)傳遞。例:MOV C,P1.0;將P1.0的狀態(tài)送給C。 MOV P1.0,C ;將C中的狀態(tài)送到P1.0 ;引腳上去。62位清0和置位(4條) 位清0指令 CLR C ;使CY=0 CLR bit ;使指令的位地址等于0。 例:CLR P1.0 ;即使P1.0變?yōu)? 位置1指令 SETB C ;使
30、CY=1 SETB bit ;使指定的位地址等于1。 例:SETB P1.0 ;使P.0變?yōu)?63 位邏輯運算指令 (6條) 位與指令 ANL C,bit ;Cy與指定位的值相與,結(jié)果送CyANL C,/bit ;先將指定的位地址中的值取出后取反,再和Cy相與,結(jié)果送回Cy。但注意:指定的位地址中的值本身并不發(fā)生變化。例:ANL C,/P1.064位取反指令 CPL C ;使Cy值取反。CPL bit ;使指定的位的值取反。例:CPL P1.0位或指令 ORL C,bitORL C,/bit65 位條件轉(zhuǎn)移指令(5條) 判Cy轉(zhuǎn)移指令 JC relJNC rel 第一條指令的功能是如果Cy=1
31、就轉(zhuǎn)移,否則就順序執(zhí)行。 第二條指令則和第一條指令相反,即如果Cy=0就轉(zhuǎn)移,否則就順序執(zhí)行。 66判位變量轉(zhuǎn)移指令 JB bit,relJNB bit,rel JBC bit,rel第一條指令:如果指定的(bit)=1,則轉(zhuǎn)移,否則順序執(zhí)行,第二條指令功能相反。第三條指令是如果指定的(bit)=1,則轉(zhuǎn)移,并把該位清0,否則順序執(zhí)行。67 匯編語言程序設(shè)計68匯編語言格式與偽指令匯編語言源程序由以下兩種指令構(gòu)成匯編語句(指令語句)偽指令(指示性語句)匯編語句的格式: 標號:操作碼操作數(shù);注釋3. 偽指令:控制匯編用的特殊指令,這些指令不屬于指令系統(tǒng),不產(chǎn)生機器代碼。 69常用的偽指令 ORG
32、 定位目的程序的起始地址。 格式:ORG 表達式 表達式必須為16位地址值。如:ORG 0000H END 匯編語言程序結(jié)束偽指令。 一定放在程序末尾!70常用的偽指令 EQU 賦值偽指令。 格式: 字符名稱 EQU 數(shù)值或匯編符號 例:AAEQU30HK1EQU40HMOV A,AA; (30H)AMOV A,K1;(40H)A71常用的偽指令DB 從指定單元開始定義(存儲)若干個字節(jié)的數(shù)據(jù)或ASCII碼字符,常用于定義數(shù)據(jù)常數(shù)表。格式:DB 字節(jié)常數(shù) 或 ASCII字符例:ORG 1000HDB34H,0DEH,A,BDB0AH,0BH,2072常用的偽指令DW 從指定單元開始定義(存儲)
33、若干個字的數(shù)據(jù) 或ASCII碼字符。 格式:DW字常數(shù)或ASCII字符 例: ORG 2000HDW1234H,BDW0AH,2073常用的偽指令 BIT 位地址符號指令。 把位地址賦于規(guī)定的字符名稱。 格式:字符名稱BIT位地址例:ABCBITP1.1QQBITP3.274匯編語言程序設(shè)計應用 在進行應用匯編程序設(shè)計時,首先要確定算法,算法的優(yōu)劣很大程度上決定了程序的效率,另外還要盡可能畫出程序框圖,以便于分析程序流程。75定點數(shù)運算子程序定點數(shù):小數(shù)點固定的數(shù)。 可以把小數(shù)點固定在數(shù)值的最高位之前, 對于有符號的數(shù),小數(shù)點應在符號位與最高數(shù)值位之間,即: 符號位 數(shù)值部分 也可以把小數(shù)點固
34、定在最低數(shù)值位后面,即: 符號位 數(shù)值部分76定點數(shù)表示方式(1)原碼表示法 符號位為0表示正數(shù),符號位為1表示負數(shù) 如:二進制數(shù)00110100表示十進制數(shù)+52二進制數(shù)10110100表示十進制數(shù)-52 (2)補碼表示法正數(shù)的補碼表示與原碼相同, 即最高位為0, 其余位為數(shù)值位。負數(shù)用補碼表示時, 最高位為1, 數(shù)值位要按位取反后再在最低位加1,才是該負數(shù)的數(shù)值。 例如:十進制數(shù)+51的二進制補碼為00110011十進制數(shù) -51的二進制補碼為11001101 77例: 雙字節(jié)數(shù)取補子程序。 將(R4R5)中的雙字節(jié)數(shù)取補,結(jié)果送R4R5。 CMPT:MOV A,R5 CPL A ADD
35、A,#1 MOV R5,A MOV A,R4 CPL A ADDC A,#0 MOV R4,A RET78例: 雙字節(jié)原碼數(shù)左移一位子程序。 將(R2R3)左移一位,結(jié)果送R2R3,不改變符號位, 不考慮溢出。 DRL1:MOV A,R3CLR CRLC AMOV R3,AMOV A,R2RLC AMOV ACC.7,C ;恢復符號位MOV R2,ARET79例: 雙字節(jié)原碼右移一位子程序。 將(R2R3)右移一位,結(jié)果送R2R3,不改變符號位。 DRR1:MOV A,R2MOV C,ACC.7 ;保護符號位CLR ACC.7 ;移入0RRC AMOV R2,AMOV A,R3RRC AMOV
36、 R3,ARET80例: 雙字節(jié)補碼右移一位子程序。 將(R2R3)右移一位,結(jié)果送R2R3,不改變符號位。CRR1:MOV A,R2MOV C,ACC.7 ;保護符號位RRC A ;移入符號位MOV R2 ,AMOV A,R3RRC AMOV R3,ARET81例:雙字節(jié)無符號數(shù)加法子程序。 將(R2R3)和(R6R7)兩個無符號數(shù)相加,結(jié)果送R4R5。NADD: MOV A,R3ADD A,R7MOV R5,AMOV A,R2ADDC A,R6MOV R4,ARET82例:雙字節(jié)無符號數(shù)減法子程序。 將(R2R3)和(R6R7)兩個雙字節(jié)數(shù)相減,結(jié)果送R4R5。NSUB1:MOV A,R3CLR CSUBB A,R7MOV R5,AMOV A,R2SUBB A,R6MOV R4,ARET83例:雙字節(jié)原碼加減運算子程序。 (R2R3)和(R6R7)為兩個原碼表示的數(shù),最高位為符號位,求(R2R3)(R6R7)結(jié)果送R4R5。程序中DADD為原碼加法子程序入口,DSUB為原碼減法子程序入口。出口時CY
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025園林綠化合同
- 2025建設(shè)工程施工合同(VIII)
- 2025企業(yè)代培訓合同范文
- 2025合同模板健身俱樂部會員入會協(xié)議 范本
- 沙盤模型制作合同
- 醫(yī)療科技在小兒發(fā)熱治療中的應用
- 課題申報參考:馬克思隱喻敘事的唯物史觀原理研究
- 課題申報參考:禮俗互動視域下明清江南婚嫁刺繡裝飾研究
- 課題申報參考:科學教育教學體系研究
- 綠色能源在校園電力供應中的應用與展望
- 2024年蘇州工業(yè)園區(qū)服務外包職業(yè)學院高職單招職業(yè)適應性測試歷年參考題庫含答案解析
- 人教版初中語文2022-2024年三年中考真題匯編-學生版-專題08 古詩詞名篇名句默寫
- 2024-2025學年人教版(2024)七年級(上)數(shù)學寒假作業(yè)(十二)
- 山西粵電能源有限公司招聘筆試沖刺題2025
- ESG表現(xiàn)對企業(yè)財務績效的影響研究
- 旅游活動碳排放管理評價指標體系構(gòu)建及實證研究
- 2022年全國職業(yè)院校技能大賽-電氣安裝與維修賽項規(guī)程
- 小學德育養(yǎng)成教育工作分層實施方案
- 2024年湖南高速鐵路職業(yè)技術(shù)學院單招職業(yè)技能測試題庫附答案
- 2024年4月浙江省00015英語二試題及答案含評分參考
- 黑枸杞生物原液應用及產(chǎn)業(yè)化項目可行性研究報告
評論
0/150
提交評論