數(shù)據(jù)傳送指令_第1頁(yè)
數(shù)據(jù)傳送指令_第2頁(yè)
數(shù)據(jù)傳送指令_第3頁(yè)
數(shù)據(jù)傳送指令_第4頁(yè)
數(shù)據(jù)傳送指令_第5頁(yè)
已閱讀5頁(yè),還剩21頁(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)介

3.3MCS-51單片機(jī)的指令系統(tǒng) 按指令功能可將80C51分為以下五類:數(shù)據(jù)傳送類算術(shù)運(yùn)算類邏輯運(yùn)算與循環(huán)類控制轉(zhuǎn)移類位操作類3.3.1數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令共28條,功能是將源操作數(shù)送到目的處。指令執(zhí)行后,源操作數(shù)不變,目的操作數(shù)被源操作數(shù)取代。一般不影響PSW的標(biāo)志位。數(shù)據(jù)傳送類指令用到的助記符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8種。數(shù)據(jù)傳送指令是一種最基本最常用的操作,在通常的程序中占有極大的比例。可以進(jìn)行如下分類:★片內(nèi)數(shù)據(jù)傳送指令:MOV棧操作指令PUSHPOP交換指令XCHXCHDSWAP★片外程序存貯器傳送指令:MOVC★片外數(shù)據(jù)存貯器傳送指令:MOVX數(shù)據(jù)傳送指令操作域示意圖如下:片外程序存儲(chǔ)器ROMEPROM特殊功能寄存器SFR片內(nèi)RAM128字節(jié)片外數(shù)據(jù)存儲(chǔ)器RAMMOVCMOVXMOVPUSHPOPXCHXCHD

數(shù)據(jù)傳送指令操作域示意圖1.以A為目的操作數(shù)MOVA,Rn ;A←(Rn),n=0~7MOVA,direct ;A←(direct)MOVA,@Ri ;A←((Ri)),i=0、1MOVA,#data ;A←data上述指令是將源操作數(shù)指定的內(nèi)容送到累加器A中。上述操作只影響PSW的P標(biāo)志位。2.以Rn為目的操作數(shù)MOVRn,A ;Rn←(A)MOVRn,direct;Rn←(direct)MOVRn,#data ;Rn←#data上述指令是將源操作數(shù)指定的內(nèi)容送到當(dāng)前工作寄存器組R0—R7中的某個(gè)寄存器。例如:若(A)=68H,(R5)=3AH,(40H)=F8H,執(zhí)行以下每條指令后,R5中的內(nèi)容分別為:MOVR5,#0A3H;(R5)=A3HMOVR5,40H;(R5)=F8HMOVR5,A;(R5)=68H注:8051指令系統(tǒng)中沒有“MOVRn,Rn”傳送指令。3.以直接地址為目的操作數(shù)MOVdirect,A ;direct←(A)MOVdirect,Rn ;direct←(Rn)MOVdirect,direct;目的direct←(源direct)MOVdirect,@Ri ;direct←((Ri))

MOVdirect,#data;direct←#data上述指令是將源操作數(shù)指定的內(nèi)容送到由直接地址direct所指出的片內(nèi)存儲(chǔ)單元中。應(yīng)用舉例MOVP1,#0FEH;11111110B可以使P1.0上的發(fā)光二極管點(diǎn)亮MOVP1,#0F0H;11110000B可以使P1口上的上面4個(gè)發(fā)光二極管點(diǎn)亮P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.75v例如:若(A)=68H,(R1)=40H,(40H)=F8H,執(zhí)行以下每條指令后,片內(nèi)RAM字節(jié)單元60H中的內(nèi)容分別為:MOV60H,#0A3H;(60H)=A3HMOV60H,40H;(60H)=F8HMOV60H,A;(60H)=68HMOV60H,R1;(60H)=40HMOV60H,@R1;(60H)=F8H注:以上各條指令視為互相獨(dú)立。4.以間接地址為目的操作數(shù)MOV@Ri,A ;(Ri)←A,i=0、1

MOV@Ri,direct ;(Ri)←(direct)MOV@Ri,#data ;(Ri)←#data例如:設(shè)(30H)=6FH,(R1)=40H,MOV@R1,30H結(jié)果30H單元中數(shù)據(jù)取出送入R1間接尋址的40H單元,(40H)=6FH。內(nèi)部RAM間數(shù)據(jù)傳送路徑A累加器Direct直接尋址Rn寄存器#data立即數(shù)@Ri間接尋址5.以DPTR為目的操作數(shù)MOVDPTR,#data16;DPTR←#data16例如執(zhí)行MOVDPTR,#2000H后,(DPTR)=2000H。DPH←20H,DPL←00H這是唯一的16位立即數(shù)傳送指令,把16位常數(shù)送入DPTR,通常用于把16位地址送入DPTR。所以DPTR又稱為地址指針.6.訪問外部數(shù)據(jù)RAM

在8051指令系統(tǒng)中,訪問片外RAM只能用寄存器間接尋址,與累加器A配合,共四條指令。MOVXA,@Ri ;A←((Ri)),i=0、1MOVX@Ri,A ;(Ri)←A

尋址范圍是片外256BRAM。

MOVXA,@DPTR;A←((DPTR))MOVX@DPTR,A;(DPTR)←A

尋址范圍是片外64KBRAM。例如:若(R0)=26H,(0026H)=69H,則執(zhí)行指令“MOVXA,@R0”后,把片外數(shù)據(jù)存儲(chǔ)器0026H單元中的數(shù)據(jù)69H送入累加器A中;若(DPTR)=5620H,(A)=98H,則執(zhí)行指令“MOVX@DPTR,A”后,就將98H送入了片外數(shù)據(jù)存儲(chǔ)器地址為5620H的存儲(chǔ)單元中。7.讀ROM指令(查表指令)注:數(shù)據(jù)表格放在程序存儲(chǔ)器中(只有兩條指令)。①近程查表指令(256B)MOVCA,@A+PC;A←((A)+(PC))只能查找指令所在地址向前128B或向后127B范圍內(nèi)的常數(shù)或代碼。②遠(yuǎn)程查表指令(64KB)MOVCA,@A+DPTR ;A←((A)+(DPTR))查表范圍可達(dá)ROM的64KB空間。例如:在程序存儲(chǔ)器中,數(shù)據(jù)內(nèi)容為1010H:02H1011H:04H1012H:06H1013H:08H執(zhí)行程序1000H:MOVA,#0DH;A←#0DH,偏移量1002H:MOVCA,@A+PC;A←(0DH+1003H)1003H:MOVR0,A;R0←(A)結(jié)果為(A)=02H,(R0)=02H,(PC)=1004H

又如:在程序存儲(chǔ)器中,數(shù)據(jù)內(nèi)容為7010H:02H7011H:04H7012H:06H7013H:08H執(zhí)行程序1000H:MOVA,#10H;A←#10H,偏移量1002H:MOVDPTR,#7000H;DPTR←7000H1003H:MOVCA,@A+DPTR;A←(10H+7000H)

結(jié)果為(A)=02H8.?dāng)?shù)據(jù)交換l

字節(jié)交換XCHA,Rn ;A<=>Rn,n=0~7XCHA,direct ;A<=>(direct)XCHA,@Ri ;A<=>(Ri),i=0、1l

半字節(jié)交換XCHDA,@Ri ;A0~3<=>(Ri)0~3低4位互換,高4位不變。SWAPA ;A0~3<=>A4~7(高低兩半字節(jié)交換)注:上述交換指令的目的操作數(shù)均為累加器A。例:若(R0)=50H,(A)=3DH,(50H)=89H,執(zhí)行指令“XCHA,@R0”后,(A)=89H,(50H)=3DH。例:若(R0)=50H,(A)=3DH,(50H)=89H,執(zhí)行指令“XCHDA,@R0”后,(A)=39H,(50H)=8DH。例:若(A)=3DH,執(zhí)行指令“SWAPA”后,(A)=D3H。9.堆棧操作所謂堆棧是在片內(nèi)RAM中按“先進(jìn)后出”或“后進(jìn)先出”原則設(shè)置的專用存儲(chǔ)區(qū)。數(shù)據(jù)的進(jìn)棧出棧由指針SP統(tǒng)一管理。堆棧的操作有如下兩條專用指令:

PUSHdirect;SP←(SP)+1,(SP)←(direct)POPdirect;direct←((SP)),SP←(SP)-1PUSH是進(jìn)棧(或稱為壓入操作)指令。指令執(zhí)行過(guò)程如圖3-7所示。

POP是出棧(或稱為彈出操作)指令。指令執(zhí)行過(guò)程如圖3-8所示例如:指令PUSH60H,(60H)=26H,具體執(zhí)行過(guò)程:

①先將堆棧指針SP的內(nèi)容0FH加1,指向原棧頂上面的一個(gè)單元,此時(shí)(SP)=10H;②然后將指令指定的直接尋址單元60H中的數(shù)據(jù)26H送到新棧頂單元中。例如:指令POP50H,具體執(zhí)行過(guò)程:①先將SP所指單元0FH(棧頂?shù)刂罚┲械臄?shù)據(jù)49H彈出,送到指定的片內(nèi)RAM單元50H,(50H)=49H;②然后SP←(SP)-1,(SP)=0EH,SP指向新的棧頂單元。使用數(shù)據(jù)傳送類指令注意事項(xiàng):(1)一條指令中不能同時(shí)出現(xiàn)兩個(gè)工作寄存器。如以下指令非法:MOVR1,R2;MOVR2,@R0(2)訪問SFR只能直接尋址(個(gè)別也可用寄存器尋址),不能用寄存器間接尋址。如用以下指令訪問P0口無(wú)效(P0口的直接地址為80H):MOVR0,#80H; MOVA,@R0(3)片外數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器不能直接尋址。下列為非法指令:MOVXA,1000H;MOVX1100H,1200HMOVCA,2000H(4)只有指令表中存在的指令形式才有對(duì)應(yīng)的機(jī)器指令代碼,CPU才能執(zhí)行。編程時(shí),不能隨意發(fā)明創(chuàng)造指令,如以下指令非法:XCH50H,52H;MOV49H,@R2;MOVX@DPTR,50H【例】將片內(nèi)RAM30H單元與40H單元中的內(nèi)容互換。方法1(直接地址傳送法):MOV 31H,30HMOV 30H,40HMOV 40H,31HSJMP $方法2(間接地址傳送法):MOV R

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論