新編文檔-【大學(xué)課件】單片機(jī)原理與接口技術(shù)-80C51-單片機(jī)指令系統(tǒng)-精品文檔_第1頁(yè)
新編文檔-【大學(xué)課件】單片機(jī)原理與接口技術(shù)-80C51-單片機(jī)指令系統(tǒng)-精品文檔_第2頁(yè)
新編文檔-【大學(xué)課件】單片機(jī)原理與接口技術(shù)-80C51-單片機(jī)指令系統(tǒng)-精品文檔_第3頁(yè)
新編文檔-【大學(xué)課件】單片機(jī)原理與接口技術(shù)-80C51-單片機(jī)指令系統(tǒng)-精品文檔_第4頁(yè)
新編文檔-【大學(xué)課件】單片機(jī)原理與接口技術(shù)-80C51-單片機(jī)指令系統(tǒng)-精品文檔_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第3章 80C51 單片機(jī)指令系統(tǒng)3.1 單片機(jī)指令系統(tǒng)概述3.2 80C51 單片機(jī)指令尋址方式3.3 80C51 單片機(jī)指令分類(lèi)介紹docin/sundae_meng3.1 單片機(jī)指令系統(tǒng)概述指令:規(guī)定計(jì)算機(jī)基本操作的語(yǔ)句或命令。指 令通常有兩個(gè)組成部分:操作碼和操作數(shù)。 操作碼:用于規(guī)定指令進(jìn)行什么操作。 操作數(shù):指令操作的對(duì)象,可以是具體的數(shù)據(jù)、數(shù)據(jù) 的地址或符號(hào)。 例如: MOV A,#20H, 指令系統(tǒng):一個(gè)單片機(jī)所能執(zhí)行的指令集合。 指令系統(tǒng)由單片機(jī)生產(chǎn)廠商定義的, 由CPU 的內(nèi)部結(jié)構(gòu)決定的。不同的單片機(jī),其指令 系統(tǒng)不盡相同。docin/sundae_meng80c51指令中

2、使用的符號(hào)的意義作簡(jiǎn)要說(shuō)明:Rn(n=07):表示當(dāng)前工作寄存器R0R7中的任一個(gè)寄存 器。Ri:可用作間接尋址的寄存器,只能是R0, R1兩個(gè)寄存器, i=0,1。 direct:8位直接地址,在指令中表示直接尋址方式,尋址范圍 256個(gè)單元。 #data:8位立即數(shù)。 #data16:16位立即數(shù)。 addr16:表示16位目的地址,主要用于LCALL和LJMP指令 中。 addr11:表示11位目的地址,主要用于ACALL和AJMP指令 中。3.1 單片機(jī)指令系統(tǒng)概述docin/sundae_meng rel:相對(duì)轉(zhuǎn)移指令中的偏移量,為8位帶符號(hào)補(bǔ)碼。 DPTR:數(shù)據(jù)指針。 bit:內(nèi)部

3、RAM(包括專(zhuān)用寄存器)中的直接尋址位。 A: 累加器 ACC:直接尋址方式的累加器。 B: 寄存器B C : 進(jìn)位標(biāo)志位。也稱(chēng)為累加位。 / : 加在位地址的前面,表示對(duì)該位狀態(tài)取反。 : 間接尋址寄存器的前綴標(biāo)志。 (X):某寄存器或某單元中的內(nèi)容。 (X):由“X”間接尋址單元中的內(nèi)容。 : 箭頭左邊的內(nèi)容被箭頭右邊的內(nèi)容所取代。3.1單片機(jī)指令系統(tǒng)概述docin/sundae_meng3.2 80C51 單片機(jī)指令尋址方式 尋址方式,通常是指某一個(gè)CPU指令系統(tǒng)中規(guī)定的尋找操作數(shù)所在地址的方式,或者說(shuō)通過(guò)什么樣的方式找到操作數(shù)。尋址方式的方便與快捷是衡量CPU性能的一個(gè)重要方面,MCS

4、51單片機(jī)有七種尋址方式。 docin/sundae_meng1. 寄存器尋址方式定義:操作數(shù)在寄存器中,只要指定了寄存器就能得到操作數(shù)。 例: MOV A,R0特點(diǎn):由指令指出某一個(gè)寄存器的內(nèi)容作為操作數(shù)。存 放操作數(shù)的寄存器在指令代碼中不占據(jù)單獨(dú)的一 個(gè)字節(jié),而是嵌入(隱含)到操作碼字節(jié)中。尋址范圍:四組通用寄存器Rn(R0R7)、部分專(zhuān)用寄存器( A, B, DPTR, Cy )。MOV A,Rn; A(Rn) 其中n為07之一,Rn是工作寄存 器。MOV Rn,A ; Rn(A) MOV B,A ; B(A)3.2 80C51 單片機(jī)指令尋址方式docin/sundae_meng2.

5、直接尋址方式定義:指令中操作數(shù)直接以存儲(chǔ)單元地址的形式給出。例如: MOV A , 3AH特點(diǎn):指令中含有操作數(shù)的地址。該地址指出了參與操 作的數(shù)據(jù)所在的字節(jié)單元地址或位地址。計(jì)算機(jī) 執(zhí)行它們時(shí)便可根據(jù)直接地址找到所需要的操作數(shù)。 只能使用8位二進(jìn)制數(shù)表示的地址。尋址范圍:片內(nèi)RAM區(qū)(低128字節(jié))、專(zhuān)用寄存器。3.2 80C51 單片機(jī)指令尋址方式docin/sundae_meng常見(jiàn)形式:MOV A,52H ;把片內(nèi)RAM字節(jié)地址52H單元的內(nèi)容送累加器A中。MOV 52H,A ;把A的內(nèi)容傳送給片內(nèi)RAM的52H單元中。MOV 50H,60H;把片內(nèi)RAM字節(jié)地址60H單元的內(nèi)容送到5

6、0H單元中。MOV IE,#40H ;把立即數(shù)40H送到中斷允許寄存器 IE。IE為專(zhuān)用功能寄存器,其字節(jié)地址為0A8H。 該指令等價(jià)于MOV 0A8H,#40H。INC 60H ;將地址60H單元中的內(nèi)容自加1。3.2 80C51 單片機(jī)指令尋址方式docin/sundae_meng直接尋址方式示意圖 3.2 80C51 單片機(jī)指令尋址方式docin/sundae_meng3. 寄存器間接尋址方式定義:指令給出的寄存器中存放的是操作數(shù)據(jù)的單元地址。 這種尋址方式稱(chēng)為寄存器間接尋址。 如:MOV A, R0特點(diǎn):指令給出的寄存器中存放的是操作數(shù)地址。寄存器間 接尋址是一種二次(間接)尋找操作數(shù)

7、的尋址方式, 寄存器前邊必須加前綴符號(hào)“”。不能用于尋址特殊 功能寄存器SFR。3.2 80C51 單片機(jī)指令尋址方式docin/sundae_meng例如:MOV A, R0例如:MOV DPTR,#3456H ;DPTR3456H MOVX A,DPTR ;A (DPTR) 寄存器間接尋址方式示意圖 3.2 80C51 單片機(jī)指令尋址方式docin/sundae_meng尋址范圍:內(nèi)部RAM低128B(只能使用R0或R1作間址寄存器)外部RAM(使用DPTR作間址寄存器)對(duì)于外部低256單元RAM的訪問(wèn),除可以使用DPTR外,還可以使用R0或R1作間址寄存器。堆棧操作指令(PUSH 和PO

8、P)為 SP作間址寄存器的間址尋址方式。3.2 80C51 單片機(jī)指令尋址方式docin/sundae_meng4. 立即尋址方式定義:將立即參與操作的數(shù)據(jù)直接寫(xiě)在指令中,這種尋址方式稱(chēng)為立即尋址。立即數(shù)只能作為源操作數(shù),不能當(dāng)作目的操作數(shù)。 例如 MOV A , #3AHMOV DPTR, #data16特點(diǎn):指令中直接含有所需的操作數(shù)。該操作數(shù)可以是8位的,也可以是16位的,常常處在指令的第二字節(jié)和第三字節(jié)的位置上。立即數(shù)通常使用#data或#data16表示,在立即數(shù)前面加“#”標(biāo)志,用以和直接尋址中的直接地址(direc或bit)相區(qū)別。 3.2 80C51 單片機(jī)指令尋址方式doci

9、n/sundae_meng例如: MOV A,#52H ;A52H MOV DPTR,#5678H ;DPTR5678H 立即尋址示意圖 3.2 80C51 單片機(jī)指令尋址方式docin/sundae_meng 5. 變址尋址方式 定義:這種尋址方式用于訪問(wèn)程序存儲(chǔ)器中的數(shù)據(jù)表格, 以基址寄存器(DPTR或PC)的內(nèi)容為基本地址,加 上變址寄存器A的內(nèi)容形成16位的地址,訪問(wèn)程序 存儲(chǔ)器中的數(shù)據(jù)表格。這種尋址方式稱(chēng)為基址加變 址寄存器間接尋址,簡(jiǎn)稱(chēng)為變址尋址。 例如:MOVC A, A+DPTR ; A(A)+(DPTR) MOVC A,A + PC JMP DPTR 僅有3條變址尋址指令。3

10、.2 80C51 單片機(jī)指令尋址方式docin/sundae_meng 特點(diǎn):指令操作碼中隱含作為基址寄存器用的DPTR(或PC )和作為變址用的累加器A。在執(zhí)行變址尋址指令時(shí),80c51單片機(jī)先把基地址( DPTR或PC 的內(nèi)容)和地址偏移量(A的內(nèi)容)相加,以形成操作數(shù)地址,再由操作數(shù)地址找到操作數(shù),并完成相應(yīng)的操作。變址尋址方式是單字節(jié)指令。3.2 80C51 單片機(jī)指令尋址方式docin/sundae_meng尋址范圍:只能對(duì)程序存儲(chǔ)器ROM進(jìn)行尋址, 主要用于查表性質(zhì)的訪問(wèn)。3.2 80C51 單片機(jī)指令尋址方式docin/sundae_meng 6. 位尋址方式 MCS-51單片機(jī)

11、中設(shè)有獨(dú)立的位處理器。位操作指令能對(duì)內(nèi)部RAM中的位尋址區(qū)(20H2FH)和某些有位地址的特殊功能寄存器進(jìn)行位操作。定義:指令中給出的操作數(shù)是一個(gè)可單獨(dú)尋址的位地址,這 種尋址方式稱(chēng)為位尋址方式。 MOV C,3AH特點(diǎn):位尋址是直接尋址方式的一種,其特點(diǎn)是對(duì)8位二進(jìn) 制數(shù)中的某一位的地址進(jìn)行操作。例如:SETB TR0 ;TR01 CLR 00H ;(00H)0 MOV C,57H ;將57H位地址的內(nèi)容傳送到C中 ANL C,5FH ;將5FH位與進(jìn)位位C相與,結(jié)果在C中 3.2 80C51 單片機(jī)指令尋址方式docin/sundae_meng尋址范圍:內(nèi)部RAM中的位尋址區(qū) 單元地址為2

12、0H2FH,共16個(gè)單元128位,位地址是00H 7FH。 兩種表示方法:一種是位地址;另一種是單元地址加位。專(zhuān)用寄存器的可尋址位(4種表示方法) 直接使用位地址。例如PSW寄存器位5地址為0D5H。 位名稱(chēng)表示方法。例如PSW寄存器位5是F0標(biāo)志位,則可使 用F0表示該位。 單元地址加位數(shù)的表示方法。例如PSW寄存器位5,表示為 0D0H.5。 專(zhuān)用寄存器符號(hào)加位數(shù)的表示方法。例如PSW寄存器的位5, 表示為PSW.5 3.2 80C51 單片機(jī)指令尋址方式docin/sundae_meng7. 相對(duì)尋址方式(解決程序轉(zhuǎn)移)定義:將程序計(jì)數(shù)器PC的當(dāng)前值(取出本條指令后的PC值)與指令第二個(gè)

13、字節(jié)給出的偏移量(rel)相加,形成新的轉(zhuǎn)移目標(biāo)地址。稱(chēng)為相對(duì)尋址方式。例如:SJMP rel; (PC)(PC) + 2 + rel特點(diǎn): 目的地址指令地址指令字節(jié)數(shù)偏移量 相對(duì)尋址方式是為實(shí)現(xiàn)程序的相對(duì)轉(zhuǎn)移而設(shè)計(jì)的,為相對(duì)轉(zhuǎn)移指令所使用,其指令碼中含有相對(duì)地址偏移量,能生成浮動(dòng)代碼。尋址范圍:只能對(duì)程序存儲(chǔ)器ROM進(jìn)行尋址。相對(duì)地址偏移量(rel )是一個(gè)帶符號(hào)的8位二進(jìn)制補(bǔ)碼,其取值范圍為128127(以PC為中間的256個(gè)字節(jié)范圍)。 rel可以是標(biāo)號(hào)。3.2 80C51 單片機(jī)指令尋址方式docin/sundae_meng3.3 80C51 單片機(jī)指令分類(lèi)介紹 MCS-51指令系統(tǒng)有

14、42種助記符,代表了33種功能,指令助記符與各種可能的尋址方式相結(jié)合,構(gòu)成80C51單片機(jī)的111條指令。這些指令按功能分成5大類(lèi):數(shù)據(jù)傳送類(lèi)(29條)算術(shù)運(yùn)算類(lèi)(24條)邏輯運(yùn)算及移位類(lèi)(24條)控制轉(zhuǎn)移類(lèi)(17條)位操作類(lèi)(17條)docin/sundae_meng3.3.1 數(shù)據(jù)傳送類(lèi)指令 數(shù)據(jù)傳送類(lèi)指令一般的操作是把源操作數(shù)傳送到指令所指定的目標(biāo)地址。指令執(zhí)行后,源操作數(shù)保持不變,目的操作數(shù)為原操作數(shù)所替代。 數(shù)據(jù)傳送類(lèi)指令用到的助記符有:MOV,MOVX,MOVC,XCH,XCHD,PUSH,POP,SWAP。 數(shù)據(jù)一般傳送指令的助記符“MOV”表示: 格式: MOV 目的操作數(shù),源

15、操作數(shù) 功能:目的操作數(shù)(源操作數(shù)中的數(shù)據(jù)) 源操作數(shù)可以是:A、Rn、direct、Ri、#data 目的操作數(shù)可以是:A、Rn、direct、Ri數(shù)據(jù)傳送指令一般不影響標(biāo)志。3.3 80C51 單片機(jī)指令分類(lèi)介紹docin/sundae_meng1 以累加器為目的操作數(shù)的內(nèi)部數(shù)據(jù)傳送指令 MOVA,Rn;A(Rn)MOVA,direct;A(direct)MOVA,Ri;A(Ri)MOVA,#data;Adata3.3 80C51 單片機(jī)指令分類(lèi)介紹docin/sundae_meng2 數(shù)據(jù)傳送到工作寄存器Rn的指令 MOVRn,A;Rn(A)MOVRn,direct ;Rn(direct

16、)MOVRn,#data;Rndata3.3 80C51 單片機(jī)指令分類(lèi)介紹docin/sundae_meng3數(shù)據(jù)傳送到內(nèi)部RAM單元或特殊功能寄存器SFR的指令 MOVdirect,A;direct(A)MOVdirect,Rn;direct(Rn)MOVdirect1,direct2;direct1(direct2)MOVdirect,Ri;direct(Ri)MOVdirect,#data;direct#dataMOVRi,A;(Ri()MOVRi,direct;(Ri)(direct)MOVRi,#data;(Ri)dataMOVDPTR,#data16;DPTRdata163.3

17、80C51 單片機(jī)指令分類(lèi)介紹docin/sundae_meng 片內(nèi)數(shù)據(jù)RAM及寄存器的數(shù)據(jù)傳送指令MOV、PUSH和POP共18條,如圖所示。3.3 80C51 單片機(jī)指令分類(lèi)介紹docin/sundae_meng例1:若(30H)=35H,(R1)=70H,說(shuō)明指令 MOV R1,30H 的結(jié)果 解:執(zhí)行后,直接地址70H(即寄存器R1的內(nèi)容)的內(nèi)容為35H,30H與R1的內(nèi)容不變。例2:已知(70H)=60H,(60H)=20H, P1=0B7H, 執(zhí)行下面指令,說(shuō)明結(jié)果。 MOV R0,#70H; R0-70H MOV A,R0; A-60H MOV R1,A ; R1-60H MO

18、V B,R1; B-20H MOV R0, P1;70H-0B7H 解:結(jié)果是:(70H)=0B7H,(60H)=20H,B=20H ( R1)=60H, (R0)=70H3.3 80C51 單片機(jī)指令分類(lèi)介紹docin/sundae_meng例3 指出下面指令的錯(cuò)誤: Mov R1, R3 Mov Rn,Ri Mov A,R3解: Mov R1, R3 無(wú)寄存器之間直接傳送指令 Mov Rn,Ri,無(wú)寄存器間接尋址指令 Mov A,R3 ,間接尋址只能是R1或R03.3 80C51 單片機(jī)指令分類(lèi)介紹docin/sundae_meng 2. 外部數(shù)據(jù)存儲(chǔ)器讀/寫(xiě)指令(1)Ri作間址寄存器的外

19、部RAM單元讀/寫(xiě)指令 MOVX A, Ri ( Ri間接尋址的外部RAM單元讀) MOVX Ri , A ( Ri間接尋址的外部RAM單元寫(xiě))(2)DPTR作間址寄存器的外部RAM單元讀/寫(xiě)指令 MOVX A, DPTR ( DPTR間接尋址的外部RAM單元讀) MOVX DPTR , A ( DPTR間接尋址的外部RAM單元寫(xiě)) 3. 程序存儲(chǔ)器讀指令組(只能讀不能寫(xiě),單字節(jié)指令) MOVC A, A+DPTR(程序存儲(chǔ)器讀) MOVC A, A+PC(程序存儲(chǔ)器讀) 注意:讀寫(xiě)程序存儲(chǔ)器時(shí),只能通過(guò)A3.3 80C51 單片機(jī)指令分類(lèi)介紹docin/sundae_meng 片外數(shù)據(jù)存儲(chǔ)器

20、數(shù)據(jù)傳送指令MOVX共4條,如圖: 程序存儲(chǔ)器查表指令MOVC共2條,如圖所示。3.3 80C51 單片機(jī)指令分類(lèi)介紹docin/sundae_meng HBA:INC A MOVC A,A+PC RET DB 30H DB 31H200C DB 39H200D DB 41H200E DB 42H200F DB 43H2019 DB 44H2019 DB 45H2019 DB 46H例:假定A=00H。程序執(zhí)行情況:docin/sundae_meng4. 數(shù)據(jù)交換指令組(1)整字節(jié)交換指令 XCH A,Rn(寄存器尋址字節(jié)交換) XCH A, direct(直接尋址字節(jié)交換) XCH A, R

21、i ( Ri間接尋址字節(jié)交換)(2)半字節(jié)交換指令 XCHD A, Ri ( Ri間接尋址半字節(jié)交換)(3)累加器高低半字節(jié)交換指令 SWAP A (累加器內(nèi)容高低半字節(jié)交換)3.3 80C51 單片機(jī)指令分類(lèi)介紹docin/sundae_meng數(shù)據(jù)交換指令XCH、XCHD、和SWAP共5條,如圖所示?!纠浚≧0)30H,(A)65H,(30H)8FH執(zhí)行指令: XCHA,R0 ; (R0)30H,(A)8FH,(30H)65HXCHD A,R0 ; (R0)30H,(A)6FH,(30H)85HSWAPA ; (A)56H3.3 80C51 單片機(jī)指令分類(lèi)介紹docin/sundae_m

22、eng5. 堆棧操作指令組 PUSH direct(進(jìn)棧) POP direct(出棧) 例5:設(shè)(SP)=30H,ACC=60H,B=70H 執(zhí)行 PUSH ACC PUSH B后的結(jié)果如何? 解: PUSH ACC;(SP)- 31H,(31H)-60H PUSH B;(SP)- 32H, (32H)- 70H 結(jié)果為:(SP)=32H,(31) (32H)=70H3.3 80C51 單片機(jī)指令分類(lèi)介紹docin/sundae_meng 例如:進(jìn)入中斷服務(wù)程序時(shí),把程序狀態(tài)寄存器PSW、累加器A、數(shù)據(jù)指針DPTR進(jìn)棧保護(hù)。設(shè)當(dāng)前SP為60H。 則程序段執(zhí)行后,SP內(nèi)容修改為64H,而61H

23、、62H、63H、64H單元中依次棧入PSW、A、DPL、DPH的內(nèi)容,當(dāng)中斷服務(wù)程序結(jié)束之前,如下程序段(SP保持64H不變) 指令執(zhí)行之后,SP內(nèi)容修改為60H,而64H、63H、62、61H單元的內(nèi)容依次彈出到DPH、DPL、A、PSW中。PUSH PSWPUSH ACCPUSH DPLPUSH DPHPOP DPHPOP DPLPOP ACCPOP PSW3.3 80C51 單片機(jī)指令分類(lèi)介紹docin/sundae_meng3.3.2 算術(shù)運(yùn)算類(lèi)指令1加法指令 加法指令分為普通加法指令、帶進(jìn)位加法指令和加1指令。(1)普通加法指令 ADDA,Rn;A(A)+(Rn)ADDA,dire

24、ct;A (A)+(direct)ADDA,Ri; A (A)+ ( Ri)ADDA,#data;A(A)+ data算術(shù)運(yùn)算指令都是按8位二進(jìn)制無(wú)符號(hào)數(shù)執(zhí)行的。docin/sundae_meng【例】(A)=85H,R0=20H,(20H)=0AFH,執(zhí)行指令: ADD A,R0 10000101 +10101111 1 00110100結(jié)果:(A)=34H;Cy=1;AC=1;OV=1。 對(duì)于加法,溢出只能發(fā)生在兩個(gè)加數(shù)符號(hào)相同的情況。在進(jìn)行帶符號(hào)數(shù)的加法運(yùn)算時(shí),溢出標(biāo)志OV是一個(gè)重要的編程標(biāo)志,利用它可以判斷兩個(gè)帶符號(hào)數(shù)相加,和數(shù)是否溢出。 3.3.2 算術(shù)運(yùn)算類(lèi)指令docin/sund

25、ae_meng(2)帶進(jìn)位加法指令 【例如】(A)=85H,(20H)=0FFH,Cy=1執(zhí)行指令:ADDC A,20H結(jié)果:(A)=85H;Cy=1;AC=1;OV=0。ADDCA,Rn;A(A)+(Rn)+(Cy)ADDCA,direct;A(A)+ (direct)+ (Cy)ADDCA,Ri;A(A)+ (Ri)+ (Cy)ADDCA,#data;A(A)+ data+(Cy)3.3.2 算術(shù)運(yùn)算類(lèi)指令docin/sundae_meng(3)加1指令【例如】(A)12H,(R3)0FH,(35H)4AH,(R0)56H,(56H)00H 執(zhí)行如下指令: INCA;執(zhí)行后(A)13HIN

26、CR3 ;執(zhí)行后(R3)10HINC35H;執(zhí)行后(35H)4BHINCR0 ;執(zhí)行后(56H)01H INCA;A(A)+1INCRn;Rn (Rn)+1INCdirect;direct (direct)+1INCRi;(Ri)(Ri)+1INCDPTR;DPTR (DPTR)+13.3.2 算術(shù)運(yùn)算類(lèi)指令docin/sundae_meng(4)十進(jìn)制調(diào)整指令DA A執(zhí)行該指令時(shí),判斷A中的低4位是否大于9,若滿足大于則低4位做加6操作;同樣,A中的高4位大于9則高4位加6操作。例如:有兩個(gè)BCD數(shù)36與45相加,結(jié)果應(yīng)為BCD碼81,程序如下: MOV A,#36H ADD A,#45H

27、DA A得結(jié)果7BH;第三條指令對(duì)累加器A進(jìn)行十進(jìn)制調(diào)整,低4位(為0BH)大于9,因此要加6,最后得到調(diào)整的BCD碼81。 3.3.2 算術(shù)運(yùn)算類(lèi)指令docin/sundae_meng2 減法指令(1)帶借位減法指令 (2)減1指令 SUBBA,Rn;A(A)(Rn)(Cy)SUBBA,direct;A(A)(direct)(Cy)SUBBA,Ri;A(A)(Ri)(Cy)SUBBA,#data;A(A)data(Cy)DECA;A(A)1DECRn;Rn(Rn)1DECdirect;direct(direct)1DECRi;(Ri)(Ri)13.3.2 算術(shù)運(yùn)算類(lèi)指令docin/sunda

28、e_meng3.乘法指令 乘法指令完成單字節(jié)的乘法,只有一條指令:MUL AB ; AB (A)(B) 【例如】(A)50H,(B)0A0H,執(zhí)行指令: MULAB 結(jié)果:(B)32H,(A)00H(即乘積為3200H), Cy0,OV1。4.除法指令 除法指令完成單字節(jié)的除法,只有一條指令: DIV AB ; A (A)/(B)的商 B (A)/(B)的余數(shù)3.3.2 算術(shù)運(yùn)算類(lèi)指令docin/sundae_meng說(shuō)明: MUL指令實(shí)現(xiàn)8位無(wú)符號(hào)數(shù)的乘法操作,兩個(gè)乘數(shù)分別放在累加器A和寄存器B中,乘積為16位,低8位放在A中,高8位放在B中; DIV指令實(shí)現(xiàn)8位無(wú)符號(hào)數(shù)除法,被除數(shù)放在A中

29、,除數(shù)放在B中,指令執(zhí)行后,商放在A中而余數(shù)放在B中 。3.3.2 算術(shù)運(yùn)算類(lèi)指令docin/sundae_meng算術(shù)運(yùn)算類(lèi)指令包括:ADD、ADDC、SUBB、MUL、DIV、INC、DEC和DA,如圖3.9所示。 圖3.9 算術(shù)運(yùn)算類(lèi)指令 3.3.2 算術(shù)運(yùn)算類(lèi)指令docin/sundae_meng 1邏輯與指令 【例如】(A)37H,(R0)0A9H執(zhí)行指令: ANLA,R0 結(jié)果:(A)21H ANLA,Rn;A(A)(Rn)ANLA,direct;A(A)(direct)ANLA,Ri;A(A)(Ri)ANLA,#data;A(A) dataANLdirect,A;direct(d

30、irect)(A)ANLdirect,#data; direct(direct) data3.3.3 邏輯運(yùn)算及移位類(lèi)指令docin/sundae_meng2 邏輯或指令 【例如】(A)37H,(P1)09H執(zhí)行指令:ORLP1,A 結(jié)果:(A)3FH ORLA,Rn;A(A)(Rn)ORLA,direct;A(A)(direct)ORLA,Ri;A(A)(Ri)ORLA,#data;A(A) dataORLdirect,A;direct (direct)(A)ORLdirect,#data ;direct (direct) data3.3.3 邏輯運(yùn)算及移位類(lèi)指令docin/sundae_m

31、eng3 邏輯異或指令 XRLA,Rn;A(A)(Rn)XRLA,direct;A(A)(direct)XRLA,Ri;A(A)(Ri)XRLA,#data;A(A) dataXRLdirect,A;direct (direct)(A)XRLdirect,#data ;direct (direct)data4 累加器清0和取反指令 CLR A;對(duì)累加器A清“0” CPL A;對(duì)累加器A按位取反3.3.3 邏輯運(yùn)算及移位類(lèi)指令ClearConverse Position Logical docin/sundae_meng 當(dāng)需要只改變字節(jié)數(shù)據(jù)的個(gè)別位而其余位不變時(shí),只能通過(guò)邏輯運(yùn)算完成。應(yīng)用舉例

32、 將累加器A的低4位傳送到P1口的低4位,但P1口的高4位保持不變。 MOV R0, A ANL A, #0FH ANL P1, #0F0H ORL P1, A MOV A, R03.3.3 邏輯運(yùn)算及移位類(lèi)指令docin/sundae_meng5 移位指令 RLA;累加器A的內(nèi)容向左循環(huán)移1位RLCA;累加器A的內(nèi)容帶進(jìn)位標(biāo)志向左循環(huán)移1位RRA;累加器A的內(nèi)容向右循環(huán)移1位RRCA;累加器A的內(nèi)容帶進(jìn)位標(biāo)志向右循環(huán)移1位3.3.3 邏輯運(yùn)算及移位類(lèi)指令Recycle LeftRecycle Left Carrydocin/sundae_meng 循環(huán)左移指令示意圖:RL A循環(huán)右移指令示意

33、圖:RR A帶進(jìn)位的循環(huán)左移指令示意圖:RLC A帶進(jìn)位的循環(huán)右移指令示意圖:RRC A3.3.3 邏輯運(yùn)算及移位類(lèi)指令docin/sundae_meng3.3.3 邏輯運(yùn)算及移位類(lèi)指令圖3.10 邏輯運(yùn)算類(lèi)指令 docin/sundae_meng3.3.4 控制轉(zhuǎn)移類(lèi)指令 1. 無(wú)條件轉(zhuǎn)移指令(1)絕對(duì)轉(zhuǎn)移指令 AJMP addr11 這是2KB范圍內(nèi)的無(wú)條件跳轉(zhuǎn)指令,執(zhí)行該指令時(shí),先將PC+2,然后將addr11送入PC10PC0,而PC15PC11保持不變。 操作過(guò)程可表示為:PC(PC)2 PC100addr11(2)短轉(zhuǎn)移指令 SJMP rel 操作過(guò)程可表示為: PC(PC)2 P

34、C(PC)rel 執(zhí)行指令時(shí),先將PC+2,再把指令中帶符號(hào)的偏移量加到PC上,得到跳轉(zhuǎn)的目的地址送入PC。 目標(biāo)地址=源地址+2+relAbsolute JumpShort Jumpdocin/sundae_meng(3)長(zhǎng)轉(zhuǎn)移指令LJMP addr16 ;PC addr16 執(zhí)行該指令時(shí),將16位目標(biāo)地址addr16裝入PC,程序無(wú)條件轉(zhuǎn)向指定的目標(biāo)地址。轉(zhuǎn)移指令的目標(biāo)地址可在64KB程序存儲(chǔ)器地址空間的任何地方,不影響任何標(biāo)志。(4)變址尋址轉(zhuǎn)移指令(散轉(zhuǎn)指令)JMP A+DPTR;PC (A)(DPTR)2. 條件轉(zhuǎn)移指令(1)累加器判零轉(zhuǎn)移指令 JZrel;(A)=0轉(zhuǎn)移JNZrel

35、;(A)0轉(zhuǎn)移3.3.4 控制轉(zhuǎn)移類(lèi)指令 Long JumpJumpJump ZeroJump Not Zerodocin/sundae_meng(2)數(shù)值比較轉(zhuǎn)移指令 在MCS-51中沒(méi)有專(zhuān)門(mén)的比較指令,但提供了下面4條比較不相等轉(zhuǎn)移指令; (3)減1不為0轉(zhuǎn)移指令 DJNZ Rn,rel;R(R)10轉(zhuǎn)移 DJNZ direct,rel ;direct (direct)10轉(zhuǎn)移CJNEA,direct,rel;(A)(direct)轉(zhuǎn)移CJNEA,#data,rel;(A) data轉(zhuǎn)移CJNERn,#data,rel;(Rn) data轉(zhuǎn)移CJNERi,#data,rel;(Ri) da

36、ta轉(zhuǎn)移Decrease Jump Not ZeroCompare Jump Not Equaldocin/sundae_meng圖3.11 條件轉(zhuǎn)移類(lèi)指令 docin/sundae_meng4. 子程序調(diào)用及返回指令(1)絕對(duì)調(diào)用指令 ACALL addr11執(zhí)行該指令時(shí),PC (PC)2SP(SP)1,(SP)(PC)70SP(SP)1,(SP)(PC)158 PC100addr11 (2)長(zhǎng)調(diào)用指令 LCALL addr16這條指令無(wú)條件調(diào)用位于16位地址addr16的子程序。其操作過(guò)程如下: PC (PC)3SP(SP)1,(SP)(PC)70SP(SP)1,(SP)(PC)158 P

37、C150addr16docin/sundae_meng(3)子程序返回指令RET 子程序返回指令是把棧頂相鄰兩個(gè)單元的內(nèi)容彈出送到PC,SP的內(nèi)容減2,程序返回PC值所指的指令處執(zhí)行。RET指令通常安排在子程序的末尾,使程序能從子程序返回到主程序。(4)中斷返回指令 RETI 這是指令的功能與RET指令相類(lèi)似。通常安排在中斷服務(wù)程序的最后。 (5)空操作指令 NOP;PC PC1 空操作也是CPU控制指令,它沒(méi)有使程序轉(zhuǎn)移的功能。只消耗一個(gè)機(jī)器周期的時(shí)間。常用于程序的等待或時(shí)間的延遲。docin/sundae_meng3.3.5 位操作類(lèi)指令1. 位傳送指令 2 位置位復(fù)位指令 SETB C;

38、Cy 1 SETB bit;bit 1 CLR C;Cy 0 CLR bit;bit 0MOVC,bit;Cy(bit)MOVbit,C;bit(Cy)docin/sundae_meng3 位邏輯運(yùn)算指令A(yù)NL C,bit;Cy (Cy)(bit)ANL C,/bit;Cy (Cy)(/bit)ORL C,bit;Cy (Cy)(bit)ORL C,/bit;Cy (Cy)(/bit) CPL C ;Cy ( ) CPL bit ;bit ( )docin/sundae_meng位操作類(lèi)指令如圖3.12所示。圖3.12 位操作類(lèi)指令 docin/sundae_meng5 位控制轉(zhuǎn)移指令 JCrel;若(Cy)=1,則轉(zhuǎn)移PC(PC)+2+relJNCrel;若(Cy)=0,則轉(zhuǎn)移PC(PC)+2+relJBbit,rel;若(bit)=1,則轉(zhuǎn)移PC(PC)+3+relJNBbit,rel;若(bit)=0,則

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論