(1) 掌握數據傳送類(lèi)指令和功能
(2) 掌握各種數據指令的編程應用。
單片機IDE集成開(kāi)發(fā)軟件KEIL
驗證“實(shí)驗原理”一節中給出的實(shí)例程序,最基本、最主要的指令,共有29條,包括數據傳送、數據交換、棧操作三類(lèi)。目的單元為A時(shí)影響P標志。
作為軟件實(shí)驗,可以在沒(méi)有硬件及仿真儀的情況下,利用集成開(kāi)發(fā)環(huán)境進(jìn)行。
1、內部RAM間的數據傳送(16條)
(1)指令格式
指令格式:MOV [目的字節],[源字節]
功能:把源字節指定的變量傳送到目的字節指定的存儲單元中,源字節內容不變。
(2)操作數
操作數:A,Rn,direct,@Ri,DPTR,#data
傳送關(guān)系如下圖所示:

以A目的操作數
MOV A,Rn; (A)←(Rn)
以Rn為目的操作數
MOV Rn,direct; (Rn)←(direct)
以direct為目的操作數
MOV direct1,direct2; (direct1)←(direct2)
MOV direct, @Ri; (direct)←((Ri))
以@Ri為目的操作數
MOV @Ri, A; ((Ri))←(A)
MOV @Ri, #data;((Ri))← data
16位數據傳送指令
MOV DPTR, #data16;高8位送DPH,低8位送DPL
實(shí)驗內容3-1:設(70H)= 60H,(60H)=20H,
MOV R0, #70H
MOV A, @R0
MOV R1, A
MOV B, @R1
MOV @R0, P1
結果: (B) = ?
(R1) = ?
(R0) = ?
要求:掌握指令功能、查表求機器碼、尋址方式、結果
實(shí)驗內容3-2:給出下列指令的執行結果,指出源操作數的尋址方式。
MOV 20H, #25H
MOV 25H, #10H
MOV P1, #0CAH
MOV R0, #20H
MOV A, @R0
MOV R1, A
MOV B, @R1
MOV @R1,P1
MOV P3, R1
結果:
(20H)=?, (25H)=?, (P1)=?,
(R0)=?, (A)=?, (R1)=?,
(B)=?, (25H)=?, (P3)=?
2、ACC與外部數據存儲器(或擴展I/O口)傳遞數據MOVX
MOVX A, @DPTR
MOVX A, @Ri; 均為單字節指令 MOVX @DPTR, A
MOVX @Ri, A
功能:A與外部RAM或擴展I/O口數據的相互傳送。
說(shuō)明:
(1)用Ri進(jìn)行間接時(shí)只能尋址256個(gè)單元(0000H~00FF),當訪(fǎng)問(wèn)超過(guò)256個(gè)字節的外RAM空間時(shí),需利用P2口確定高8位地址(也稱(chēng)頁(yè)地址),而用DPTR進(jìn)行間址可訪(fǎng)問(wèn)整個(gè)64KB空間。
(2)在執行上述讀、寫(xiě)外RAM指令時(shí),P3.7(RD)、P3.6(WR)會(huì )相應自動(dòng)有效。
(3)可用作為擴展I/O口的輸入/輸出指令
實(shí)驗內容3-3:將外RAM 2010H中內容送外RAM 2020單元中。
分析:讀2010H中內容→A→寫(xiě)數據→2020H中
流程如右圖:
程序如下:
MOV P2,#20H ;輸出高8位地址
MOV R0,#10H ;置讀低8位間接地址
MOVX A,@R0 ;讀2010H中數據
MOV R1,#20H;置寫(xiě)低8位間接地址
MOVX @R1,A ;將A中數據寫(xiě)入2020H中
3、查表指令MOVC
表格:程序存儲器除存放程序外,還可存放一些常數,這種數據的結構稱(chēng)為表格。
訪(fǎng)問(wèn):通過(guò)兩條程序存儲器取數指令,即查表指令來(lái)訪(fǎng)問(wèn),完成從ROM中讀數,并只能送累加器A。
指令格式:
MOVC A,@A+DPTR;(A)←((A)+(DPTR))
MOVC A,@A+PC ;(PC)←(PC)+1,(A)←((A)+(PC))
特點(diǎn):?jiǎn)巫止澲噶?,源操作數為變址尋址,執行時(shí), PSEN會(huì )自動(dòng)有效。
功能:以DPTR、PC為基地址,與A中的8位無(wú)符號數相加,得到一個(gè)新16位地址,將其內容送A。
(1)用DPTR作為基寄存器
實(shí)驗內容3--4:設外部ROM的2000H單元開(kāi)始的連續10個(gè)字節中已存放有0~9的平方數,要求根據A中的內容(0~9)來(lái)查找對應的平方值。
START:MOV A, #3
MOV DPTR, #TABLE
MOVC A, @A+DPTR
ORG 2000H
TABLE:DB 0,1,4,9,16,25,36,49,64,81
結果:A ←?,(A)=?
特點(diǎn):可訪(fǎng)問(wèn)整個(gè)ROM的64KB空間,表格可放在ROM的任何位置,與MOVC指令無(wú)必然的關(guān)系。
(2)用PC作為基寄存器
實(shí)驗內容3-5:ORG 1000H
1000H MOV A,#30H;
1002H MOVC A,@A+PC;
結果是:A ←?
優(yōu)點(diǎn):不改變PC的狀態(tài),根據A的內容取表格常數。
缺點(diǎn):
(1)表格只能存放在查表指令以下的256個(gè)單元內。
(2)當表格首地址與本指令間有其他指令時(shí),須用調整偏移量,調整量為下一條指令的起始地址到表格首址之間的字節數。
實(shí)驗內容3-6:閱讀下列程序,給出運行結果 ,設(A)=3。
1000H ADD A,#02H ;加調整量
1002H MOVC A,@A+PC ;查表
1003H NOP
1004H NOP
1005H TAB: DB 66,77,88H,99H,‘W’,‘
結果:(A)=?
顯然,2條NOP指令沒(méi)有時(shí),不需調整。
4、堆棧操作
堆棧,由特殊功能寄存器SP(81H)管理,始終指向其棧頂位置,棧底視需要設在內部RAM低128B內。
(1)進(jìn)棧操作: PUSH direct
功能:先(SP) ←(SP)+ 1,再((SP))←(direct);
其中:direct為源操作數;目的操作數為@SP,隱含。
實(shí)驗內容3-7:已知:(A)=30H,(B)=70H
執行: MOV SP, #60H ;設棧底
PUSH ACC ;
PUSH B
結果:(61H)=?,(62H)=?,(SP)=?
(2)出棧操作: POP direct
功能:先(direct)←((SP)),再SP ←(SP)-1
其中:direct為目的操作數,源操作數為@SP,隱含。
實(shí)驗內容3-8:已知:(SP)=62H,(62H)=70H,(61H)=30H
執行: POP DPH
POP DPL
結果:(DPTR)=?,(SP)=?
5、與A的數據交換指令
數據交換指令共5條,完成累加器和內部RAM單元之間的字節或半字節交換。
(1)整字節交換:
XCH A,Rn ;(A)←→(Rn)
XCH A,direct ;(A)←→(direct)
XCH A,@Ri ;(A)←→((Ri))
(2)半字節交換:
XCHD A,@Ri ;(A)0~3←→((Ri))0~3
(3)累加器自身高低4位交換
SWAP A ;(A)7~4←→(A)3~0
實(shí)驗內容3-9 設(A)=57H,(20H)=68H,(R0)=30H,(30H)=39H,求下列指令的執行結果
(1)XCH A,20H;
結果:(A)=?,(20H)=?
(2)XCH A,@R0;
結果: (A)=?,(30H)=?
(3)XCH A,R0 ;
結果: (A)=?,(R0)=?
(4)XCHD A,@R0 ;
結果: (A)=?,(30H)=?
(5)SWAP A ;
結果: (A)=?

編寫(xiě)程序
1、分別編寫(xiě)調用程序,然后在開(kāi)發(fā)環(huán)境中編譯運行,寫(xiě)出實(shí)驗內容的結果
1、分別編寫(xiě)調用程序,然后在開(kāi)發(fā)環(huán)境中編譯運行,寫(xiě)出實(shí)驗內容的結果
2、給出各個(gè)程序的清單,要求有注釋。
3、MCS-51系列單片機有數據傳送指令?列出這些指令,并說(shuō)明其功能。
聯(lián)系客服