《單片微型計算機原理及其應用電子教案12》由會員分享,可在線閱讀,更多相關《單片微型計算機原理及其應用電子教案12(47頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,1.2 MCS-51,單片機指令系統(tǒng),MCS-51,單片機指令系統(tǒng)特點,(,1,)指令執(zhí)行時間快。,(,2,)指令短,約有一半的指令為單字節(jié)指令。,(,3,)用一條指令即可實現(xiàn),2,個一字節(jié)的相乘或相除。,(,4,)具有豐富的位操作指令。,(,5,)可直接用傳送指令實現(xiàn)端口的輸入輸出操作。,1.2.1 MCS-51,指令系統(tǒng)的分類、格式及一般說明,1.2.1.1,指令分類,數(shù)據(jù)傳遞與交換,算術運算,邏輯運算,程序轉(zhuǎn)移,布爾處理操作,(,位操作指令,),1.2.1.2,指令格式,在,MCS-51,指令中,一般
2、指令主要由操作碼、操作數(shù)組成。,(,1,)操作碼指明執(zhí)行什么性質(zhì)和類型的操作。例如,數(shù)的傳送、加法、減法等。,(,2,)操作數(shù)指明操作的數(shù)本身或者是操作數(shù)所在的地址。,(,3,)指定操作結(jié)果存放的地址。,1.2.1.3,指令描述符號介紹,Rn,當前選中的寄存器區(qū)中的,8,個工作寄存器,R0,R7,(,n=0,7,)。,Ri,當前選中的寄存器區(qū)中的,2,個工作寄存器,R0,、,R1,(,i=0,,,1,)。,direct8,位的內(nèi)部數(shù)據(jù)存儲器單元中的地址。,#data,包含在指令中的,8,位常數(shù)。,#data16,包含在指令中的,16,位常數(shù)。,addr1616,位目的地址。,addr1111,
3、位目的地址。,rel,8,位帶符號的偏移字節(jié),簡稱偏移量。,DPTR,數(shù)據(jù)指針,可用作,16,位地址寄存器,指令描述符號介紹,bit,內(nèi)部,RAM,或?qū)S眉拇嫫髦械闹苯訉ぶ肺弧?A,累加器。,B,專用寄存器,用于乘法和除法指令中。,C,進位標志或進位位,或布爾處理機中的累加器。,間址寄存器或基址寄存器的前綴,如,Ri,,,DPTR,。,/,位操作數(shù)的前綴,表示對該位操作數(shù)取反,如,/bit,。,片內(nèi),RAM,的直接地址或寄存器。,(),由,尋址的單元中的內(nèi)容。,箭頭左邊的內(nèi)容被箭頭右邊的內(nèi)容所代替,1.2.2,分類指令,1.2.2.1,數(shù)據(jù)傳送類指令,數(shù)據(jù)傳送類指令共,28,條,是將源操作數(shù)送
4、到目的操作數(shù)。指令執(zhí)行后,源操作數(shù)不變,目的操作數(shù)被源操作數(shù)取代。數(shù)據(jù)傳送類指令用到的助記符有,MOV,、,MOVX,、,MOVC,、,XCH,、,XCHD,、,SWAP,、,PUSH,、,POP8,種。,源操作數(shù)可采用寄存器、寄存器間接、直接、立即、變址,5,種尋址方式尋址,目的操作數(shù)可以采用寄存器、寄存器間接、直接尋址,3,種尋址方式。,1,以,A,為目的操作數(shù)(機器碼),MOV A,,,Rn,;,A,Rn,,(,A)=(,Rn,),MOV A,,,direct,;,A,(,direct,),(A)=,(,direct,),MOV A,,,#data,;,A#data,(A)=#data,
5、MOV A,,,Ri,(,重點,),;,A,(,Ri,),(A)=,(,(,Ri,),),以,Ri,中的內(nèi)容為地址,取該地址的內(nèi)容送給,A,。,注意:是,from,、,copy,操作,,,2,以,Rn,為目的操作數(shù),MOV,Rn,,,A,;,Rn,(A),MOV,Rn,,,direct,;,Rn,(,direct,),MOV,Rn,,,#data,;,Rn,#data,如,MOV R6,#45H,注意:,Rn,為,R0R7,3,以直接地址為目的操作數(shù),MOV direct,,,A,;,direct (A),MOV direct,,,Ri,;,direct (,Ri,),MOV direct,,
6、,#data,;,direct#data,MOV direct,,,Rn,;,direct,(,Rn,),MOV direct1,,,direct2,;,direct 1,(,direct2,),如:,MOV 30H,56H,4,以間接地址為目的操作數(shù),MOV ,Ri,,,A,;(,Ri,),(A),MOV,Ri,,,direct,;(,Ri,)(,direct,),MOV ,Ri,,,#data,;(,Ri,),#data,以,Ri,的內(nèi)容為地址,把,#data,的,送入該單元中。,例如:設(,30H,),=6FH,,,R1=40H,,,(40H)=26H,執(zhí)行,MOV R1,,,30H,后
7、,,30H,單元中數(shù)據(jù)取出送入,R1,間接尋址的,40H,單元,,(40H)=6FH,而不是,26H=6FH.,5,以,DPTR,為目的操作數(shù),MOV DPTR,,,#data16,;,DPTR#data16,例如執(zhí)行,MOV DPTR,,,#2000H,后,(,DPTR,),=2000H,。,注意:其他,MOV,指令均為,1,字節(jié)數(shù)。,直接地址,direct,累加器,A,直接地址,direct,間接地址,Ri,寄存器,Rn,立即數(shù),#data,寄存器,DPTR,6,訪問外部數(shù)據(jù),RAM,MOVX,A,,,DPTR,;,A,(,DPTR,),MOVX DPTR,,,A,;(,DPTR,),A,
8、MOVX A,,,Ri,;,A,(,P2Ri,),MOVX ,Ri,,,A,;(,P2Ri,),A,特點:雙向傳送,必須,由,A,傳送,外地址由,DPTR,及,P2Ri,確定,把外部,ram,單元,3000h,的內(nèi)容寫入,A,中,(1)MOV DPTR,#3000H,MOVX A,DPTR,(2)MOV P2,#30H,MOV R1,#00H,MOVX A,,,R1,(3)MOVX A,3000H(,錯,),7,讀程序存儲器,MOVC A,,,A+DPTR,;,A,(,A,),+,(,DPTR,),MOVC A,,,A+PC,;,A,(,A,),+,(,PC,),注意:只有,對,ROM,的讀(
9、無寫)指令,,PC,為,當前指令所在,ROM,空間的地址,+1,例如已知,A=30H,,,DPTR=3000H,,,程序存儲器單元(,3030H,),=50H,,,執(zhí)行,MOVC A,,,A+DPTR,后,例如,MOVC A,,,A+PC,存在,ROM,空間,1203H,(A)=30H,(,A,),+,(,PC,),=1233H,(A)=,8,數(shù)據(jù)交換,字節(jié)交換,XCH A,,,Rn,;,A,Rn,XCH A,,,direct,;,A,(,direct,),XCH A,,,Ri,;,A,(,Ri,),如:,XCH A,,,30H,;,設(,A,),=98H,(30H)=07H,結(jié)果 (,A,)
10、,=,(30H)=,半字節(jié)交換,(,低,4,位互換,),XCHD A,,,Ri,;,A0,3,(,Ri,),0,3,SWAP A,;,A0,3A4,7,如,:,設(,A,),=98H;SWAP A;,(,A,),=89H,9,堆棧操作(難點),所謂堆棧是在片內(nèi),RAM,中按“先進后出,后進先出”原則設置的專用存儲區(qū)。數(shù)據(jù)的進棧出棧由指針,SP,統(tǒng)一管理。隊列:先進先出的存儲結(jié)構(gòu)管理。,堆棧的操作有如下兩條專用指令:,PUSH,direct,;,SP,(,SP)+1,,,(,SP,)(,direct,),POPdirect,;,direct(,(,SP,),),,,SP (SP)-1,堆棧指令主
11、要用于子程序和數(shù)據(jù)保護,保證程序的正常執(zhí)行,。,PUSH,進棧指令執(zhí)行過程,片內(nèi),RAM,30H,11H,10H,SP,片內(nèi),RAM,50H,40H,11H,10H,SP,40H,30H,片內(nèi),RAM,50H,40H,11H,10H,50H,SP,30H,片內(nèi),RAM,40H,11H,10H,34H,SP,30H,34H,34H,執(zhí)行前,執(zhí)行前,執(zhí)行前,PUSH,指令后,執(zhí)行,POP,指令后,【,例,1】,將片內(nèi),RAM 30H,單元,與,40H,單元中的內(nèi)容互換。,方法,1,(直接地址傳送法):,MOV31H,,,30H,MOV30H,,,40H,MOV40H,,,31H,SJMP$,方法,
12、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$,1.2.2.2,算術運算類指令,1,加法指令(對,PSW,的影響),ADD A,,,Rn,;,A(A)+(,Rn,),ADD A,,,direct,;,A(A)+,(,direct,),ADD A,,,Ri,;,A(A)
13、+(,(,Ri,),),ADD A,,,#data,;,A(A)+#data,注意:加法操作在,A,中完成。并對,PSW,中的,CY,AC,OV,P,產(chǎn)生影響。,如:,ADD A,,,#28H;,設,(A)=B9H,則結(jié)果,(A)=E1H;CY=0,AC=1,OV=1,P=0,2,帶進位加指令,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)寄存器中的進位位,
14、C,是運算前的,C,,,運算后的,C,不參加運算,。,例如,設,(A)=20H,,,(R0)=21H,,,(C)=1,,,執(zhí)行指令,ADDC,,,R0,后,,A=42H,。,3,帶借位減指令,SUBB A,,,Rn,;,A(A)(,Rn,)(C),SUBB A,,,direct,;,A(A)-,(,direct,),-(C),SUBB A,,,Ri,;,A(A)(,(,Ri,),)-(C),SUBB A,,,#data,;,A(A)-#data(C),注意:單片機沒有不帶借位的減法。可以先使,c=0,后,再使用,SUBB,指令,例如,設,A=39H,,,R0=20H,,(,20H,),=32H
15、,,,C=1,,,4,乘法指令,MUL AB,;,BA(A)(B),A,和,B,中各存放一個,8,位無符號數(shù),指令執(zhí)行后,,,16,位乘積的高,8,位在,B,中,低,8,位存,A,中。,例如,,A=30H,,,B=60H,,,執(zhí)行,MUL AB,后,,A=00H,,,B=12H,注意,MUL,對,PSW,的影響,.,5,除法指令,DIV AB,;,(A)(B)AB,商,在,A,中,余數(shù)在,B,中,A,和,B,中各存放一個,8,位無符號數(shù),,A,放被除數(shù),,B,放除數(shù)。指令執(zhí)行后,,,A,中存放商,,B,中存入余數(shù)。,若,B=00H,,,則指令執(zhí)行后,OV=1,,,A,與,B,不變。,例如,,A
16、=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,),=22H,,,執(zhí)行,DEC R0,后,(,30H,),=21H,。,注意:沒有,DEC DPTR,的,指令。可用,DEC DPL,指令,8,十進制調(diào)整指令,DA A,;把,A,中按二進制相加的結(jié)果調(diào)整成按,BCD,碼相加的結(jié)果,例如,,A=65BCD,,,B=78BCD,,,C=0,,,執(zhí)行下列