MCS51單片機指令系統(tǒng)數(shù)據(jù)傳送類指令課件_第1頁
MCS51單片機指令系統(tǒng)數(shù)據(jù)傳送類指令課件_第2頁
MCS51單片機指令系統(tǒng)數(shù)據(jù)傳送類指令課件_第3頁
MCS51單片機指令系統(tǒng)數(shù)據(jù)傳送類指令課件_第4頁
MCS51單片機指令系統(tǒng)數(shù)據(jù)傳送類指令課件_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

3.3.1數(shù)據(jù)傳送類指令(29條)對PSW的影響傳送類指令分成兩大類

1.MOV,一般傳送

2.非MOV,特殊傳送,

如:MOVC、MOVX、PUSH、POP、XCH、XCHD及SWAP。

3.3MCS-51指令系統(tǒng)3.3.1數(shù)據(jù)傳送類指令(29條)對PSW的影響傳送類11.訪問片內數(shù)據(jù)存儲器的一般數(shù)據(jù)傳送指令

該類指令的功能是實現(xiàn)數(shù)在片內RAM單元之間、寄存器之間、寄存器與RAM單元之間的傳送。所有指令具有統(tǒng)一的格式,其格式如下:MOV<目的操作數(shù)>,<源操作數(shù)>;目的操作數(shù)單元←源操作數(shù)(或單元)操作碼助記符都是"MOV",目的操作數(shù)和源操作數(shù)不同尋址方式的組合就派生出該類的全部指令。因此,記憶這類指令的關鍵在于掌握兩個操作數(shù)的各種尋址方式的組合關系。1.訪問片內數(shù)據(jù)存儲器的一般數(shù)據(jù)傳送指令2(1)16位傳送指令

將源操作數(shù)data16(通常是常數(shù))送入目的操作數(shù)DPTR中。

例MOVDPTR,#5678H

1.一般傳送指令

結果為:

(DPH)=56H,(DPL)=78H。MOVDPTR,#data16(1)16位傳送指令將源操作數(shù)d3

(2)8位傳送指令

注:(1)#data(立即數(shù))不能用作目的操作數(shù);2)源操作數(shù)與目的操作數(shù)不能相同(除direct外);3)寄存器尋址與寄存器及其間址間不能相互傳送。傳送關系目的操作數(shù)源操作數(shù)AARnRndirect1direct2@Ri@Ri#data…

(2)8位傳送指令注:(1)#data(4

1)以A為目的操作數(shù)的指令

例:若(R1)=30H,(30H)=68H執(zhí)行MOVA,@R1MOVA,Rndirect@Ri#data結果:(A)=68H。1)以A為目的操作數(shù)的指令52)以Rn

為目的操作數(shù)的指令

例:若(60H)=30H

執(zhí)行

MOVR6,60H

MOVRn,Adirect#data結果:(R6)=30H。2)以Rn為目的操作數(shù)的指令例:若63)以direct

為目的操作數(shù)的指令例:若(R0)=30H,(30H)=25H執(zhí)行MOV40H,@R0

指令結果:(40H)=25H。

MOVdirect,Rndirect1@Ri#dataA3)以direct為目的操作數(shù)的指令例:若(R0)=374)以@Ri為目的操作數(shù)的指令例若(R1)=56H,(A)=35H執(zhí)行MOV@R1,A指令

結果:(56H)=35HMOV@Ri,Adirect#data4)以@Ri為目的操作數(shù)的指令例若(R1)=568訪問片內RAM的一般傳送指令操作關系圖累加器ADirect直接地址Rn寄存器Data立即數(shù)@Ri間址訪問片內RAM的一般傳送指令操作關系圖累加器ADirect9例設內部RAM(30H)=40H,(40H)=10H,(10H)=00H(P1)=0CAH,分析以下程序執(zhí)行后各單元及寄存器、P2口的內容。

MOVR0,#30H MOVA,@R0 MOVR1,A MOVB,@R1 MOV@R1,P1 MOVP2,P1 MOV10H,#20H ;R0=30H;A=40H;R1=40H;B=10H;(40H)=0CAH;(P2)=0CAH;(10H)←20H執(zhí)行上述指令后的結果為:(R0)=30H,(R1)=(A)=40H,(B)=10H,(40H)=(P1)=(P2)=CAH,(10H)=20H。例設內部RAM(30H)=40H,(40H)=10H,(102.特殊傳送指令

訪問程序存儲器的數(shù)據(jù)傳送指令又稱作查表指令,采用基址寄存器加變址寄存器間接尋址方式,把程序存儲器中存放的表格數(shù)據(jù)讀出,傳送到累加器A。共有如下兩條單字節(jié)指令,指令操作碼助記符為MOVC。2.特殊傳送指令11

(1)ROM查表指令

2)MOVCA,@A+PC

以PC的當前值與偏移量之和作為程序存儲器地址,將該地址單元的內容傳送到A。指令執(zhí)行后PC的內容不變。

2.特殊傳送指令1)MOVCA,@A+DPTR以DPTR與偏移量之和作為程序存儲器地址,將該地址單元的內容傳送到A。指令執(zhí)行后DPTR的內容不變。(1)ROM查表指令2)MOVCA,12前一條指令采用DPTR作基址寄存器,因此可以很方便地把一個16位地址送到DPTR,實現(xiàn)在整個64KB程序存儲器單元到累加器A的數(shù)據(jù)傳送。即數(shù)據(jù)表格可以存放在程序存儲器64KB地址范圍的任何地方。后一條指令以PC作為基址寄存器,CPU取完該指令操作碼時PC會自動加1,指向下一條指令的第一個字節(jié)地址,即此時是用(PC)+1作為基址的。另外,由于累加器A中的內容為8位無符號數(shù),這就使得本指令查表范圍只能在256個字節(jié)范圍內(即(PC)+1H~(PC)+100H),使表格地址空間分配受到限制。同時編程時還需要進行偏移量的計算,即MOVCA,@A+PC指令所在地址與表格存放首地址間的距離字節(jié)數(shù)的計算,并需要一條加法指令進行地址調整。偏移量計算公式為:偏移量=表首地址-(MOVC指令所在地址+1)前一條指令采用DPTR作基址寄存器,因此可以很方便地把一個113例從片外程序存儲器2000H單元開始存放0~9的平方值,以DPTR作為基址寄存器進行查表得3的平方值。如果用以DPTR為基址寄存器的查表指令,其程序如下:MOVDPTR,#2000H;置表首地址MOVA,#03HMOVCA,@A+DPTR01491625364964812000H2001H2009H1FFDH1FFFH1FFEH例從片外程序存儲器2000H單元開始存放0~9的平方值,14設MOVC指令所在地址(PC)=1FFDH,則偏移量=2000H-(1FFDH+1)=02H。相應的程序如下:MOVA,#03H;(A)←03HADDA,#02H;用加法指令進行地址調整MOVCA,@A+PC;(A)←(A+PC+1)執(zhí)行結果為:(PC)=1FFEH,(A)=09。01491625364964812000H2001H2009H1FFDH1FFFH83H1FFEH設MOVC指令所在地址(PC)=1FFDH,則偏移量=20015

(2)讀、寫片外RAM

指令

MCS-51單片機CPU對片外擴展的數(shù)據(jù)存儲器RAM或I/O口進行數(shù)據(jù)傳送,必須采用寄存器間接尋址的方法,通過累加器A來完成。這類指令共有以下4條單字節(jié)指令,指令操作碼助記符都為MOVX。(2)讀、寫片外RAM指令

MCS-51單片機CP16

(2)讀、寫片外RAM

指令

1)讀片外RAMMOVXA,@DPTRMOVXA,@Ri2)寫片外RAMMOVX@DPTR,AMOVX@Ri,A(2)讀、寫片外RAM指令1)讀17例

設外部RAM(0203H)=0FFH,分析以下指令執(zhí)行后的結果。MOVDPTR,#0203HMOVXA,@DPTRMOV30H,A MOVA,#0FHMOVX@DPTR,A執(zhí)行結果為:(DPTR)=0203H,(30H)=FFH,(0203H)=(A)=0FH。例設外部RAM(0203H)=0FFH,分析以下指令執(zhí)18(3)堆棧操作指令

堆棧操作有進棧和出棧,即壓入和彈出數(shù)據(jù),常用于保存或恢復現(xiàn)場。進棧指令用于保存片內RAM單元(低128字節(jié))或特殊功能寄存器SFR的內容;出棧指令用于恢復片內RAM單元(低128字節(jié))或特殊功能寄存器SFR的內容。(3)堆棧操作指令堆棧操作有進棧和出棧,即壓入和彈19(3)堆棧操作指令

3)操作指令

PUSHdirect

POPdirect1)原則:向地址高端生長,后進先出2)SP:指向棧頂(活動端),復位值07H例若(SP)=07H,(40H)=88H執(zhí)行PUSH40H指令結果:(SP)=08H,(08H)=88H。(3)堆棧操作指令3)操作指令1)原則20(4)數(shù)據(jù)交換指令

數(shù)據(jù)傳送指令一般都是將操作數(shù)自源地址單元傳送到目的地址單元,指令執(zhí)行后,源地址單元的操作數(shù)不變,目的地址單元的操作數(shù)則修改為源地址單元的操作數(shù)。交換指令數(shù)據(jù)作雙向傳送,涉及傳送的雙方互為源地址、目的地址,指令執(zhí)行后每方的操作數(shù)都修改為另一方的操作數(shù)。數(shù)據(jù)交換指令共有如下5條指令:(4)數(shù)據(jù)交換指令數(shù)據(jù)傳送指令一般都是21(4)數(shù)據(jù)交換指令例若(R0)=67H,(A)=45H。執(zhí)行XCHA,R0指令

交換類指令,傳送是雙向的

1)

字節(jié)交換指令XCHA,Rndirect@Ri結果:(A)=67H,(R0)=45H。(4)數(shù)據(jù)交換指令例若(R0)=67H,(A)=4222)半字節(jié)交換指令

例:若(R0)=30H,(30H)=67H,(A)=20H。執(zhí)行XCHDA,@R0后,(A)=27H,(30H)=60H。

XCHDA,@RiSWAPA例若(A)=30H,執(zhí)行SWAPA后,(A)=03H。2)半字節(jié)交換指令例:若(R0)=30H23練習題題1答題2答題3答題4答題5答試按下列要求傳送數(shù)據(jù)1.將R5中的數(shù)據(jù)傳送到50H。2.將R7中的數(shù)據(jù)傳送到R6。3.將立即數(shù)40H傳送到以R0中內容為地址的存儲單元中。4.將片外RAM50H中的數(shù)據(jù)傳送到片內RAM40H單元中。5.將R1中的數(shù)據(jù)傳送到以R0中內容為地址的存儲單元中。練習題題1答題2答題3答題4答題5答試按下列要求傳送數(shù)據(jù)24MOV50H,R5題1答MOV50H,R5題1答25題2答MOVA,R7MOVR6,A題2答MOVA,R726MOVA,#40HMOV@R0,A

題3答MOVA,#40H題3答27

題4答MOVR0,#50HMOVXA,@R0MOV40H,A題4答MOVR0,#50H28MOVA,R1MOV@R0,A題5答MOVA,R1題5答29表3.2數(shù)據(jù)傳送類指令一覽表表3.2數(shù)據(jù)傳送類指令一覽表30表3.2數(shù)據(jù)傳送類指令一覽表(續(xù))表3.2數(shù)據(jù)傳送類指令一覽表(續(xù))31作業(yè)1變址尋址和相對尋址中的地址偏移量有何異同?2.寫出能完成下列數(shù)據(jù)傳送的指令R1的內容傳送到R0內部RAM20H單元中的內容送到30H單元外部RAM2000H單元中的內容送到內部RAM20H單元外部ROM2000H單元中的內容送到內部RAM20H單元外部ROM2000H單元中的內容送到外部RAM3000H單元作業(yè)1變址尋址和相對尋址中的地址偏移量有何異同?323MOVDPTR,#2000HMOVXA,@DPTRMOV20H,A4MOVDPTR,#2000HMOVA,#00HMOVCA,@DPTR+AMOV20H,AMOVDPTR,#3000HMOVX@DPTR,A3MOVDPTR,#2000H33已知(20H)=X,(21H)=Y,(22H)=Z請用圖示說明下列程序執(zhí)行后堆棧中的內容是什么?MOVSP,#70HPUSH20HPUSH21HPUSH22HMOVSP,#60HPUSH22HPUSH21HPUSH20H已知(20H)=X,(21H)=Y,(22H)=Z請用圖示說343.3.1數(shù)據(jù)傳送類指令(29條)對PSW的影響傳送類指令分成兩大類

1.MOV,一般傳送

2.非MOV,特殊傳送,

如:MOVC、MOVX、PUSH、POP、XCH、XCHD及SWAP。

3.3MCS-51指令系統(tǒng)3.3.1數(shù)據(jù)傳送類指令(29條)對PSW的影響傳送類351.訪問片內數(shù)據(jù)存儲器的一般數(shù)據(jù)傳送指令

該類指令的功能是實現(xiàn)數(shù)在片內RAM單元之間、寄存器之間、寄存器與RAM單元之間的傳送。所有指令具有統(tǒng)一的格式,其格式如下:MOV<目的操作數(shù)>,<源操作數(shù)>;目的操作數(shù)單元←源操作數(shù)(或單元)操作碼助記符都是"MOV",目的操作數(shù)和源操作數(shù)不同尋址方式的組合就派生出該類的全部指令。因此,記憶這類指令的關鍵在于掌握兩個操作數(shù)的各種尋址方式的組合關系。1.訪問片內數(shù)據(jù)存儲器的一般數(shù)據(jù)傳送指令36(1)16位傳送指令

將源操作數(shù)data16(通常是常數(shù))送入目的操作數(shù)DPTR中。

例MOVDPTR,#5678H

1.一般傳送指令

結果為:

(DPH)=56H,(DPL)=78H。MOVDPTR,#data16(1)16位傳送指令將源操作數(shù)d37

(2)8位傳送指令

注:(1)#data(立即數(shù))不能用作目的操作數(shù);2)源操作數(shù)與目的操作數(shù)不能相同(除direct外);3)寄存器尋址與寄存器及其間址間不能相互傳送。傳送關系目的操作數(shù)源操作數(shù)AARnRndirect1direct2@Ri@Ri#data…

(2)8位傳送指令注:(1)#data(38

1)以A為目的操作數(shù)的指令

例:若(R1)=30H,(30H)=68H執(zhí)行MOVA,@R1MOVA,Rndirect@Ri#data結果:(A)=68H。1)以A為目的操作數(shù)的指令392)以Rn

為目的操作數(shù)的指令

例:若(60H)=30H

執(zhí)行

MOVR6,60H

MOVRn,Adirect#data結果:(R6)=30H。2)以Rn為目的操作數(shù)的指令例:若403)以direct

為目的操作數(shù)的指令例:若(R0)=30H,(30H)=25H執(zhí)行MOV40H,@R0

指令結果:(40H)=25H。

MOVdirect,Rndirect1@Ri#dataA3)以direct為目的操作數(shù)的指令例:若(R0)=3414)以@Ri為目的操作數(shù)的指令例若(R1)=56H,(A)=35H執(zhí)行MOV@R1,A指令

結果:(56H)=35HMOV@Ri,Adirect#data4)以@Ri為目的操作數(shù)的指令例若(R1)=5642訪問片內RAM的一般傳送指令操作關系圖累加器ADirect直接地址Rn寄存器Data立即數(shù)@Ri間址訪問片內RAM的一般傳送指令操作關系圖累加器ADirect43例設內部RAM(30H)=40H,(40H)=10H,(10H)=00H(P1)=0CAH,分析以下程序執(zhí)行后各單元及寄存器、P2口的內容。

MOVR0,#30H MOVA,@R0 MOVR1,A MOVB,@R1 MOV@R1,P1 MOVP2,P1 MOV10H,#20H ;R0=30H;A=40H;R1=40H;B=10H;(40H)=0CAH;(P2)=0CAH;(10H)←20H執(zhí)行上述指令后的結果為:(R0)=30H,(R1)=(A)=40H,(B)=10H,(40H)=(P1)=(P2)=CAH,(10H)=20H。例設內部RAM(30H)=40H,(40H)=10H,(442.特殊傳送指令

訪問程序存儲器的數(shù)據(jù)傳送指令又稱作查表指令,采用基址寄存器加變址寄存器間接尋址方式,把程序存儲器中存放的表格數(shù)據(jù)讀出,傳送到累加器A。共有如下兩條單字節(jié)指令,指令操作碼助記符為MOVC。2.特殊傳送指令45

(1)ROM查表指令

2)MOVCA,@A+PC

以PC的當前值與偏移量之和作為程序存儲器地址,將該地址單元的內容傳送到A。指令執(zhí)行后PC的內容不變。

2.特殊傳送指令1)MOVCA,@A+DPTR以DPTR與偏移量之和作為程序存儲器地址,將該地址單元的內容傳送到A。指令執(zhí)行后DPTR的內容不變。(1)ROM查表指令2)MOVCA,46前一條指令采用DPTR作基址寄存器,因此可以很方便地把一個16位地址送到DPTR,實現(xiàn)在整個64KB程序存儲器單元到累加器A的數(shù)據(jù)傳送。即數(shù)據(jù)表格可以存放在程序存儲器64KB地址范圍的任何地方。后一條指令以PC作為基址寄存器,CPU取完該指令操作碼時PC會自動加1,指向下一條指令的第一個字節(jié)地址,即此時是用(PC)+1作為基址的。另外,由于累加器A中的內容為8位無符號數(shù),這就使得本指令查表范圍只能在256個字節(jié)范圍內(即(PC)+1H~(PC)+100H),使表格地址空間分配受到限制。同時編程時還需要進行偏移量的計算,即MOVCA,@A+PC指令所在地址與表格存放首地址間的距離字節(jié)數(shù)的計算,并需要一條加法指令進行地址調整。偏移量計算公式為:偏移量=表首地址-(MOVC指令所在地址+1)前一條指令采用DPTR作基址寄存器,因此可以很方便地把一個147例從片外程序存儲器2000H單元開始存放0~9的平方值,以DPTR作為基址寄存器進行查表得3的平方值。如果用以DPTR為基址寄存器的查表指令,其程序如下:MOVDPTR,#2000H;置表首地址MOVA,#03HMOVCA,@A+DPTR01491625364964812000H2001H2009H1FFDH1FFFH1FFEH例從片外程序存儲器2000H單元開始存放0~9的平方值,48設MOVC指令所在地址(PC)=1FFDH,則偏移量=2000H-(1FFDH+1)=02H。相應的程序如下:MOVA,#03H;(A)←03HADDA,#02H;用加法指令進行地址調整MOVCA,@A+PC;(A)←(A+PC+1)執(zhí)行結果為:(PC)=1FFEH,(A)=09。01491625364964812000H2001H2009H1FFDH1FFFH83H1FFEH設MOVC指令所在地址(PC)=1FFDH,則偏移量=20049

(2)讀、寫片外RAM

指令

MCS-51單片機CPU對片外擴展的數(shù)據(jù)存儲器RAM或I/O口進行數(shù)據(jù)傳送,必須采用寄存器間接尋址的方法,通過累加器A來完成。這類指令共有以下4條單字節(jié)指令,指令操作碼助記符都為MOVX。(2)讀、寫片外RAM指令

MCS-51單片機CP50

(2)讀、寫片外RAM

指令

1)讀片外RAMMOVXA,@DPTRMOVXA,@Ri2)寫片外RAMMOVX@DPTR,AMOVX@Ri,A(2)讀、寫片外RAM指令1)讀51例

設外部RAM(0203H)=0FFH,分析以下指令執(zhí)行后的結果。MOVDPTR,#0203HMOVXA,@DPTRMOV30H,A MOVA,#0FHMOVX@DPTR,A執(zhí)行結果為:(DPTR)=0203H,(30H)=FFH,(0203H)=(A)=0FH。例設外部RAM(0203H)=0FFH,分析以下指令執(zhí)52(3)堆棧操作指令

堆棧操作有進棧和出棧,即壓入和彈出數(shù)據(jù),常用于保存或恢復現(xiàn)場。進棧指令用于保存片內RAM單元(低128字節(jié))或特殊功能寄存器SFR的內容;出棧指令用于恢復片內RAM單元(低128字節(jié))或特殊功能寄存器SFR的內容。(3)堆棧操作指令堆棧操作有進棧和出棧,即壓入和彈53(3)堆棧操作指令

3)操作指令

PUSHdirect

POPdirect1)原則:向地址高端生長,后進先出2)SP:指向棧頂(活動端),復位值07H例若(SP)=07H,(40H)=88H執(zhí)行PUSH40H指令結果:(SP)=08H,(08H)=88H。(3)堆棧操作指令3)操作指令1)原則54(4)數(shù)據(jù)交換指令

數(shù)據(jù)傳送指令一般都是將操作數(shù)自源地址單元傳送到目的地址單元,指令執(zhí)行后,源地址單元的操作數(shù)不變,目的地址單元的操作數(shù)則修改為源地址單元的操作數(shù)。交換指令數(shù)據(jù)作雙向傳送,涉及傳送的雙方互為源地址、目的地址,指令執(zhí)行后每方的操作數(shù)都修改為另一方的操作數(shù)。數(shù)據(jù)交換指令共有如下5條指令:(4)數(shù)據(jù)交換指令數(shù)據(jù)傳送指令一般都是55(4)數(shù)據(jù)交換指令例若(R0)=67H,(A)=45H。執(zhí)行XCHA,R0指令

交換類指令,傳送是雙向的

1)

字節(jié)交換指令XCHA,Rndirect@Ri結果:(A)=67H,(R0)=45H。(4)數(shù)據(jù)交換指令例若(R0)=67H,(A)=4562)半字節(jié)交換指令

例:若(R0)=30H,(30H)=67H,(A)=20H。執(zhí)行XCHDA,@R0后,(A)=27H,(30H)=60H。

XCHDA,@RiSWAP

溫馨提示

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

最新文檔

評論

0/150

提交評論