MCS-51單片機(jī)第3章MCS-51單片機(jī)指令系統(tǒng).ppt_第1頁
MCS-51單片機(jī)第3章MCS-51單片機(jī)指令系統(tǒng).ppt_第2頁
MCS-51單片機(jī)第3章MCS-51單片機(jī)指令系統(tǒng).ppt_第3頁
MCS-51單片機(jī)第3章MCS-51單片機(jī)指令系統(tǒng).ppt_第4頁
MCS-51單片機(jī)第3章MCS-51單片機(jī)指令系統(tǒng).ppt_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第3章 MCS-51單片機(jī)指令系統(tǒng),3.1 MCS-51指令系統(tǒng)的分類、格式及一般說明 3.2 尋址方式 3.3 分類指令,MCS-51單片機(jī)指令系統(tǒng)有如下特點:,(1)指令執(zhí)行時間快。 (2)指令短,約有一半的指令為單字節(jié)指令。 (3)用一條指令即可實現(xiàn)2個一字節(jié)的相乘或相除。 (4)具有豐富的位操作指令。 (5)可直接用傳送指令實現(xiàn)端口的輸入輸出操作。,3.1 MCS-51指令系統(tǒng)的分類、格式及一般說明,3.1.1 指令分類 3.1.2 指令格式 3.1.3 指令描述符號介紹,返回本章首頁,3.1.1 指令分類,按指令功能,MCS-51指令系統(tǒng)分為數(shù)據(jù)傳遞與交換、算術(shù)運算、邏輯運算、程序轉(zhuǎn)

2、移、布爾處理操作、CPU控制等6類。 布爾處理操作類指令又稱位操作指令。,返回本節(jié),3.1.2 指令格式,在MCS-51指令中,一般指令主要由操作碼、操作數(shù)組成。 指令應(yīng)具有以下功能: (1)操作碼指明執(zhí)行什么性質(zhì)和類型的操作。例如,數(shù)的傳送、加法、減法等。 (2)操作數(shù)指明操作的數(shù)本身或者是操作數(shù)所在的地址。 (3)指定操作結(jié)果存放的地址。,返回本節(jié),3.1.3 指令描述符號介紹,Rn當(dāng)前選中的寄存器區(qū)中的8個工作寄存器R0R7(n=07)。 Ri當(dāng)前選中的寄存器區(qū)中的2個工作寄存器R0、R1(i=0,1)。 direct8位的內(nèi)部數(shù)據(jù)存儲器單元中的地址。 #data包含在指令中的8位常數(shù)。

3、 #data16包含在指令中的16位常數(shù)。 addr1616位目的地址。 addr1111位目的地址。,rel8位帶符號的偏移字節(jié),簡稱偏移量。 DPTR數(shù)據(jù)指針,可用作16位地址寄存器。 bit內(nèi)部RAM或?qū)S眉拇嫫髦械闹苯訉ぶ肺弧?A累加器。 B專用寄存器,用于乘法和除法指令中。 C進(jìn)位標(biāo)志或進(jìn)位位,或布爾處理機(jī)中的累加器。,間址寄存器或基址寄存器的前綴,如Ri,DPTR。 / 位操作數(shù)的前綴,表示對該位操作數(shù)取反,如/bit。 片內(nèi)RAM的直接地址或寄存器。 ()由尋址的單元中的內(nèi)容。 箭頭左邊的內(nèi)容被箭頭右邊的內(nèi)容所代替。,返回本節(jié),3.2 尋址方式,3.2.1 立即尋址 3.2.2

4、直接尋址 3.2.3 寄存器尋址 3.2.4 寄存器間接尋址 3.2.5 變址尋址 3.2.6 相對尋址 3.2.7 位尋址,返回本章首頁,3.2.1 立即尋址,指令中直接給出操作數(shù)的尋址方式。立即操作數(shù)用前面加有#號的8位或16位數(shù)來表示。 例如:MOVA,# 60H;A#60H MOVDPTR,# 3400H;DPTR#3400H MOV30H,# 40H;30H單元#40H 上述三條指令執(zhí)行完后,累加器A中數(shù)據(jù)為立即數(shù)據(jù)60H,DPTR寄存器中數(shù)據(jù)為3400H,30H單元中數(shù)據(jù)為立即數(shù)40H。,返回本節(jié),3.2.2 直接尋址,指令中直接給出操作數(shù)地址的尋址方式,能進(jìn)行直接尋址的存儲空間有

5、SFR寄存器和內(nèi)部數(shù)據(jù)RAM。 例如:MOVPSW,# 20H; PSW#20H PSW為直接尋址寄存器的符號地址。 MOVA,30H;A30H內(nèi)部RAM單元中的內(nèi)容 30H為直接給出的內(nèi)部RAM的地址。,返回本節(jié),3.2.3 寄存器尋址,以通用寄存器的內(nèi)容為操作數(shù)的尋址方式。通用寄存器指A、B 、DPTR以及R0R7 。 例如:CLR A;A0 INC DPTR;DPTRDPTR+1 ADDR5,# 20H;R5#20H+R5,返回本節(jié),3.2.4 寄存器間接尋址,以寄存器中內(nèi)容為地址,以該地址中內(nèi)容為操作數(shù)的尋址方式。間接尋址的存儲器空間包括內(nèi)部數(shù)據(jù)RAM和外部數(shù)據(jù)RAM。 能用于寄存器間

6、接尋址的寄存器有R0,R1,DPTR,SP。其中R0、R1必須是工作寄存器組中的寄存器。SP僅用于堆棧操作。,例如:MOV R0,A ;內(nèi)部RAM(R0)A其指令操作過程示意圖如圖3-1所示。 又如:MOVX A,R1;A外部RAM(P2R1)其指令操作過程示意圖如圖3-2所示。 再如:MOVX DPTR,A;外部RAM(DPTR)A 其指令操作過程示意圖如圖3-3所示。,圖3-1 MOV R0,A間接尋址示意圖,圖3-2 MOVX A,R1間接尋址示意圖,圖3-3 MOVX DPTR,A間接尋址示意圖,返回本節(jié),3.2.5 變址尋址,變址尋址只能對程序存儲器中數(shù)據(jù)進(jìn)行操作。由于程序存儲器是只

7、讀的,因此變址尋址只有讀操作而無寫操作,在指令符號上采用MOVC的形式(如圖3-4所示)。 例如:MOVC A, A+DPTR;A(A+DPTR) 又如,MOVC A, A+PC ;A(A+PC) 這條指令與上條指令不同的是,基址寄存器是PC。,圖3-4 變址尋址示意圖,返回本節(jié),3.2.6 相對尋址,以當(dāng)前程序計數(shù)器PC的內(nèi)容為基礎(chǔ),加上指令給出的一字節(jié)補(bǔ)碼數(shù)(偏移量)形成新的PC值的尋址方式。 相對尋址用于修改PC值,主要用于實現(xiàn)程序的分支轉(zhuǎn)移。 例如,SJMP 08H ;PCPC+2+08H 指令操作示意圖如圖3-5所示。,圖3-5 相對尋址示意圖,返回本節(jié),3.2.7 位尋址,位尋址只

8、能對有位地址的單元作位尋址操作。 位尋址其實是一種直接尋址方式,不過其地址是位地址。 例如:SETB 10H ;將10H位置1若22H單元中存放著數(shù)據(jù)40H,22H單元的D0位的位地址為10H,執(zhí)行上述指令后(22H)=41H。 又如:MOV 32H,C ;32H進(jìn)位位C ORL C ,32H ;CC32H,返回本節(jié),3.3 分類指令,3.3.1 數(shù)據(jù)傳送類指令 3.3.2 算術(shù)運算類指令 3.3.3 邏輯運算與循環(huán)類指令 3.3.4 程序轉(zhuǎn)移類指令 3.3.5 調(diào)用子程序及返回指令 3.3.6 位操作指令 3.3.7 空操作指令,返回本章首頁,3.3.1 數(shù)據(jù)傳送類指令,數(shù)據(jù)傳送類指令共28

9、條,是將源操作數(shù)送到目的操作數(shù)。指令執(zhí)行后,源操作數(shù)不變,目的操作數(shù)被源操作數(shù)取代。數(shù)據(jù)傳送類指令用到的助記符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8種。 源操作數(shù)可采用寄存器、寄存器間接、直接、立即、變址5種尋址方式尋址,目的操作數(shù)可以采用寄存器、寄存器間接、直接尋址3種尋址方式。MCS-51單片機(jī)片內(nèi)數(shù)據(jù)傳送途徑如圖3-6所示。,圖3-6 MCS-51單片機(jī)片內(nèi)數(shù)據(jù)傳送圖,1以A為目的操作數(shù),MOV A,Rn;A Rn MOV A,direct;A(direct) MOV A,Ri;A(Ri) MOV A,#data;A #data,2以Rn為目的操作數(shù)

10、,MOV Rn,A;Rn A MOV Rn,direct;Rn (direct) MOV Rn,#data;Rn #data,3以直接地址為目的操作數(shù),MOV Ri,A;(Ri) A MOV Ri,direct;(Ri) (direct) MOV Ri,#data;(Ri) #data,4以間接地址為目的操作數(shù),MOV Ri,A;(Ri) A MOV Ri,direct;(Ri) (direct) MOV Ri,#data;(Ri) #data 例如:設(shè)(30H)=6FH,R1=40H,執(zhí)行MOV R1,30H后,30H單元中數(shù)據(jù)取出送入R1間接尋址的40H單元,(40H)=6FH。,5以DP

11、TR為目的操作數(shù),MOV DPTR,#data16 ;DPTR #data16 例如執(zhí)行 MOV DPTR,#2000H 后, (DPTR)= 2000H。,6訪問外部數(shù)據(jù)RAM,MOVX A,DPTR;A (DPTR) MOVX DPTR,A;(DPTR) A MOVX A,Ri;A (P2Ri) MOVX Ri,A;(P2Ri) A,7讀程序存儲器,MOVC A,A+DPTR;A (A+DPTR) MOVC A,A+PC;A (A+PC) 例如已知A=30H,DPTR=3000H, 程序存儲器單元(3030H)=50H,執(zhí)行MOVC A, A+DPTR后,A=50H。,8數(shù)據(jù)交換,l字節(jié)交

12、換 XCH A,Rn;A Rn XCH A ,direct;A(direct) XCH A,Ri;A(Ri) l半字節(jié)交換 XCHD A,Ri;A03(Ri)03 SWAP A;A03A47,9堆棧操作,所謂堆棧是在片內(nèi)RAM中按“先進(jìn)后出,后進(jìn)先出”原則設(shè)置的專用存儲區(qū)。數(shù)據(jù)的進(jìn)棧出棧由指針SP統(tǒng)一管理。堆棧的操作有如下兩條專用指令: PUSH direct;SP(SP+1),(SP)(direct) POPdirect;(direct)(SP),SP SP-1 PUSH是進(jìn)棧(或稱為壓入操作)指令。指令執(zhí)行過程如圖3-7所示。,圖3-7 指令PUSH操作示意圖,圖3-8 指令POP操作示意

13、圖,【例3.1】 將片內(nèi)RAM 30H單元與40H單元中的內(nèi)容互換。,方法1(直接地址傳送法): MOV31H,30H MOV30H,40H MOV40H,31H SJMP$,方法2(間接地址傳送法): MOVR0,#40H MOVR1,#30H MOVA,R0 MOVB,R1 MOVR1,A MOVR0,B SJMP$,方法3(字節(jié)交換傳送法): MOVA,30H XCHA,40H MOV30H,A SJMP$,方法4(堆棧傳送法): PUSH30H PUSH40H POP30H POP40H SJMP$,返回本節(jié),3.3.2 算術(shù)運算類指令,1加法指令 ADD A,Rn;A A + Rn

14、ADD A,direct;A A +(direct) ADD A,Ri;A A +(Ri) ADD A,#data;A A + #data,2帶進(jìn)位加指令 ADDC A,Rn;A A + Rn + C ADDC A,direct;A A +(direct)+ C ADDC A,Ri;A A +(Ri)+ C ADDC A,#data;A A + #data + C C為來自PSW狀態(tài)寄存器中的進(jìn)位位C。 例如,設(shè)A=20H,R0=21H,C=1,執(zhí)行指令 ADDC,R0后,A=42H。,3帶借位減指令 SUBB A,Rn;A A - Rn - C SUBB A,direct;A A -(dir

15、ect)- C SUBB A,Ri;A A -(Ri)- C SUBB A,#data;A A - #data C 例如,設(shè)A=39H,R0=20H,(20H)=32H,C=1,執(zhí)行指令 SUBB,R0后,A=06H。,4乘法指令 MUL AB;BA AB A和B中各存放一個8位無符號數(shù),指令執(zhí)行后,16位乘積的高8位在B中,低8位存A中。 例如,A=30H,B=60H,執(zhí)行 MUL AB 后,A=00H,B=12H。,5除法指令 DIV AB;AB商在A中,余數(shù)在B中 A和B中各存放一個8位無符號數(shù),A放被除數(shù),B放除數(shù)。指令執(zhí)行后,A中存放商,B中存入余數(shù)。若B=00H,則指令執(zhí)行后OV=

16、1,A與B不變。 例如,A=30H,B=07H,執(zhí)行 DIV AB 后,A=06H,B=06H。,6加1指令 INC A;A A + 1 INC Rn;Rn Rn + 1 INC direct;(direct) (direct)+ 1 INC Ri;(Ri)(Ri)+ 1 INC DPTR;DPTR DPTR + 1 例如,(30H)=22H,執(zhí)行 INC 30H 后,(30H)=23H。,7減1指令 DEC A;A A - 1 DEC Rn;Rn Rn - 1 DEC direct;direct (direct)- 1 DEC Ri;(Ri)(Ri)- 1 例如,R0=30H,(30H)=2

17、2H,執(zhí)行 DEC R0 后,(30H)=21H。,8十進(jìn)制調(diào)整指令 DA A ;把A中按二進(jìn)制相加的結(jié)果調(diào)整成按BCD碼相加的結(jié)果 例如,A=65BCD,B=78BCD,C=0,執(zhí)行下列語句 ADDA,B DAA 后,A=43 BCD,C=1。,【例3.2】 試把存放在R1R2和R3R4中的兩個16位數(shù)相加,結(jié)果存于R5R6中。解:參考程序如下: MOVA,R2;取第一個數(shù)的低8位 ADDA,R4;兩數(shù)的低8位相加 MOVR6,A;保存和的低8位,MOVA,R1;取第一個數(shù)的高8位 ADDCA,R3;兩數(shù)的高8位相加,并把低8位相加時的進(jìn)位位加進(jìn)來 MOVR5,A;把相加的高8位存入R5寄存

18、器中 SJMP $,返回本節(jié),3.3.3 邏輯運算與循環(huán)類指令,1“與”操作指令 2“或”操作指令 3“異或”操作指令 4求反與清除指令 5循環(huán)指令,返回本節(jié),3.3.4 程序轉(zhuǎn)移類指令,1無條件轉(zhuǎn)移指令 l絕對(短)轉(zhuǎn)移指令 AJMPaddr11;PC100 addr11 l長轉(zhuǎn)移指令 LJMPaddr16;PC addr16 l短(相對)轉(zhuǎn)移指令 SJMPrel;PC PC + 2 + rel l 間接轉(zhuǎn)移指令 JMPA+DPTR;PC A + DPTR,2條件轉(zhuǎn)移指令 l累加器為零(非零)轉(zhuǎn)移指令 l減1非零轉(zhuǎn)移指令 l兩數(shù)不等轉(zhuǎn)移指令 l相對偏移量rel的求法,表3-1 程序存儲器空間32個2K地址范圍,返回本節(jié),3.3.5 調(diào)用子程序及返回指令,1調(diào)用子程序指令 LCALL addr16 ;PCPC+3,SPSP+1,(SP)PC710 ;SPSP+1,(SP)PC158, PCaddr16 ACALL addr11 ;PC PC+2,SPSP+1,(SP)PC70 ;SP SP+1,(SP) PC158,PC100addr11,2返回指令 RET ;PC158 (SP),SPSP-1 ;PC70 (SP),SPSP-1 RETI ;PC158(SP),SPSP-1 ;PC70 (SP),SPSP-1,返回本節(jié),3.3.6 位操作指令,1位數(shù)據(jù)傳送指令 MOVC,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論