版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
3.1單片機(jī)指令系統(tǒng)概述
3.2尋址方式
3.3數(shù)據(jù)傳送類指令
3.4算術(shù)運(yùn)算類指令
3.5邏輯運(yùn)算及移位指令
3.6控制轉(zhuǎn)移類指令
3.7子程序調(diào)用和返回指令
3.8位操作類指令
3.9匯編程序格式與偽指令
習(xí)題三第三章AT89S52單片機(jī)指令系統(tǒng)3.1.1指令、指令系統(tǒng)的概念
指令是計(jì)算機(jī)內(nèi)部具有特殊功能的操作命令。
3.1.2單片機(jī)指令系統(tǒng)及其指令格式
AT89S52單片機(jī)指令系統(tǒng)具有功能強(qiáng)、指令短、執(zhí)行快等特點(diǎn),其與MCS-51指令集兼容,共有111條指令。
匯編語言指令有如下格式:
[標(biāo)號(hào):]操作碼助記符[目的操作數(shù)][,源操作數(shù)][;注釋]3.1單片機(jī)指令系統(tǒng)概述3.2.1立即尋址
操作數(shù)直接出現(xiàn)在指令中,緊跟在操作碼的后面,作為指令的一部分與操作碼一起存放在程序存儲(chǔ)器中,可以立即得到并執(zhí)行,不需要經(jīng)過別的途徑去尋找,故稱為立即尋址。
3.2尋址方式3.2.2寄存器尋址
在指令選定的某寄存器中存放或讀取操作數(shù),以完成指令規(guī)定的操作,稱為寄存器尋址。
3.2.3寄存器間接尋址
由指令指出某一寄存器的內(nèi)容作為操作數(shù)地址的尋址方法,稱為寄存器間接尋址。
寄存器間接尋址示意圖如圖3-1所示。圖3-1寄存器間接尋址示意圖3.2.4直接尋址
指令中直接給出操作數(shù)所在的存儲(chǔ)器地址,以供取數(shù)或存數(shù)的尋址方式稱為直接尋址。
3.2.5基址寄存器加變址寄存器間接尋址
基址寄存器加變址寄存器間接尋址,簡稱變址尋址。例如:MOVCA,@A+DPTR指令中的源操作數(shù)就是這種尋址方式。該指令尋址及操作功能如圖3-2所示。圖3-2寄存器間接尋址示意圖3.2.6相對尋址
相對尋址是以當(dāng)前程序計(jì)數(shù)器PC值加上指令中給出的偏移量rel,而構(gòu)成實(shí)際操作數(shù)地址的尋址方法。
使用相對尋址時(shí)要注意以下兩點(diǎn):
(1)當(dāng)前PC值是指相對轉(zhuǎn)移指令的存儲(chǔ)地址加上該指令的字節(jié)數(shù)。
(2)偏移rel是有符號(hào)的單字節(jié)數(shù)。以補(bǔ)碼表示,其值的范圍是-128~+127(00H~FFH),負(fù)數(shù)表示從當(dāng)前地址向前轉(zhuǎn)移,正數(shù)表示從前地址向后轉(zhuǎn)移。所以,相對轉(zhuǎn)移指令滿足條件后,轉(zhuǎn)移的地址(目的地址)為
目的地址=當(dāng)前PC值+rel=指令存儲(chǔ)地址+指令字節(jié)數(shù)+rel3.2.7位尋址
位尋址是在位操作指令中直接給出位操作數(shù)的地址,可以對片內(nèi)RAM中的128位和特殊功能寄存器SFR中的93位進(jìn)行尋址。數(shù)據(jù)傳送類指令有29條,這類指令是將源操作數(shù)傳送到指定的目的地址,傳送后源操作數(shù)保持不變。分類如下:3.3數(shù)據(jù)傳送類指令3.3.1訪問片內(nèi)數(shù)據(jù)存儲(chǔ)器的一般數(shù)據(jù)傳送指令
所有指令具有統(tǒng)一的格式,其格式如下:
MOV〈目的操作數(shù)〉,〈源操作〉;目的操作數(shù)單元←源操作數(shù)(或單元)
操作碼助記符都是“MOV”,目的操作數(shù)和源操作數(shù)不同尋址方式的組合就派生出該類的全部指令。因此,記憶這類指令的關(guān)鍵在于掌握兩個(gè)操作數(shù)的各種尋址方式的組合關(guān)系。
圖3-3給出了該類指令的操作關(guān)系圖。圖3-3訪問片內(nèi)RAM的一般傳送指令操作關(guān)系圖根據(jù)圖3-3可以推出訪問片內(nèi)數(shù)據(jù)存儲(chǔ)器的一般數(shù)據(jù)傳送類的16條指令。表3-1給出了這些指令及相關(guān)說明。表3-1訪問片內(nèi)RAM的一般傳送指令表
【例3-1】設(shè)內(nèi)部RAM(30H)=40H,(40H)=10H,(10H)=00H,(P1)=CAH,分析以下程序執(zhí)行后各單元及寄存器、P2口的內(nèi)容。
MOVR0,#30H;(R0)←30H
MOVA,@R0
;(A)←((R0))
MOVR1,A;(R1)←(A)
MOVB,@R1;(B)←((R1))
MOV@R1,P1;((R1))←(P1)
MOV
P2,P1;(P2)←(P1)
MOV
10H,#20H;(10H)←20H
執(zhí)行上述指令后的結(jié)果為:(R0)=30H,(R1)=(A)=40H,(B)=10H,(40H)=(P1)=(P2)=CAH,(10H)=20H。3.3.2片內(nèi)特殊傳送指令
1.堆棧操作指令
堆棧操作指令共有如下兩條:
這兩條指令都是雙字節(jié)指令,機(jī)器碼分別為:C0
direct和D0
direct。
【例3-2】若在外部程序存儲(chǔ)器中2000H單元開始依次存放0~9的平方值,數(shù)據(jù)指針(DPTR)=3A00H,用查表指令取得2003H單元的數(shù)據(jù)后,要求保持DPTR中的內(nèi)容不變。
完成上述功能的程序如下:
MOV
A,#03H;(A)←03H
PUSHDPH
;保護(hù)DPTR高8位入棧
PUSH
DPL;保護(hù)DPTR低8位入棧
MOVDPTR,#2000H;(DPTR)←2000H
MOVC
A,@A+DPTR;(A)←(2000H+03H)
POPDPL;彈出DPTR低8位
POP
DPH
;彈出DPTR高8位
執(zhí)行結(jié)果:(A)=09H,(DPTR)=3A00H。由此可見,雖然在程序中改變了DPTR的內(nèi)容,但利用PUSH和POP指令可對其進(jìn)行保護(hù)和恢復(fù)。需要注意的是堆棧先進(jìn)后出的原則,否則DPL和DPH彈出時(shí)互換。
2.數(shù)據(jù)交換指令
數(shù)據(jù)交換指令共有如下5條:
指令助記符操作功能注釋機(jī)器碼(H)
XCHA,direct
;(A)←→(direct)
C5direct
XCHA,@Ri
;(A)←→((Ri))C6~C7
XCHA,Rn
;(A)←→(Rn)C8~CF
XCHDA,@Ri;(A3~0)←→((Ri))3~0
D6、D7
SWAPA;(A7~4)←→(A3~0)C5direct
【例3-3】設(shè)(R0)=30H,(30)=4AH,(A)=28H,則
執(zhí)行XCHA,@R0后,結(jié)果為(A)=4AH,(30H)=28H。執(zhí)行XCHDA,@R0后,結(jié)果為(A)=2AH,(30H)=48H。執(zhí)行SWAPA后,結(jié)果為(A)=82H。3.3.3片外數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送指令
MCS-51系列單片機(jī)CPU對片外擴(kuò)展的數(shù)據(jù)存儲(chǔ)器RAM或I/O口進(jìn)行數(shù)據(jù)傳送,必須采用寄存器間接尋址的方法,通過累加器A來完成。這類指令共有以下4條單字節(jié)指令,指令操作碼助記符都為MOVX。
指令助記符操作功能注釋機(jī)器碼(H)
MOVXA,@DPTR
;(A)←((DPTR))E6
MOVXA,@Ri
;(A)←((DPTR))E2、E3
MOVX@DPTR,A
;((DPTR))←(A)F0
MOVX@Ri,A;((Ri))←(A)F2、F3
【例3-4】設(shè)外部RAM(0203H)=FFH,分析以下指令執(zhí)行后的結(jié)果。
MOVDPTR,#0203H
;(DPTR)←0203H
MOVX
A,@DPTR
;(A)←((DPTR))
MOV30H,A
;(30H)←(A)
MOV
A,#0FH;(A)←0FH
MOVX@DPTR,A;((DPTR))←(A)
執(zhí)行結(jié)果為:(DPTR)=0203H,(30H)=FFH,(0203H)=(A)=0FH。3.3.4訪問程序存儲(chǔ)器的數(shù)據(jù)傳送指令
有如下兩條單字節(jié)指令,指令操作碼助記符為MOVC。
指令助記符操作功能注釋機(jī)器碼MOVC
A,@A+DPTR;(A)←((A)+(DPTR))
93
MOVCA,@A+PC;(PC)←(PC)+1,(A)←((A)+(PC))83
偏移量計(jì)算公式為
偏移量=表首地址-(MOVC指令所在地址+1)
【例3-5】從片外程序存儲(chǔ)器2000H單元開始存放0~9的平方值,以PC作為基址寄存器進(jìn)行查表得9的平方值。設(shè)MOVC址所在地址(PC)=1FF0H,則偏移量=2000H-(1FF0H+1)=0FH。
相應(yīng)的程序如下:
MOVC
A,#09H;(A)←09H
ADD
A,#0FH;用加法指令進(jìn)行地址調(diào)整
MOVC
A,@A+PC;(A)←((A)+(PC)+1)
執(zhí)行結(jié)果為:(PC)=1FF1H,(A)=51H。如果用以DPTR為基址寄存器的查表指令,其程序如下:
MOVDPTR,2000H;置表首地址
MOVA,09H
MOVCA,@A+DPTR3.4.1加、減法指令
加、減法指令包括不帶進(jìn)位加法、帶進(jìn)位加法、帶借位減法、加1和減1指令。其中前三種指令除操作碼助記符不同外,它們的兩個(gè)操作數(shù)的尋址方式組合完全相同,后兩種指令的操作數(shù)的尋址方式也基本相同。為了抓住這些特點(diǎn)來記憶指令,我們將以圖3-4所示的形式進(jìn)行說明,并將在表3.2中集中地列出這些指令。3.4算術(shù)運(yùn)算類指令圖3-4加減法指令形式結(jié)構(gòu)圖(a)加、減法指令關(guān)系圖;(b)加1、減1指令關(guān)系圖表3-2加、減法指令表
【例3-6】設(shè)(A)=49H,(R0)=6BH,分析執(zhí)行指令A(yù)DDA,R0后的結(jié)果。
結(jié)果為:(A)=B4H,OV=1,CY=0,AC=1,P=0
【例3-7】設(shè)(A)=C3H,數(shù)據(jù)指針地位(DPL)=ABH,CY=1,分析執(zhí)行指令A(yù)DDCA,DPL后的結(jié)果。
結(jié)果為:(A)=6FH,CY=1,AC=0,P=0
【例3-8】設(shè)(A)=52H,(R0)=B4H,分析執(zhí)行如下指令后的結(jié)果。
CLRC;是位操作指令,是進(jìn)位位清0
SUBBA,R0
結(jié)果為:(A)=9EH,CY=1,AC=1,OV=1,P=1
【例3-9】設(shè)(R0)=7EH,(7EH)=FFH,(7FH)=38H,(DPTR)=10FEH,分析逐條執(zhí)行下列指令后各單元的內(nèi)容。
INC@R0 ;使7EH單元內(nèi)容FFH變?yōu)?0H
INC@R0 ;使R0的內(nèi)容由7EH變?yōu)?FH
INC@R0 ;使7FH單元內(nèi)容由38H變?yōu)?9H
INCDPTR ;使DPL為FFH,DPH不變
INCDPTR ;使DPL為00H,DPH為11H
INCDPTR ;使DPL為01H,DPH不變3.4.2十進(jìn)制調(diào)整指令
十進(jìn)制調(diào)整指令是一條對二—十進(jìn)制的加法進(jìn)行調(diào)整的指令,它是一條單字節(jié)指令,機(jī)器碼為D4H,兩個(gè)壓縮BCD碼按二進(jìn)制相加,必須在加法指令A(yù)DD、ADDC后,經(jīng)過本指令調(diào)整后才能得到正確的壓縮BCD碼和數(shù),實(shí)現(xiàn)十進(jìn)制的加法運(yùn)算。
【例3-10】對BCD碼加法65+58→DBH進(jìn)行十進(jìn)制調(diào)整。
參考程序如下:
MOVA,#65H ;(A)←65
ADDA,#58H ;(A)←(A)+58
DAA ;十進(jìn)制調(diào)整
執(zhí)行結(jié)果:(A)=(23)BCD,(CY)=1,即65+58=123。使用時(shí)應(yīng)注意:DA指令不能對減法進(jìn)行十進(jìn)制調(diào)整。做減法運(yùn)算時(shí),可采用十進(jìn)制補(bǔ)碼相加,然后用DAA指令進(jìn)行調(diào)整。例如:
70-20=70+[20]補(bǔ)=70+(100-20)=70+80=150
機(jī)內(nèi)十進(jìn)制補(bǔ)碼可采用:[X]補(bǔ)=9AH-|X|。
【例3-11】設(shè)片內(nèi)RAM30H,31H單元中分別存放著兩位BCD碼標(biāo)志的被減數(shù)和減數(shù),兩數(shù)相減的差仍以BCD碼的形式存放在32H單元中。可用下面的程序?qū)崿F(xiàn):
CLRC
MOVA,#9AH
SUBBA,31H;求減數(shù)的十進(jìn)制補(bǔ)碼
ADDA,30H ;作十進(jìn)制補(bǔ)碼加法
DAA ;進(jìn)行BCD調(diào)整
MOV32H,A ;將BCD碼的差存放在32H單元3.4.3乘、除法指令
乘、除法指令為單字節(jié)4周期指令,在指令執(zhí)行周期中是最長的兩條指令。
1.乘法指令
乘法指令的指令格式為:
2.除法指令
除法指令的指令格式為:
邏輯運(yùn)算及移位指令共有24條,其中邏輯運(yùn)算指令有“與”、“或”、“異或”、累加器A清0和求反等20條,移位指令有4條。該類指令中,累加器A清0和取反、移位指令都是針對累加器A進(jìn)行操作的單操作數(shù)指令。邏輯“與”、“或”、“異或”操作指令除操作碼助記符不同以外,后跟的兩個(gè)操作數(shù)的尋址方式組合完全相同,且有一部分尋址方式組合與加、減法指令相同。為突出這些特點(diǎn),我們以圖3-5所示形式進(jìn)行說明。在表3-3中已列出邏輯操作的全部指令。3.5邏輯運(yùn)算及移位指令圖3-5邏輯指令形式結(jié)構(gòu)圖表3-3邏輯操作指令類
【例3-12】(P1)=C5H=11000101B,屏蔽P1口高4位而保留低4位。
執(zhí)行指令:
ANLP1,#0FH
結(jié)果為:
(P1)=05H=00000101B
邏輯“或”指令常用來使字節(jié)中某些位置“1”,其他位保持不變。則欲置的位用“1”與該位相或,保留不變的位用“0”與該位相或。
【例3-13】若(A)=C0H,(R0)=3FH,(3FH)=0FH
執(zhí)行指令:
ORLA,@R0
結(jié)果為:
(A)=CFH=11001111B
邏輯“異或”指令常用來使字節(jié)中某些位進(jìn)行取反操作,其他位保持不變。欲某位取反則該位與“1”相異或;欲某位保留則該位與“0”相異或。還可利用異或指令對某單元自身異或,以實(shí)現(xiàn)清0操作?!纠?-14】若(A)=B5H=10110101B,執(zhí)行下列操作:
XRLA,#0F0H
;A的高4位取反,低4位保留,(A)=01000101R=45H
MOV30H,A
;(30H)=45H
XRLA,30H;自身異或使A清0
【例3-15】設(shè)(A)=5AH=90,且CY=0,則
執(zhí)行指令RLA后,(A)=B4H=180。
執(zhí)行指令RRA后,(A)=2DH=45。
執(zhí)行指令RLCA后,(A)=B4H=180。
執(zhí)行指令RRCA后,(A)=2DH=45。3.6.1無條件轉(zhuǎn)移指令
無條件轉(zhuǎn)移指令有4條,如表3-4所示。3.6控制轉(zhuǎn)移類指令表3-4無條件轉(zhuǎn)移指令
1.LJMP(長轉(zhuǎn)移指令)
LJMP指令執(zhí)行后,程序無條件地轉(zhuǎn)向16位目標(biāo)地址(addr16)處執(zhí)行,且不影響標(biāo)志位。
2.AJMP(絕對轉(zhuǎn)移指令)
AJMP的機(jī)器碼是由11位直接地址addr11和指令操作碼00001按下列分布組成的:該指令執(zhí)行后,程序轉(zhuǎn)移的目的地址是由AJMP指令所在位置的地址PC值加上該指令字節(jié)數(shù)2,構(gòu)成當(dāng)前PC值。取當(dāng)前PC值的高5位與指令中提供的11位直接地址形成轉(zhuǎn)移
的目的地址,即
3.SJMP(相對短轉(zhuǎn)移指令)
SJMP指令的操作數(shù)rel用8位帶符號(hào)數(shù)補(bǔ)碼表示,占指令的一個(gè)字節(jié)。因?yàn)?位補(bǔ)碼的取值范圍為-128~+127,所以該指令的轉(zhuǎn)移范圍是:相對PC當(dāng)前值向前轉(zhuǎn)128字節(jié),向后轉(zhuǎn)127字節(jié),即
轉(zhuǎn)移目的地址=SJMP指令所在地址+2+rel用匯編語言編程時(shí),指令中的相對地址rel往往用欲轉(zhuǎn)移至地址的標(biāo)號(hào)(符號(hào)地址)表示。機(jī)器匯編時(shí),能自動(dòng)算出相對地址值;但手工匯編時(shí),則需自己計(jì)算相對地址值rel。rel的計(jì)算公式如下:
向前轉(zhuǎn)移:
rel=FEH-(SJMP指令地址與目的地址差的絕對值)
向后轉(zhuǎn)移:
rel=FEH-(SJMP指令地址與目的地址差的絕對值)-2
4.JMP@A+DPTR(相對長轉(zhuǎn)移指令)
相對長轉(zhuǎn)移指令是以數(shù)據(jù)指針DPTR的內(nèi)容為基址,以累加器A的內(nèi)容為相對偏移量,在64KB范圍內(nèi)無條件轉(zhuǎn)移。
【例3-16】根據(jù)累加器A的值,轉(zhuǎn)移到不同處理程序的入口。
MOVDPTR,#TABLE ;表首地址送DPTR
JMP
@A+DPTR ;根據(jù)A值轉(zhuǎn)移
TABLE:AJMPTAB1 ;當(dāng)(A)=0時(shí)轉(zhuǎn)TAB1執(zhí)行
AJMPTAB2 ;當(dāng)(A)=2時(shí)轉(zhuǎn)TAB2執(zhí)行
AJMPTAB3 ;當(dāng)(A)=4時(shí)轉(zhuǎn)TAB3執(zhí)行
3.6.2條件轉(zhuǎn)移指令
表3-5中列出了這些指令。表3-5條件轉(zhuǎn)移指令
1.判零條件轉(zhuǎn)移指令
【例3-17】將片外RAM首地址為DATA1的一個(gè)數(shù)據(jù)塊轉(zhuǎn)送到片內(nèi)RAM首地址為DATA2的存儲(chǔ)區(qū)中。
外部RAM向內(nèi)部RAM的數(shù)據(jù)轉(zhuǎn)送一定要經(jīng)過累加器A,利用判零條件轉(zhuǎn)移正好可以判別是否要繼續(xù)傳送或者終止。
完成數(shù)據(jù)傳送的參考程序如下:
MOV R0,#DATA1 ;R0作為外部數(shù)據(jù)塊的地址指針
MOV R1,#DATA2 ;R1作為內(nèi)部數(shù)據(jù)塊的地址指針
LOOP: MOVX A,@R0 ;取外部RAM數(shù)據(jù)送入A
HERE: JZ HERE ;數(shù)據(jù)為0終止傳送
MOV @R1,A ;數(shù)據(jù)傳送至內(nèi)部RAM單元
INC R0 ;修改指針,指向下一數(shù)據(jù)地址
INC R1
SJMP LOOP ;循環(huán)取數(shù)
2.比較轉(zhuǎn)移指令
【例3-18】當(dāng)從P1口輸入數(shù)據(jù)為01H時(shí),程序繼續(xù)執(zhí)行,否則等待,直到P1口出現(xiàn)01H。
參考程序如下:
MOVA,#01H;立即數(shù)01H送A
WAIT: CJNEA,P1,WAIT;(P1)≠01H,則等待
3.減1條件轉(zhuǎn)移指令
【例3-19】將內(nèi)部RAM從DATA單元開始的10個(gè)無符號(hào)數(shù)相加,相加結(jié)果送入SUM單元保存。設(shè)相加結(jié)果不超過8位二進(jìn)制數(shù),則相應(yīng)的程序如下:
MOVR0,#0AH ;設(shè)置循環(huán)次數(shù)
MOVR1,#DATA ;R1作地址指針,指向數(shù)據(jù)塊首地址
CLRA ;A清0
LOOP:
ADDA,@R1 ;加一個(gè)數(shù)
INCR1 ;修改指針,指向下一個(gè)數(shù)
DJNZR0,LOOP ;R0減1,不為0循環(huán)
MOVSUM,A ;存10個(gè)數(shù)相加的和3.7.1子程序調(diào)用指令
子程序調(diào)用指令有長調(diào)用和絕對調(diào)用兩條,它們都是雙周期指令。3.7子程序調(diào)用和返回指令長調(diào)用子指令:絕對調(diào)用子指令:
ACALL與AJMP一樣提供11位地址,只能調(diào)用與PC在同一2KB范圍內(nèi)的子程序。由于該指令為2字節(jié)指令,所以執(zhí)行該指令時(shí)應(yīng)執(zhí)行(PC)←(PC)+2以獲得下一條指令地址,并把該地址壓入堆棧作為返回地址。該指令機(jī)器碼的構(gòu)成也與AJMP類似,只不過操作碼第一字節(jié)其高半字節(jié)的最后一位是1,機(jī)器碼的組成如下:3.7.2返回指令
返回指令共有兩條:一條是對應(yīng)兩條調(diào)用指令的子程序返回指令RET,另一條是對應(yīng)從中斷服務(wù)程序的返回指令RETI。3.7.3空操作指令
空操作指令的指令格式為:
NOP;(PC)←(PC)+1
空操作指令是一條單字節(jié)單周期指令。位操作也稱布爾變量操作,它是以位(bit)作為單位來進(jìn)行運(yùn)算和操作的。
位處理指令列于表3-6中。3.8位操作類指令表3-6位處理指令
【例3-20】利用位操作指令,模擬圖3-6所示硬件邏輯電路的功能。參考程序如下:
PR2:MOVC,P1.1 ;(CY)←(P1.1)
ORLC,P1.2 ;(CY)←(P1.1)∨(P1.2)=A
ANLC,P1.0 ;(CY)←(P1.0)∧A
CPLC ;(CY)←()∧A=B
MOVF0,C ;F0內(nèi)暫存B
MOVC,P1.3 ;(CY)←(P1.3)
ANLC,/P1.4 ;(CY)←(P1.3)∧()=D
ORLC,F0 ;(CY)←B∨D
MOVP1.5,C ;運(yùn)算結(jié)果送入P1.5
RET圖3-6硬件邏輯電路圖
1.匯編程序格式
匯編程序是指令系統(tǒng)的一個(gè)子集,只要指令按格式書寫就構(gòu)成了程序的基本格式。在程序中指令書寫具有如下格式:
[標(biāo)號(hào):]操作碼助記符[源操作數(shù)][,目的操作數(shù)][;注釋]3.9匯編程序格式與偽指令
2.偽指令
1)設(shè)置目標(biāo)程序起始地址偽指令ORG
格式:[符號(hào):]ORG地址(十六進(jìn)制表示)
例如:
ORG2000H
START:MOVA,#7FH
2)結(jié)束匯編偽指令END
格式:[符號(hào):]END
3)定義字節(jié)偽指令DB
格式:[標(biāo)號(hào):]DB項(xiàng)或項(xiàng)表
例如:
ORG2000H
TAB1:DB30H,8AH,7FH,73
DB′5′,′A′,′BCD′由于ORG2000H,所以TAB1的地址為2000H,因此,以上偽指令經(jīng)匯編后,將對2000H開始的連續(xù)存儲(chǔ)單元賦值: (2000H)=30H
(2001H)=8AH
(2002H)=7FH
(2003H)=49H ;十進(jìn)制數(shù)73以十六進(jìn)制存放
(2004H)=35H ;35H是數(shù)字5的ASCII碼
(2005H)=41H ;41H是字母A的ASCII碼
(2006H)=42H ;42H是字符串′BCD′中B的ASCII碼
(2007H)=43H ;43H是字符串′BCD′中C的ASCII碼
(2008H)=44H ;44H是字符串′BCD′中D的ASCII碼
4)定義字偽指令DW
格式:[標(biāo)號(hào):]DW項(xiàng)或項(xiàng)表
DW偽指令與DB相似,但用于定義字的內(nèi)容。項(xiàng)或項(xiàng)表指所定義的一個(gè)字(兩個(gè)字節(jié))或用逗號(hào)分開的字符串。匯編時(shí),機(jī)器自動(dòng)按高8位先存入,低8位在后的格式排列。例如:
ORG1500H
TAB2:DW1234H,80H
匯編以后:(1500H)=12H,(1501H)=34H,(1502H)=00H,(1503H)=80H
5)預(yù)留存儲(chǔ)空間偽指令DS
格式:[標(biāo)號(hào):]DS表達(dá)式
該偽指令的功能是從標(biāo)號(hào)地址開始的,保留若干個(gè)字節(jié)的內(nèi)存空間以備存放數(shù)據(jù)。保留的字節(jié)單元數(shù)由表達(dá)式的值決定。例如:
ORG1000H
DS20H
DB30H,8FH
6)等值偽指令EQU
格式:標(biāo)號(hào):EQU項(xiàng)
該偽指令的功能是將指令中項(xiàng)的值賦予EQU前面的標(biāo)號(hào)。項(xiàng)可以是常數(shù)、地址標(biāo)號(hào)或表達(dá)式。例如:
TAB1:EQU1000H
TAB2:EQU2000H
7)位地址定義偽指令BIT
格式:標(biāo)號(hào):BIT位地址
該偽指令的功能是將位地址賦予BIT前面的標(biāo)號(hào),經(jīng)賦值后可用該標(biāo)號(hào)代替BIT后面的位地址。例如:
PLG:BITF0
AI:BITP1.0
1.什么是尋址方式?MCS-51系列單片機(jī)有哪幾種尋址方式?這幾種尋址方式是如何尋址的?
2.訪問片內(nèi)、片外程序存儲(chǔ)器有哪幾種尋址方式?
習(xí)題三
3.若要完成以下的數(shù)據(jù)傳送,應(yīng)如何用MCS-51系列的指令來完成?
(1)R0的內(nèi)容送到R1中。
(2)外部RAM的20H單元內(nèi)容送R0,送內(nèi)部RAM的20H單元。
(3)外部RAM的2000H單元內(nèi)容送R0,送內(nèi)部RAM的20H單元,送外部RAM的20H單元。
(4)ROM的2000H單元內(nèi)容送R0,送內(nèi)部RAM的20H單元,送外部RAM的20H單元。
4.比較下列每組兩條指令的區(qū)別。
(1)MOVA,#24H與MOVA,24H。
(2)MOVA,R0與MOVA,@R0。
(3)MOVA,@R0與MOVXA,@R0。
(4)MOVXA,@R1與MOVXA,@DPTR。
5.已知(A)=7AH,(B)=02H,(R0)=30H,(30H)=A5H,(PSW)=80H,寫出以下各條指令執(zhí)行后A和PSW的內(nèi)容。
(1)XCHA,R0。
(2)XCHA,30H。
(3)XCHA,@R0。
(4)XCHDA,@R0。
(5)SWPA。
(6)ADDA,R0。
(7)ADDA,30H。
(8)ADDDA,#30H。
(9)ADDCA,30H。
(10)SUBBA,30H。
(11)SUBBA,#30H。
(12)INC@R0。
(13)MULAB。
(14)DIVAB。
6.已知(A)=02H,(R1)=7FH,(DPTR)=2FFCH,(SP)=30H,片內(nèi)RAM(7FH)=70H,片外RAM(2FFEH)=11H,ROM(2FFEH)=64H,試分別寫出以下指令執(zhí)行后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 液壓課程設(shè)計(jì)20篇
- 梁橋課程設(shè)計(jì)
- 環(huán)保過濾材料考核試卷
- 總賬初始設(shè)置課程設(shè)計(jì)
- 敏感詞過濾系統(tǒng)課程設(shè)計(jì)
- 畜牧業(yè)產(chǎn)業(yè)政策與發(fā)展趨勢考核試卷
- 淀粉產(chǎn)業(yè)的風(fēng)險(xiǎn)管理與合規(guī)控制考核試卷
- 石油開采行業(yè)的可持續(xù)發(fā)展考核試卷
- 豬的飼養(yǎng)繁殖效率提高策略考核試卷
- 療養(yǎng)院護(hù)理信息化建設(shè)與應(yīng)用考核試卷
- 四線三格word模板
- 國家各部委專項(xiàng)資金申報(bào)種類
- 年會(huì)抽獎(jiǎng)券可編輯模板
- 靜電場知識(shí)點(diǎn)例題結(jié)合
- 中醫(yī)醫(yī)案學(xué)三醫(yī)案的類型讀案方法
- 制造業(yè)信息化管理系統(tǒng)架構(gòu)規(guī)劃
- GB∕T 41170.2-2021 造口輔助器具的皮膚保護(hù)用品 試驗(yàn)方法 第2部分:耐濕完整性和黏合強(qiáng)度
- 防雷裝置檢測質(zhì)量管理手冊
- 化學(xué)錨栓計(jì)算
- 燃?xì)忮仩t房和直燃機(jī)房防爆問題
- 測井曲線及代碼
評論
0/150
提交評論