單片機(jī) 第三講指令介紹.ppt_第1頁
單片機(jī) 第三講指令介紹.ppt_第2頁
單片機(jī) 第三講指令介紹.ppt_第3頁
單片機(jī) 第三講指令介紹.ppt_第4頁
單片機(jī) 第三講指令介紹.ppt_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、,微機(jī)原理及應(yīng)用,第三章MCS-51指令系統(tǒng),本章是全書的重點(diǎn),是匯編語言程序設(shè)計(jì)的基礎(chǔ)。,學(xué)習(xí)指令系統(tǒng)重點(diǎn)要掌握以下幾點(diǎn):1、指令功能2、尋址方式3、操作數(shù)的位數(shù)和存儲(chǔ)結(jié)構(gòu)4、對(duì)PSW的影響5、指令與存儲(chǔ)區(qū)的對(duì)應(yīng)關(guān)系6、各類指針及其指向的地址范圍7、轉(zhuǎn)移指令的轉(zhuǎn)移范圍8、指令字節(jié)數(shù)和機(jī)器周期數(shù),本章主要介紹單片機(jī)的尋址方式及指令系統(tǒng),是必須掌握的內(nèi)容。一臺(tái)計(jì)算機(jī)所有指令的集合,稱為該計(jì)算機(jī)的指令系統(tǒng)。各種計(jì)算機(jī)都有專用的指令系統(tǒng)。,第三章單片機(jī)的指令系統(tǒng),第三章單片機(jī)的指令系統(tǒng),3.1MCS-51指令系統(tǒng)概述3.2尋址方式3.3MCS-51單片機(jī)的指令系統(tǒng),3.1MCS-51指令系統(tǒng)概述,3

2、.1.1指令格式3.1.2指令字長(zhǎng)和指令周期3.1.3指令分類,匯編語言指令格式機(jī)器語言指令格式,3.1.1指令格式,一條用助記符表示的匯編語言指令,操作碼,操作數(shù),指令的功能,指令的操作對(duì)象,ADDA,#10H;ADD為操作碼,A及#10H為操作數(shù),匯編語言指令,匯編語言指令格式,標(biāo)號(hào):操作碼助記符目的操作數(shù),源操作數(shù);注釋例如:Loop:MOVA,R0;(R0)-(A),機(jī)器語言指令格式,雙字節(jié):,單字節(jié):,操作碼,操作碼操作數(shù)或?qū)ぶ贩绞?操作碼,操作數(shù)或?qū)ぶ贩绞?例:ADDA,#10H,或,指令字長(zhǎng)有三種:?jiǎn)巫止?jié)RET雙字節(jié)MOVA,#68H三字節(jié)MOV30H,46H,3.1.2指令字長(zhǎng)

3、和指令周期,指令周期是指執(zhí)行一條指令所需要的時(shí)間1機(jī)器周期指令2機(jī)器周期指令4機(jī)器周期指令,附表P103,117,3.1.3指令分類,按指令功能分類,按指令字長(zhǎng)分類,按指令執(zhí)行時(shí)間分類,3.2尋址方式,尋址方式:7種寄存器尋址直接尋址寄存器間接尋址立即尋址變址間接尋址相對(duì)尋址位尋址尋址方式與尋址空間MCS-51單片機(jī)的兩個(gè)突出特點(diǎn),尋址:1、尋找操作數(shù)2、為PC指針尋找目標(biāo)地址,尋址方式:計(jì)算機(jī)確定操作數(shù)或下一條指令地址的方法,寄存器尋址操作數(shù)存放在寄存器中,MOVA,R0MOVR0,#01001111B,工作寄存器(00H1FH)RS1RS0寄存器組片內(nèi)RAM地址寄存器00第0組00H07H

4、R0R701第1組08H0FHR0R710第2組10H17HR0R711第3組18H1FHR0R7,SETBRS0MOVR3,#56H,寄存器為R0R7,A,DPTR,C,例如:MOVA,R3;機(jī)器碼為EBH指令功能是把當(dāng)前R3中的操作數(shù)送累加器A。指令執(zhí)行示意圖如圖所示。設(shè)(R3)=12H,直接尋址指令中直接給出操作數(shù)的地址,功能最強(qiáng),可訪問種地址空間內(nèi)部數(shù)據(jù)存儲(chǔ)器地址空間():MOVA,00HMOV30H,20H特殊功能寄存器地址空間,唯一方式MOVA,90HMOVA,B位地址空間MOVC,00H,例:MOVA,30H;機(jī)器碼為E530H指令功能是把直接地址30H單元的內(nèi)容送累加器A,即(

5、30H)(A)如圖31所示。,34H,34H,寄存器間接尋址,將指定的寄存器的內(nèi)容為地址,由該地址所指定的單元內(nèi)容作為操作數(shù)。movA,R0,(R0)=31H,(R0)=(31H),(A)=02H,指針,例如:MOVA,R1;機(jī)器碼E7H設(shè)(R1)=60H,(60H)=50H,執(zhí)行結(jié)果(A)=50H,該指令執(zhí)行過程如圖34所示。,立即尋址在指令中直接給出操作數(shù),例:MOVA,#7Ah;747AH把立即數(shù)7AH送累加器A,指令執(zhí)行示意圖如圖所示。,例:MOVDPTR,#1234H(DPH)=12H(DPL)=34H,注意:立即數(shù)前加“#”號(hào),以區(qū)別直接地址。例如:MOVA,#30H;(A)30H

6、MOVA,30H;(A)(30H),變址間接尋址,基址寄存器變址寄存器的間接尋址方式DPTR/PCAMOVCA,A+DPTR(A)(DPTR)+(A)MOVCA,A+PC(A)(PC)+(A)JMPA+DPTR(PC)=(A)+(DPTR),MOVCA,A+PC;83H設(shè)執(zhí)行指令之前(A)=50H指令功能是把該指令當(dāng)前地址PC值與A累加器內(nèi)容相加形成操作碼地址3F51H,3F51H中的內(nèi)容37H送A累加器。,PC當(dāng)前值,相對(duì)尋址,以當(dāng)前的PC值為基準(zhǔn),加上指令中給出的相對(duì)偏移量(rel)形成有效的轉(zhuǎn)移地址。jcLoop;,rel,補(bǔ)碼-128,127,JCrel;4085H設(shè)rel=85H,C

7、y=1,目標(biāo)地址,PC當(dāng)前值,位尋址bit,位尋址范圍:1、內(nèi)部RAM的位尋址區(qū),共16個(gè)單元的128位,字節(jié)地址為20H2FH,位地址為00H7FH??捎弥苯游坏刂坊蜃止?jié)地址加位的表示方法。,例如:MOVC,7AH或MOVC,2FH2,2、特殊功能寄存器SFR可供位尋址的專用寄存器共11個(gè),實(shí)有位地址位83位。位地址有4種表達(dá)方式。以對(duì)程序狀態(tài)寄存器PSW輔助進(jìn)位位AC進(jìn)行操作為例:PSWCyACF0RS1RS0OVPD0HD7HD6HD0H,1)直接使用位地址3)單元地址加位的表示法MOVC,0D6HMOVC,0D0H62)位名稱表示法4)專用寄存器符號(hào)加位的表示法MOVC,ACMOVC,

8、PSW6,尋址方式與尋址空間,1、內(nèi)部數(shù)據(jù)存儲(chǔ)器的尋址方式1)00H1FH寄存器尋址4組R0R7Rn直接尋址direct寄存器間接尋址R0,R1例:(01H)(02H)MOV02H,01H;源尋址和目的尋址均為直接尋址MOVR2,01H;源尋址為直接尋址,目的尋址為寄存器尋址MOVR0,#01HMOV02H,R0;源尋址為寄存器間接尋址,目的尋址為直接尋址,內(nèi)部數(shù)據(jù)存儲(chǔ)器與內(nèi)部I/O口統(tǒng)一編址,T1,2)20H2FH可位尋址區(qū)的尋址方式字節(jié)尋址方式:直接尋址direct寄存器間接尋址R0,R1位尋址:bit直接尋址例:MOV26H,C;位尋址(26H)1位MOV26H,A;字節(jié)尋址(26H)8

9、位,3)30H7FH數(shù)據(jù)緩沖區(qū)的尋址方式字節(jié)尋址方式:直接尋址direct寄存器間接尋址R0,R1例:MOV56H,A;字節(jié)尋址(56H)8位MOVR0,#66HMOVR0,#56H可以將用戶堆棧設(shè)在該區(qū)內(nèi),堆棧指針SP,2、SFR及I/O口的操作只能直接尋址例:P1口90HMOVA,90HMOVA,P1MOVP1,A3、關(guān)于A累加器有兩種尋址方式:MOVA,#23H;A寄存器尋址PUSHACCPOP0E0H,;直接尋址,統(tǒng)一編址,4、可做片內(nèi)RAM的指針有:R0,R1,四個(gè)組共有8個(gè)預(yù)先設(shè)置RS1、RS0,以選定組。SETBRS0CLRRS1;1組MOVR0,#34H;R0的地址是?SETB

10、RS1;3組MOVR0,#68H;R0的地址是?R0/R1指向的地址范圍:00H7FH,片外數(shù)據(jù)存儲(chǔ)區(qū)和外部擴(kuò)展的I/O口的尋址方式指針:R0,R18位DPTR16位指令助記符:MOVX例:MOVDPTR,#2000HMOVA,#34HMOVXDPTR,A,MOVP2,#20HMOVR0,#00HMOVA,#34HMOVXR0,A,外部數(shù)據(jù)存儲(chǔ)器的地址,或I/O口的地址16位,只能寄存器間接尋址,或,高8位地址,低8位地址,統(tǒng)一編址,R0/R1指向的地址范圍:00H0FFH,T2,3.3MCS-51單片機(jī)的指令系統(tǒng),指令描述符號(hào)簡(jiǎn)介指令分類:數(shù)據(jù)傳送類指令(29)傳送類指令舉例算術(shù)運(yùn)算類指令(

11、24)邏輯運(yùn)算類指令(24)控制轉(zhuǎn)移類指令(17)布爾處理類指令(17),指令描述符號(hào)(1),Rn-R0R7工作寄存器R0R7,n=07direct-8位直接地址,表示直接尋址方式Ri-只能是R0或R1,所以i=0,1#data-8位立即數(shù),數(shù)據(jù)范圍00HFFH#data16-16位立即數(shù),數(shù)據(jù)范圍0000HFFFFHaddr16-16位目標(biāo)地址addr11-低11位目標(biāo)地址,指令描述符號(hào)(2),rel8位帶符號(hào)地址偏移量,-128,127補(bǔ)碼bit位地址$當(dāng)前指令地址()(),數(shù)據(jù)傳送類指令(1)內(nèi)部,A累加器,direct直接尋址,Ri間接尋址,Rn寄存器,data立即數(shù),數(shù)據(jù)傳送類指令(

12、2),movA,Rn;(A)(Rn)n=07movA,direct;(A)(direct)movA,Ri;(A)(Ri)i=0,1movA,#data;(A)#datamovRn,A;(Rn)(A)movRn,direct;(Rn)(direct)movRn,#data;(Rn)#data,數(shù)據(jù)傳送類指令(3),movdirect,A;(direct)(A)movdirect,Rn;(direct)(Rn)n=07movdirect,direct;(direct)(direct)movdirect,Ri;(direct)(Ri)i=0,1movdirect,#data;(direct)#dat

13、amovRi,A;(Ri)(A)movRi,direct;(Ri)(direct)movRi,#data;(Ri)#data,MOVR1,R0,MOVR3,R0,MOVR1,R0,MOVR1,R0,數(shù)據(jù)傳送類指令(4)交換指令,XCHA,Rn;(A)(Rn)n=07XCHA,direct;(A)(direct)XCHA,Ri;(A)(Ri)i=0,1XCHDA,Ri;(A03)(Ri)03)SWAPA;(A03)(A47),popdirect;(direct)(sp),(sp)(sp)-1pushdirect;(sp)(sp)+1,(sp)(direct),數(shù)據(jù)傳送類指令(5)堆棧操作,1、堆

14、棧一種數(shù)據(jù)結(jié)構(gòu),是“先進(jìn)后出”線性表。2、堆棧操作:壓入PUSH,彈出POP3、堆棧區(qū):占片內(nèi)RAM中連續(xù)的存儲(chǔ)單元復(fù)位后,系統(tǒng)自動(dòng)將SP指針指向07H用戶可將堆棧區(qū)設(shè)在30H7FH數(shù)據(jù)緩沖區(qū)內(nèi),MOVSP,#5FH,堆棧有兩種類型:向上生長(zhǎng)型和向下生長(zhǎng)型,如圖2-5所示。向上生長(zhǎng)型堆棧,棧底在低地址單元。隨著數(shù)據(jù)進(jìn)棧,地址遞增,SP的內(nèi)容越來越大,指針上移;反之,隨著數(shù)據(jù)的出棧,地址遞減,SP的內(nèi)容越來越小,指針下移。如(b)圖所示。,棧頂,棧頂,MCS-51屬向上生長(zhǎng)型堆棧,這種堆棧的操作規(guī)則如下:進(jìn)棧操作:先SP加1,后寫入數(shù)據(jù)。出棧操作:先讀出數(shù)據(jù),SP減1。,向下生長(zhǎng)型堆棧,棧底設(shè)在

15、高地址單元。隨著數(shù)據(jù)進(jìn)棧,地址遞減,SP內(nèi)容越來越小,指針下移;反之,隨著數(shù)據(jù)的出棧,地址遞增,SP內(nèi)容越來越大,指針上移。其堆棧操作規(guī)則與向上生長(zhǎng)型正好相反。如(a)圖所示。,堆棧的使用有兩種方式:一種是自動(dòng)方式,即在調(diào)用子程序或斷點(diǎn)時(shí),斷點(diǎn)地址自動(dòng)進(jìn)棧。程序返回時(shí),斷點(diǎn)地址再自動(dòng)彈回PC。這種操作無需用戶干預(yù)。另一種是指令方式,即使用專用的堆棧操作指令,執(zhí)行進(jìn)出棧操作,其進(jìn)棧指令為PUSH,出棧指令為POP。例如:保護(hù)現(xiàn)場(chǎng)就是一系列指令方式的進(jìn)棧操作;而恢復(fù)現(xiàn)場(chǎng)則是一系列指令方式的出棧操作。需要保護(hù)多少數(shù)據(jù)由用戶決定。,POP01HPOPPSWPOPACC,PUSHACCPUSHPSWPU

16、SH01H,保護(hù)現(xiàn)場(chǎng):,恢復(fù)現(xiàn)場(chǎng):,.,數(shù)據(jù)傳送類指令(6)外部,movxA,Ri;(A)(Ri)i=0,1movxA,DPTR;(A)(DPTR)movxRi,A;(Ri)(A)movxDPTR,A;(DPTR)(A)movcA,A+DPTR;(A)(A)+(DPTR)movcA,A+PC;(PC)(PC)+1,(A)(A)+(PC),movDPTR,#data16;(DPTR)#data16,內(nèi)部16位,外部數(shù)據(jù),外部程序,傳送類指令舉例:例31已知(R0)=30H,問執(zhí)行如下程序,A、R4、30H和31H單元的內(nèi)容是什么。MOVA,#10HMOVR4,#36HMOVR0,#7AHMOV3

17、1H,#01H解:8031執(zhí)行上述指令后的結(jié)果為:,(A)=10H(R4)=36H(30H)=7AH(31H)=01H,例32設(shè)內(nèi)部RAM中30H單元的內(nèi)容為40H,40H單元的內(nèi)容為10H,P1口作輸入口,其輸入數(shù)據(jù)為0CAH,程序及執(zhí)行后的結(jié)果如下:MOVR0,#30H;單元地址30H送R0中MOVA,R0;R0間址,將30H單元內(nèi)容送AMOVR1,A;A送R1MOVB,R1;R1間址,將40H單元內(nèi)容送BMOVR1,P1;將P1內(nèi)容送40H單元MOVP2,P1;將P1內(nèi)容送P2執(zhí)行結(jié)果:(R0)=30H,(R1)=40H,(A)=40H,(B)=10H,(P1)=0CAH(40H)=0C

18、AH,(P2)=0CAH,例33已知片外RAM的70H單元中的一個(gè)數(shù)X,需送到片外RAM的1010H單元,試編寫程序。解:ORG1000HMOVR0,#70HMOVDPTR,#1010HMOVXA,R0MOVXDPTR,ASJMP$END,外部RAM之間不能直接傳送數(shù)據(jù),必須通過累加器A傳送,MOVXDPTR,R0,例35設(shè)(30H)=X,(40H)=Y,試?yán)枚褩^(qū)域?qū)崿F(xiàn)30H和40H單元中的數(shù)據(jù)交換。解:堆棧區(qū)是片內(nèi)RAM的一個(gè)數(shù)據(jù)區(qū),進(jìn)棧和出棧的數(shù)據(jù)符合“先進(jìn)后出”的原則。MOVSP,#50H;設(shè)棧底(棧底不存數(shù))PUSH40H;(51H)(40H)PUSH30H;(52H)(30H)P

19、OP40H;(40H)(52H)POP30H;(30H)(51H),沒講,例36已知外部RAM2020H單元中有一個(gè)數(shù)X,內(nèi)部RAM20H單元一個(gè)數(shù)Y,試編出可以使它們互相交換的程序。解:MOVP2,#20HMOVR1,#20HMOVXA,R1XCHA,R1MOVXR1,ASJMP$END,指向內(nèi)部RAM20H單元,指向外部RAM2020H單元,例37已知片內(nèi)50H單元中有一個(gè)09的數(shù),試編程把它變?yōu)橄鄳?yīng)的ASCII碼的程序。解:因?yàn)?9的ASCII碼為3039H程序如下:MOVR0,#50HMOVA,#30HXCHDA,R0MOVR0,ASJMP$END,50H,A,R0,例38把01H單元

20、內(nèi)容送02H單元,有幾種不同的實(shí)現(xiàn)方法。MOV02H,01H;直接尋址3字節(jié)2周期MOVA,01H;直接尋址+寄存器尋址MOV02H,A;4字節(jié)2周期MOVA,R1;寄存器尋址2字節(jié)2周期MOVR2,AMOVR0,#01H;4字節(jié)3周期MOV02H,R0;間接尋址PUSH01H;棧操作4字節(jié)4周期POP02H第三種方法占存儲(chǔ)空間少,執(zhí)行周期短。,算術(shù)運(yùn)算類指令,程序狀態(tài)字PSW加法指令減法指令乘/除指令,Cy:進(jìn)位標(biāo)志;布爾累加器AC:輔助進(jìn)位標(biāo)志(半進(jìn)位)F0:用戶標(biāo)志RS1/RS0:寄存器選擇OV:溢出標(biāo)志P:奇偶標(biāo)志,程序狀態(tài)字PSW,加法指令,不帶進(jìn)位的加法指令帶進(jìn)位的加法指令加1指令二-十進(jìn)制調(diào)整

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論