版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三章MCS-51單片機(jī)指令系統(tǒng)1、指令的格式。2、尋址方式。3、分類指令。3.1
概述3.2
尋址方式本章主要內(nèi)容3.3
MCS-51單片機(jī)指令系統(tǒng)《單片機(jī)原理及應(yīng)用》
本節(jié)主要論述指令格式、指令的三種表示形式、指令字節(jié)數(shù)、指令分類和指令系統(tǒng)綜述等五個(gè)問題。3.1
概述
標(biāo)號(hào)又稱為指令地址符號(hào),一般由1-6個(gè)符組成,以字母開頭的字母數(shù)字串。一、指令格式[標(biāo)號(hào)]:操作碼[操作數(shù)][;注釋]注意:方括號(hào)是可選項(xiàng)。
操作碼用MCS-51單片機(jī)所規(guī)定的助記符來表示,它規(guī)定指令進(jìn)行何種操作。
操作數(shù)是指令操作的對(duì)象,分為目的操作數(shù)和源操作數(shù)。
注釋是對(duì)該指令作用或功能的說明。二、指令的三種表達(dá)形式1、指令的二進(jìn)制形式
2、指令的十六進(jìn)制形式3、指令的助記符形式
如果累加器A中已有一個(gè)加數(shù)20,那么能夠完成20+6并把結(jié)果送入累加器A的加法指令:
二進(jìn)制形式:
0011100000000110B
十六進(jìn)制形式:
3806H
助記符形式:
ADD
A,#06H;A←A+06H例如1、單字節(jié)指令(49條)
單字節(jié)指令只有一個(gè)字節(jié)。1)無操作數(shù)單節(jié)指令
只有操作碼字段,操作數(shù)隱含在操作碼中
例如:INCDPTR
指令碼:10100011三、指令的字節(jié)數(shù)
2)含有操作數(shù)寄存器號(hào)的單字節(jié)指令例如:八位數(shù)傳送指令
MOV
A,Rn其中,n的取值范圍為0~7。指令碼:11101rrr
這類指令的指令碼有操作碼字段和專門用來指示操作數(shù)所在寄存器號(hào)的字段組成。
雙字節(jié)指令含有兩個(gè)字,操作碼字節(jié)在前,操作數(shù)字節(jié)在后。
例如:八位數(shù)傳送指令
MOV
A,#data;A←data
指令碼:74××H2、雙字節(jié)指令(46條)指令碼的第一字節(jié)為操作碼,第二、三字節(jié)為操作數(shù)或操作數(shù)地址。3、三字節(jié)指令(16條)例如:邏輯與操作指令
ANL
direct,#data指令碼:53××
××
H1、指令分類2)算術(shù)運(yùn)算指令3)邏輯運(yùn)算指令1)數(shù)據(jù)傳送指令4)控制轉(zhuǎn)移和位操作指令四、指令的分類及符號(hào)說明1)Rn
:表示當(dāng)前選中的寄存器區(qū)的8個(gè)工作寄存器(n=0~7)中的一個(gè)。2)@Ri:表示寄存器間接尋址,Ri只能是R0或R1。3)#data:8位立即數(shù),實(shí)際使用時(shí)data應(yīng)是00H~0FFH中的一個(gè)。4)#data16:16位立即數(shù)。2、符號(hào)的說明5)direct:表示8位內(nèi)部數(shù)據(jù)存儲(chǔ)器單
元的地址。6)
addr16:表示16位的目的地址。7)addr11:表示11位的目的地址。8)rel
:表示8位帶符號(hào)地址偏移量。9)@DPTR
:表示以DPTR為數(shù)據(jù)指針的間接尋址,用于對(duì)外部64KRAM/ROM尋址。10)bit
:表示內(nèi)部RAM(包括專用寄存器)中
的直接尋址位。13)@:為間址寄存器或基址寄存器的前
綴。如@Ri,@A+PC,@A+DPTR。14)/:位操作數(shù)的前綴,表示對(duì)該位操作
數(shù)取反。如/bit.15)$:當(dāng)前指令的地址。返回
MCS-51單片機(jī)的指令系統(tǒng)共有七種尋址方式。3.2尋址方式
特點(diǎn):操作數(shù)以寄存器的名字表示。尋址范圍:工作寄存器R0~R7、A、B、DPTR。一、寄存器尋址例如:R0(35H)A結(jié)果A=35HMOVA,R0;AR0特點(diǎn):指令直接給出操作數(shù)。操作數(shù)字前加“#”符號(hào)為前綴,以區(qū)別直接地址。#data或#data16,只能做源操作數(shù),常用于賦初值。二、立即尋址例如(1)MOVA,44H;A(44H)(2)MOVA,#44H;A44H(1)將片內(nèi)RAM中44H單元的內(nèi)容送累加器A,屬于直接尋址。(2)則是把44H這個(gè)數(shù)本身送到累加器A,屬于立即尋址。功能:特點(diǎn):直接給出操作數(shù)地址,直接地址常用8位二進(jìn)制地址。尋址范圍:只限于內(nèi)部RAM。內(nèi)部RAM的低128單元和SFR,SFR除以單元地址形式給出外,還以寄存器符號(hào)形式給出。直接尋址是訪問SFR的唯一方法。三、直接尋址功能:
將片內(nèi)RAM56H單元中的內(nèi)容34H送到累加器A中。例如:MOVA,56H;A(56H)34H片內(nèi)RAM
34H累加器A56H圖3.1指令傳遞特點(diǎn):操作數(shù)地址以寄存器名稱間接給出,以寄存器中的內(nèi)容作為操作數(shù)的地址。加標(biāo)識(shí)符@區(qū)別于寄存器尋址。MCS-51規(guī)定:只能以R0、R1和DPTR實(shí)現(xiàn)問址。在寄存器前加“@”符號(hào)作前綴。四、寄存器間接尋址(1)內(nèi)部RAM低128單元:只能使用R0、R1作間址寄存器,通用形式為@Ri(i=0,1)。尋址范圍:(2)外部RAM64KB:只能使用DPTR作間址寄存器,其形式為@DPTR。(3)外部RAM低256單元:一個(gè)特殊尋址區(qū),除可用DPTR作為間址寄存器尋址外,還可用R0或R1作間址寄存器尋址。(4)堆棧操作指令(PUSH和POP)也應(yīng)算作寄存器間接尋址,即以堆棧指針SP作間址寄存器的間接尋址方式。寄存器間接尋址指令不能用于尋址SFR。寄存器間接尋址是訪問外部RAM的唯一方法。MOVA,R0;A←R0MOVA,@R0;A←(R0)例如:R0=65H,(65H)=26H26H片內(nèi)RAMA
65H
圖3.2
R065H①②注意:@是它區(qū)別寄存器尋址的標(biāo)志。執(zhí)行①結(jié)果A=65H,執(zhí)行②結(jié)果A=26H。特點(diǎn):只出現(xiàn)在相對(duì)轉(zhuǎn)移指令中。五、相對(duì)尋址目的地址=指令地址+指令字節(jié)數(shù)+rel“rel”是一個(gè)8位帶符號(hào)二進(jìn)制補(bǔ)碼數(shù),最大范圍是-128~+127。2000
8026H
SJMP
rel;PC←PC+2+rel程序存儲(chǔ)器A圖3-3指令過程
PC
26H0000H2000H2001H
80H
26H××
××2028H
02H
20H
ALU2002H┆例如
特點(diǎn):訪問ROM,以DPTR或PC基址寄存器和累加器A變址寄存器的內(nèi)容和為地址,尋址該地址單元,讀取數(shù)據(jù)。常用于查表操作。尋址范圍:64KB的ROM六、變址尋址(1)MOVC
A,@A+PC
;A←(A+PC)(2)MOVC
A,@A+DPTR;A←(A+DPTR)執(zhí)行第一條時(shí)先使當(dāng)前PC值加1,然后把這個(gè)加1后的PC值和累加器A中的偏移量相加,作為操作數(shù)地址,從該地址中取出操作數(shù)送入A中。第二條過程與第一條指令類似。
已知:片外ROM的2006H單元中有一數(shù)34H,編寫程序用變址尋址方法把這個(gè)數(shù)送入A中,試進(jìn)行分析。例3.1
解:根據(jù)題目要求,基址可定為2000H,地址偏移量則為06H,程序如下:
MOV
DPTR,#2000H;DPTR←2000HMOV
A,#06H;A←06HMOVC
A,@A+DPTR;A←34H程序存儲(chǔ)器A
圖3.4
DPTR
00H0000H34H××2006HALU
如圖3.4所示,這里A具有雙重作用,在指令執(zhí)行前用來存放地址偏移量,指令執(zhí)行后為目的操作數(shù)。20
06H尋址范圍:對(duì)片內(nèi)RAM的位尋址區(qū)和11個(gè)可位尋址的SFR進(jìn)行尋址。七、位尋址當(dāng)把八位二進(jìn)制數(shù)中某一位作為操作數(shù)看待時(shí),這個(gè)操作數(shù)的地址就稱為位地址,對(duì)位地址尋址簡稱位尋址。
MOV30H,C
;30H是位尋址位地址
MOVA,30H
;
30H是直接尋址的字節(jié)地址
MOVC,ACC.7;Cy←ACC.7由上面指令可知,位尋址的位地址與直接尋址的字節(jié)地址形式完全一樣,主要由操作碼來區(qū)分。例如返回
這類指令的源操作數(shù)和目的操作數(shù)地址都在單片機(jī)內(nèi)部。
MOV
dest,
src3.3MCS-51單片機(jī)指令系統(tǒng)一、數(shù)據(jù)傳送指令1、內(nèi)部數(shù)據(jù)傳送指令(15條)MOVA,Rn
;ARnMOVA,direct;A(direct)MOVA,@Ri;A(Ri)MOVA,#data;Adata1)以A為目的操作數(shù)MOVRn
,A;
RnAMOVRn
,direct;Rn
(direct)MOVRn
,#data;Rndata2)以Rn為目的操作數(shù)MOVdirect,A;directAMOVdirect,Rn
;direct
RnMOVdirect1,direct2;direct1
(direct2)MOVdirect,@Ri
;direct(Ri)MOVdirect,#data;directdata3)以直接地址為目的操作數(shù)MOV@Ri
,A;(Ri)
AMOV@Ri
,direct;(Ri)(direct)MOV@Ri
,#data;(Ri)data4)以寄存器間接尋址為目的操作數(shù)
已知:R1=30H,試問執(zhí)行如下指令后累加器A、R7、30H、31H單元中內(nèi)容各是什么?
MOV
A,#40HMOV
R7,
#50HMOV
@R1,
#45HMOV31H,#48H例3.2執(zhí)行后,結(jié)果為:A=40H,R7=50H,(30H)=45H,(31H)=48H
已知:R0=20H、(21H)=54H、(22H)=55H、(30H)=56H,試問執(zhí)行如下指令后,結(jié)果A、40H、R2、20H、和P2口中的內(nèi)容各是什么?
MOVA,21HMOV40H,AMOVR2,22HMOV@R0,21HMOVP2,30H例3.3結(jié)果為:A=54H,(40H)=54H,R2=55H,(20H)=54H,P2=56H
已知:(30H)=12H、(31H)=13H、R0=30H、R1=31H,試問執(zhí)行以下指令后A、30H、31H和32H各是什么?
MOVA,@R0MOV@R1,AMOV@R0,#34HMOV32H,@R1執(zhí)行后,A=12H,(30H)=34H
,(31H)=12H
,(32H)=12H例3.4內(nèi)部數(shù)據(jù)傳送指令的小結(jié)
圖3.5內(nèi)部指令描述Direct直接尋址@Ri間址
Rn寄存器data立即數(shù)累加器A122321223MOV
DPTR,#data16
;DPTR←data16
1)十六位數(shù)據(jù)傳送指令2、外部數(shù)據(jù)傳送指令(7條)MOVC
A,@A+DPTR;A←(A+DPTR)MOVC
A,@A+PC
;PC←PC+1,
;A←(A+PC)2)外部ROM的字節(jié)數(shù)指令
例3.5
已知片外2008H單元中有一個(gè)數(shù)為34H,試用以上二條指令各寫一個(gè)程序,把數(shù)送到片內(nèi)7FH單元中。解:①采用DPTR作為基址寄存器
ORG0000H
LJMP
START ORG0100HSTART: CLRA
;清空A
MOVDPTR,#2008H
;表起始值
MOVCA,@A+DPTR;把A與DPTR相加,
;結(jié)果A=34H MOV7FH,A
;結(jié)果(7FH)=34H SJMP$
;停止②采用PC作為基址寄存器
ORG
0000H
LJMP
MAIN
ORG
2000H
MAIN:MOV
A,#05H
;偏移量為05H,因?yàn)樵撝噶钫?/p>
;二個(gè)字節(jié)數(shù)
MOVCA,@A+PC
;首先將PC+1,則PC=2003,
;然后加05H,則PC指向2008單元
MOV7FH,A
;結(jié)果(7FH)=34H
SJMP$
;停止3)外部RAM的字節(jié)傳送指令
MOVXA,@Ri;A←(Ri) MOVX@Ri,A;A→(Ri) MOVXA,@DPTR;A←(DPTR) MOVX@DPTR,A;A→(DPTR)
已知外部RAM的60H單元中有一個(gè)數(shù)為30H,試編程把30H送到片外RAM的2000H單元中。
解:雖都是片外RAM的地址單元,但不能直接傳送,必須經(jīng)過累加器A的轉(zhuǎn)送,才能實(shí)現(xiàn)。ORG
1000HMOVR1,#60H;R1=60HMOVXA,@R1;A=30HMOVDPTR
,#2000H;DPTR=2000HMOVX@DPTR,A
;2000H←30HSJMP$;停止例3.63、數(shù)據(jù)交換指令(5條)
XCHD
A,@Ri
;A3~0
(Ri)3~0SWAPA;A7~4A3~0XCH
A,Rn
;ARnXCHA,direct;A(direct)XCH
A,@Ri
;A(Ri)已知R0=20H,(20H)=75H,A=3FH(1)XCHA,@R0
(2)XCHDA,@R0
(3)SWAPA
例3.7結(jié)果:A=75H,(20H)=3FH,R0=20H結(jié)果:A=35H,(20H)=7FH,R0=20H結(jié)果:A=0F3H
已知:片內(nèi)20H單元有一個(gè)數(shù)為30H,片外20H單元有一個(gè)數(shù)為03H,編程把二個(gè)數(shù)相互交換。解:例3.8ORG
0100HMOVR0,#20H ;R0←20HMOVXA,@R0 ;A←03HXCHA,@R0;A←30H,(20H)←03HMOVX@R0,A;30H→(20H)(外部RAM)SJMP$ ;停止4、堆棧操作指令(2條)PUSHdirect;SP←SP+1,(SP)←(direct)POPdirect;(SP)→direct,SP←SP-1第一條指令稱為壓棧指令,用于把direct為地址的操作數(shù)傳送到堆棧中去。第二條指令稱為出棧指令。MOVSP,#70H
;棧底首地址為70HPUSH
30H
;SP←SP+1,71H←XPUSH
40H
;SP←SP+1,72H←YPOP30H
;30H←Y,SP←SP-1=71HPOP
40H
;40H←X,SP←SP-1=70H例3.9
已知:(30H)=X,(40H)=Y,編程用堆棧指令把30H和40H單元中內(nèi)容相交換。1、加法指令(13條)ADD A,Rn
ADD A,directADD A,@RiADD A,#data二、算術(shù)運(yùn)算指令(24條)1)不帶進(jìn)位位(Cy)加法指令(4條)
試分析執(zhí)行如下指令后,累加器A和PSW中各標(biāo)志的變化情況如何?
MOV
A,#5AH ADDA,#6BH
例3.10A=01011010Bdata=01101011B
90107+)111000101B1CS1970CP
1AC圖3.6加法指令執(zhí)行過程ADDCA,
RnADDCA,
#dataADDCA,
directADDCA,
@Ri2)帶進(jìn)位位(Cy)加法指令(4條)
已知:A=8FH、R1=20H、(20H)=12H、(21H)=0FEH和Cy=1,試問CPU依次執(zhí)行以下指令后累加器A和Cy中的值是多少。
a.ADDCA,R1b.ADDCA,21H c.ADDCA,@R1d.ADDCA,#7FH
例3.11解:操作結(jié)果應(yīng)為:
a.A=0B0H,Cy=0b.A=8DH,Cy=1 c.A=0A2H,Cy=0d.A=0FH,Cy=1INC
A ;A←A+1INC
Rn ;Rn←Rn+1INC
direct ;(direct)←(direct)+1INC
@Ri ;(Ri)←(Ri)+1INC
DPTR ;DPTR←DPTR+13)加1指令(5條)已知:A=34H、R0=42H、(43H)=23H、DPTR=3020H,試問CPU執(zhí)行如下程序后A、R4、45H、R0、DPTR中的內(nèi)容各是什么?
INCA INCR0 INC43H INC@R0
INCDPTR例3.12解:由加1指令的規(guī)則,上述指令執(zhí)行后的的操作結(jié)果為:A=35H、R0=43H、(43H)=25H、DPTR=3021H。2、減法指令(8條)SUBBA,Rn
;A←A-Rn-CySUBBA,@Ri
;A←A-(Ri)-CySUBBA,direct ;A←A-(direct)-CySUBBA,#data ;A←A-data-Cy1)帶進(jìn)位位(Cy)減法指令(4條)試分析執(zhí)行下列指令后,累加器A和PSW中各標(biāo)志位狀態(tài)?
CLRC MOVA,#35H SUBBA,#0B6H
解:第一條指令用于清標(biāo)志位Cy;第二條指令是對(duì)被減數(shù)送累加器A中;第三條指令是進(jìn)行減法指令,結(jié)果為:A=7FH,PSW為:000
0011CyACF0Rs1Rs0OV━1P例3.13DECA
;A←A-1DECRn
;Rn←Rn-1DECdirect
;direct←(direct)-1DEC@Ri;(Ri)←(Ri)-12)減1指令(4條)
已知:A=10H、R1=3BH、R7=34H、(60H)=00H、(3BH)=0FFH,試分析,執(zhí)行如下程序后累加器A和PSW中各標(biāo)志位狀態(tài)?①DECA
②DEC@R1③DEC60H
④DECR7例3.14解:根據(jù)減1指令功能,結(jié)果為:①A=0FH,P=1②(3BH)=0FEH,
PSW不變③(60H)=0FFH,PSW不變④R7=33H,
PSW不變3、十進(jìn)制調(diào)整指令(1條)DAA對(duì)A中兩個(gè)壓縮BCD數(shù)相加之和調(diào)整為2位BCD碼數(shù)。1)只能用在對(duì)BCD碼數(shù)進(jìn)行ADD或ADDC操
作后使用。2)影響標(biāo)志位:有進(jìn)位時(shí)C=1。1)BCD加法特點(diǎn):
試編程實(shí)現(xiàn)44H+86H的BCD加法程序,并對(duì)其工作原理分析。解:相應(yīng)BCD加法程序?yàn)椋?/p>
MOVA,#44H ;A←44H
ADD
A,#86H ;A←44+86=0CAH DAA
;A←30H,Cy=1,AC=1 SJMP$
例3.15A=01000100Bdata=10000110B4486+)011010000B11010011000
0B011001010B130
110B低4位>9,加6調(diào)整高4位>9,加6調(diào)整圖3.7BCD加法過程注意:對(duì)于BCD減法
MCS-51單片機(jī)中沒有十進(jìn)制減法調(diào)整指令,因此,BCD減法運(yùn)算必須采用BCD補(bǔ)碼運(yùn)算法則。4、乘法和除法指令MUL
AB;BA
←
A×B
C=0積>255OV=1DIV
AB;A…B←
A÷B
C=0除數(shù)=0OV=1除數(shù)≠0OV=01)乘法指令2)除法指令1、與指令A(yù)NLA,RnANLA,@RiANLA,directANLA,#dataANLdirect,AANLdirect,#data;AA∧
Rn;AA∧(Ri);AA∧(direct);AA∧#data;direct(direct)∧A;direct(direct)∧#data三、邏輯運(yùn)算指令(20條)結(jié)果:將P1口鎖存器的0、3、4、7位內(nèi)容屏蔽,而其余位保持原值不變。例如常用ANL指令屏蔽某些不用位或保留某些位ANLP1,#01100110B2、或指令ORLA,Rn ;A←A∨RnORLA,direct ;A←A∨(direct)ORLA,@Ri ;A←A∨(Ri)ORLA,#data ;A←A∨dataORLdirect,A ;direct←(direct)∨AORLdirect,#data;direct←(direct)∨data結(jié)果:將P1口鎖存器的1、4、5位進(jìn)行置位,而其余位保持原值不變。常用ORL指令對(duì)某些位置位或保留某些位例如ORLP1,#00110010B
ANLA,#00011111B(#1FH)
ANLP1,#11100000B(#0E0H)
ORLP1,A例3.16:將累加器A的內(nèi)容送P1口的低5位,要求傳送時(shí)不影響P1口的高3位。MOVR0,AMOVA,R0XRLA,Rn ;A←A⊕RnXRLA,direct ;A←A⊕(direct)XRLA,@Ri ;A←A⊕(Ri)XRLA,#data ;A←A⊕dataXRLdirect,A ;direct←(direct)⊕AXRLdirect,#data;direct←(direct)⊕data3、異或指令結(jié)果:將P1口鎖存器的0、4、5位內(nèi)容取反,而其余位保持原值不變。常用XRL指令對(duì)某些位取反或保留某些位XRLP1,#00110001B例如CPLACLRA;AA;
A04、累加器清零和取反指令RLA;RRA;ARLCA
;RRCA;5、移位指令(4條)A7A0CyA7A0CyA7A0A7A0AAA
已知:M和M+1單元中有一個(gè)16位二進(jìn)制數(shù)(M為低8),編程將其擴(kuò)大到二倍(注意:該數(shù)最大可擴(kuò)大到65536)。
解:一個(gè)16位二進(jìn)制數(shù)擴(kuò)大到二倍就等于是把它進(jìn)行一次算術(shù)左移。由于MCS-51單元片機(jī)的移位指令都是二進(jìn)制8位的移位指令,因此16位數(shù)的移位指令必須用程序來實(shí)現(xiàn)。
算法為:
M
M+1
0例3.17ORG
0030HCLR
C ;清進(jìn)位標(biāo)志位MOV
R0,#M ;操作數(shù)低8位地址送R0MOV
A,@R0 ;A←操作數(shù)低8位RLC
A ;低8位操作數(shù)左移低位補(bǔ)0MOV@R0,A ;結(jié)果送回M單元,Cy中為最高位INC
R0 ;R0指向M+1單元MOV
A,@R0 ;A←操作數(shù)高8位RLCA ;高8位操作數(shù)左移并加上低位CyMOV@R0,A ;結(jié)果送回M+1單元SJMP
$ ;停止LJMP
addr16;PC←addr16AJMPaddr11;PC←PC+2,PC10~0←addr11SJMPrel
;PC←PC+2,PC←PC+relJMP@A+DPTR ;PC←A+DPTR四、控制轉(zhuǎn)移和位操作指令1、控制轉(zhuǎn)移指令(17條)1)無條件轉(zhuǎn)移指令MCS-51系列單片機(jī)可以在64KB地址范圍內(nèi)尋址,絕對(duì)轉(zhuǎn)移指令的轉(zhuǎn)移范圍只在PC當(dāng)前值所指的2KB地址范圍內(nèi)。①長轉(zhuǎn)移指令LJMPaddr16;PCaddr16三字節(jié)指令,不影響標(biāo)志位,可在64KB地址范圍內(nèi)無條件轉(zhuǎn)移。②絕對(duì)轉(zhuǎn)移指令二字節(jié)指令,可在2KB地址范圍內(nèi)轉(zhuǎn)移。AJMPaddr11;
PC
PC+2,PC10~0addr11③短轉(zhuǎn)移指令機(jī)器碼:80H
rel
本指令是一條雙字節(jié)雙周期指令,在PC內(nèi)容加2所指地址上,以rel:-128~+127為偏移量。SJMPrel;PCPC+2+rel
ORG
1000H1000H7401H
START:MOV
A,#01H ;字位碼初值送A1002HF8H
MOVR0,A ;暫存于R01003H90CF01H
LOOP:MOVDPTR,#0CF01H
┋
1017H80rel
SJMP
START
;轉(zhuǎn)入START┋
SJMP
$
例3.18下列程序中,請(qǐng)計(jì)算SJMPSTART指令碼中的rel,并分析目標(biāo)地址的轉(zhuǎn)移范圍。a)地址偏移量rel的計(jì)算:
目標(biāo)轉(zhuǎn)移地址=源地址+2+rel
rel=目標(biāo)轉(zhuǎn)移地址-源地址-2
=1000H-1017H-2=-25
rel應(yīng)采用補(bǔ)碼表示,為此rel=[-25]補(bǔ)=E7H解:SJMP指令中地址偏移量是采用START符號(hào)表示的,指明指令執(zhí)行后轉(zhuǎn)入本程序開頭重新執(zhí)行。b)轉(zhuǎn)移地址范圍的確定:轉(zhuǎn)移地址通常以SJMP指令始址為參照點(diǎn),但實(shí)際的參照點(diǎn)是對(duì)PC+2,因rel的取值范圍是-128~+127,故可得到轉(zhuǎn)移地址的實(shí)際轉(zhuǎn)移范圍為-126~+129。
④
變址尋址轉(zhuǎn)移指令機(jī)器碼:73H該類指令是一條單字節(jié)雙周期無條件轉(zhuǎn)移指令。在64KB地址范圍內(nèi)無條件轉(zhuǎn)移。
JMP@A+DPTR;PCA+DPTRJZrel;
A=0
PCPC+2+rel
A≠0PCPC+2JNZrel;A≠0
PCPC+2+rel
A=0
PCPC+2①累加器A判零轉(zhuǎn)移(2條)2)條件轉(zhuǎn)移指令CJNEA,#data,rel ;不相等轉(zhuǎn)移
;#data=A,PC←PC+3,C←0 ;#data<A,PC←PC+3+rel,C←0 ;#data>A,PC←PC+3+rel,C←1CJNEA,direct,rel;不相等轉(zhuǎn)移
;若A=(direct),則PC←PC+3,C←0;若A>(direct),則PC←PC+3+rel,C←0;若A<(direct),則PC←PC+3+rel,C←1②不相等轉(zhuǎn)移(影響標(biāo)志位)CJNERn,#data,rel;不相等轉(zhuǎn)移
;若Rn=data,則PC←PC+3,C←0;若Rn>data,則PC←PC+3+rel,C←0;若Rn<data,則PC←PC+3+rel,C←1CJNE@Ri,#data,rel;不相等轉(zhuǎn)移
;若(Ri)=data,則PC←PC+3,C←0;若(Ri)>data,則PC←PC+3+rel,C←0;若(Ri)<data,則PC←PC+3+rel,C←1
ORG2000HCLRA
MOVR0,#30HLOOP0:CJNE@R0,#64H,LOOP1INCALOOP1:INCR0
CJNER0,#3FH,LOOP0SJMP
$例3.19在內(nèi)部RAM30H~3EH中找出值為100(64H)的單元有多少個(gè)?MOVR1,#0FHDJNZR1,LOOP0DJNZdirect,rel;(direct)←(direct)-1;若(direct)≠0,則PC←PC+3+rel;若(direct)=0,則PC←PC+3DJNZRn,rel ;Rn
←Rn-1 ;若Rn=0則PC←PC+2 ;若Rn≠0則PC←PC+2+rel③減一不為零轉(zhuǎn)移
ORG1000HMOVR0,#9CLRALOOP:ADDA,R0DJNZR0,LOOPSJMP$例3.20編程計(jì)算的值①調(diào)用指令(2條)ACALL
addr11;PC
←PC+2
;SP
←SP+1
;(SP)←PC7~0
;SP
←SP-1
;(SP)←
PC15~8
;PC10~0
←
addr11
a)短調(diào)用指令3)子程序調(diào)用和返回指令機(jī)器碼:a10a9a810001a7a6a5a4a3a2a1a0雙字節(jié)指令,不影響標(biāo)志位,在2KB地址范圍內(nèi)尋址,以調(diào)用子程序。b)長調(diào)用指令LCALLaddr16;PC←PC+3;SP←
SP+1,(SP)←PC7~0;SP←SP+1,(SP)←PC15~8;PC
←addr16三字節(jié)指令,在64KB地址范圍內(nèi)調(diào)用子程序。②返回指令(2條)PC15~8
←(SP),SP←SP-1PC7~0
←(SP),SP←SP-1a)子程序返回指令
RET調(diào)用子程序后必須返回主程序,因此,每種子程序的最后一條指令必須是返回指令RET。返回時(shí)完成將調(diào)子時(shí)壓入堆棧的斷點(diǎn)地址送回PC以恢復(fù)斷點(diǎn)功能。堆棧遵循“后進(jìn)先出”原則。b)中斷返回指令RETI中斷服務(wù)程序的最后一條指令后是中斷返回指令RETI。其恢復(fù)斷點(diǎn)的操作與返回指令RET相同。此條指令前必須將相應(yīng)的優(yōu)先級(jí)狀態(tài)觸發(fā)器清0。PC15~8
←(SP),SP←
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版生態(tài)物流綠色包裝合同3篇
- 二零二五年度環(huán)保產(chǎn)品商標(biāo)使用許可協(xié)議范本3篇
- 科創(chuàng)孵化器項(xiàng)目建設(shè)方案
- 音樂舞蹈培訓(xùn)委托合同三篇
- 二零二五年度個(gè)人挖機(jī)租賃合同解除條件合同4篇
- 二零二五年度個(gè)人與個(gè)人房產(chǎn)購置借款協(xié)議2篇
- 2025版高端車庫租賃及個(gè)性化定制服務(wù)合同范本3篇
- 二零二五年度智能家居裝修設(shè)計(jì)與施工一體化協(xié)議書2篇
- 酒店餐飲美工的工作總結(jié)
- 二零二五年度個(gè)人電動(dòng)車轉(zhuǎn)讓與充電設(shè)施安裝合同3篇
- 2024-2030年中國凈菜加工行業(yè)產(chǎn)能預(yù)測(cè)及投資規(guī)模分析報(bào)告版
- 2025年公司副總經(jīng)理述職報(bào)告范文
- 冬季道岔除雪作業(yè)
- 湖北省荊州市八縣市2023-2024學(xué)年高一上學(xué)期期末聯(lián)考數(shù)學(xué)試題 含解析
- 中小學(xué)校食品安全與膳食經(jīng)費(fèi)管理工作指引
- 電商平臺(tái)客服人員績效考核手冊(cè)
- 2024分布式光伏組件檢測(cè)標(biāo)準(zhǔn)
- 2024至2030年中國酒糟行業(yè)市場發(fā)展現(xiàn)狀及潛力分析研究報(bào)告
- 獅子王影視鑒賞
- 一年級(jí)數(shù)學(xué)加減法口算題每日一練(25套打印版)
評(píng)論
0/150
提交評(píng)論