![第三章MCS-51單片機的指令系統(tǒng)_第1頁](http://file4.renrendoc.com/view12/M03/13/2D/wKhkGWZo9XGAasFWAAFakZ4CYA4442.jpg)
![第三章MCS-51單片機的指令系統(tǒng)_第2頁](http://file4.renrendoc.com/view12/M03/13/2D/wKhkGWZo9XGAasFWAAFakZ4CYA44422.jpg)
![第三章MCS-51單片機的指令系統(tǒng)_第3頁](http://file4.renrendoc.com/view12/M03/13/2D/wKhkGWZo9XGAasFWAAFakZ4CYA44423.jpg)
![第三章MCS-51單片機的指令系統(tǒng)_第4頁](http://file4.renrendoc.com/view12/M03/13/2D/wKhkGWZo9XGAasFWAAFakZ4CYA44424.jpg)
![第三章MCS-51單片機的指令系統(tǒng)_第5頁](http://file4.renrendoc.com/view12/M03/13/2D/wKhkGWZo9XGAasFWAAFakZ4CYA44425.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三章MCS-51單片機指令系統(tǒng)1、指令的格式。2、尋址方式。3、分類指令。3.1
概述3.2
尋址方式本章主要內容3.3
MCS-51單片機指令系統(tǒng)《單片機原理及應用》
本節(jié)主要論述指令格式、指令的三種表示形式、指令字節(jié)數(shù)、指令分類和指令系統(tǒng)綜述等五個問題。3.1
概述
標號又稱為指令地址符號,一般由1-6個符組成,以字母開頭的字母數(shù)字串。一、指令格式[標號]:操作碼[操作數(shù)][;注釋]注意:方括號是可選項。
操作碼用MCS-51單片機所規(guī)定的助記符來表示,它規(guī)定指令進行何種操作。
操作數(shù)是指令操作的對象,分為目的操作數(shù)和源操作數(shù)。
注釋是對該指令作用或功能的說明。二、指令的三種表達形式1、指令的二進制形式
2、指令的十六進制形式3、指令的助記符形式
如果累加器A中已有一個加數(shù)20,那么能夠完成20+6并把結果送入累加器A的加法指令:
二進制形式:
0011100000000110B
十六進制形式:
3806H
助記符形式:
ADD
A,#06H;A←A+06H例如1、單字節(jié)指令(49條)
單字節(jié)指令只有一個字節(jié)。1)無操作數(shù)單節(jié)指令
只有操作碼字段,操作數(shù)隱含在操作碼中
例如:INCDPTR
指令碼:10100011三、指令的字節(jié)數(shù)
2)含有操作數(shù)寄存器號的單字節(jié)指令例如:八位數(shù)傳送指令
MOV
A,Rn其中,n的取值范圍為0~7。指令碼:11101rrr
這類指令的指令碼有操作碼字段和專門用來指示操作數(shù)所在寄存器號的字段組成。
雙字節(jié)指令含有兩個字,操作碼字節(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)算術運算指令3)邏輯運算指令1)數(shù)據傳送指令4)控制轉移和位操作指令四、指令的分類及符號說明1)Rn
:表示當前選中的寄存器區(qū)的8個工作寄存器(n=0~7)中的一個。2)@Ri:表示寄存器間接尋址,Ri只能是R0或R1。3)#data:8位立即數(shù),實際使用時data應是00H~0FFH中的一個。4)#data16:16位立即數(shù)。2、符號的說明5)direct:表示8位內部數(shù)據存儲器單
元的地址。6)
addr16:表示16位的目的地址。7)addr11:表示11位的目的地址。8)rel
:表示8位帶符號地址偏移量。9)@DPTR
:表示以DPTR為數(shù)據指針的間接尋址,用于對外部64KRAM/ROM尋址。10)bit
:表示內部RAM(包括專用寄存器)中
的直接尋址位。13)@:為間址寄存器或基址寄存器的前
綴。如@Ri,@A+PC,@A+DPTR。14)/:位操作數(shù)的前綴,表示對該位操作
數(shù)取反。如/bit.15)$:當前指令的地址。返回
MCS-51單片機的指令系統(tǒng)共有七種尋址方式。3.2尋址方式
特點:操作數(shù)以寄存器的名字表示。尋址范圍:工作寄存器R0~R7、A、B、DPTR。一、寄存器尋址例如:R0(35H)A結果A=35HMOVA,R0;AR0特點:指令直接給出操作數(shù)。操作數(shù)字前加“#”符號為前綴,以區(qū)別直接地址。#data或#data16,只能做源操作數(shù),常用于賦初值。二、立即尋址例如(1)MOVA,44H;A(44H)(2)MOVA,#44H;A44H(1)將片內RAM中44H單元的內容送累加器A,屬于直接尋址。(2)則是把44H這個數(shù)本身送到累加器A,屬于立即尋址。功能:特點:直接給出操作數(shù)地址,直接地址常用8位二進制地址。尋址范圍:只限于內部RAM。內部RAM的低128單元和SFR,SFR除以單元地址形式給出外,還以寄存器符號形式給出。直接尋址是訪問SFR的唯一方法。三、直接尋址功能:
將片內RAM56H單元中的內容34H送到累加器A中。例如:MOVA,56H;A(56H)34H片內RAM
34H累加器A56H圖3.1指令傳遞特點:操作數(shù)地址以寄存器名稱間接給出,以寄存器中的內容作為操作數(shù)的地址。加標識符@區(qū)別于寄存器尋址。MCS-51規(guī)定:只能以R0、R1和DPTR實現(xiàn)問址。在寄存器前加“@”符號作前綴。四、寄存器間接尋址(1)內部RAM低128單元:只能使用R0、R1作間址寄存器,通用形式為@Ri(i=0,1)。尋址范圍:(2)外部RAM64KB:只能使用DPTR作間址寄存器,其形式為@DPTR。(3)外部RAM低256單元:一個特殊尋址區(qū),除可用DPTR作為間址寄存器尋址外,還可用R0或R1作間址寄存器尋址。(4)堆棧操作指令(PUSH和POP)也應算作寄存器間接尋址,即以堆棧指針SP作間址寄存器的間接尋址方式。寄存器間接尋址指令不能用于尋址SFR。寄存器間接尋址是訪問外部RAM的唯一方法。MOVA,R0;A←R0MOVA,@R0;A←(R0)例如:R0=65H,(65H)=26H26H片內RAMA
65H
圖3.2
R065H①②注意:@是它區(qū)別寄存器尋址的標志。執(zhí)行①結果A=65H,執(zhí)行②結果A=26H。特點:只出現(xiàn)在相對轉移指令中。五、相對尋址目的地址=指令地址+指令字節(jié)數(shù)+rel“rel”是一個8位帶符號二進制補碼數(shù),最大范圍是-128~+127。2000
8026H
SJMP
rel;PC←PC+2+rel程序存儲器A圖3-3指令過程
PC
26H0000H2000H2001H
80H
26H××
××2028H
02H
20H
ALU2002H┆例如
特點:訪問ROM,以DPTR或PC基址寄存器和累加器A變址寄存器的內容和為地址,尋址該地址單元,讀取數(shù)據。常用于查表操作。尋址范圍:64KB的ROM六、變址尋址(1)MOVC
A,@A+PC
;A←(A+PC)(2)MOVC
A,@A+DPTR;A←(A+DPTR)執(zhí)行第一條時先使當前PC值加1,然后把這個加1后的PC值和累加器A中的偏移量相加,作為操作數(shù)地址,從該地址中取出操作數(shù)送入A中。第二條過程與第一條指令類似。
已知:片外ROM的2006H單元中有一數(shù)34H,編寫程序用變址尋址方法把這個數(shù)送入A中,試進行分析。例3.1
解:根據題目要求,基址可定為2000H,地址偏移量則為06H,程序如下:
MOV
DPTR,#2000H;DPTR←2000HMOV
A,#06H;A←06HMOVC
A,@A+DPTR;A←34H程序存儲器A
圖3.4
DPTR
00H0000H34H××2006HALU
如圖3.4所示,這里A具有雙重作用,在指令執(zhí)行前用來存放地址偏移量,指令執(zhí)行后為目的操作數(shù)。20
06H尋址范圍:對片內RAM的位尋址區(qū)和11個可位尋址的SFR進行尋址。七、位尋址當把八位二進制數(shù)中某一位作為操作數(shù)看待時,這個操作數(shù)的地址就稱為位地址,對位地址尋址簡稱位尋址。
MOV30H,C
;30H是位尋址位地址
MOVA,30H
;
30H是直接尋址的字節(jié)地址
MOVC,ACC.7;Cy←ACC.7由上面指令可知,位尋址的位地址與直接尋址的字節(jié)地址形式完全一樣,主要由操作碼來區(qū)分。例如返回
這類指令的源操作數(shù)和目的操作數(shù)地址都在單片機內部。
MOV
dest,
src3.3MCS-51單片機指令系統(tǒng)一、數(shù)據傳送指令1、內部數(shù)據傳送指令(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單元中內容各是什么?
MOV
A,#40HMOV
R7,
#50HMOV
@R1,
#45HMOV31H,#48H例3.2執(zhí)行后,結果為:A=40H,R7=50H,(30H)=45H,(31H)=48H
已知:R0=20H、(21H)=54H、(22H)=55H、(30H)=56H,試問執(zhí)行如下指令后,結果A、40H、R2、20H、和P2口中的內容各是什么?
MOVA,21HMOV40H,AMOVR2,22HMOV@R0,21HMOVP2,30H例3.3結果為: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內部數(shù)據傳送指令的小結
圖3.5內部指令描述Direct直接尋址@Ri間址
Rn寄存器data立即數(shù)累加器A122321223MOV
DPTR,#data16
;DPTR←data16
1)十六位數(shù)據傳送指令2、外部數(shù)據傳送指令(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單元中有一個數(shù)為34H,試用以上二條指令各寫一個程序,把數(shù)送到片內7FH單元中。解:①采用DPTR作為基址寄存器
ORG0000H
LJMP
START ORG0100HSTART: CLRA
;清空A
MOVDPTR,#2008H
;表起始值
MOVCA,@A+DPTR;把A與DPTR相加,
;結果A=34H MOV7FH,A
;結果(7FH)=34H SJMP$
;停止②采用PC作為基址寄存器
ORG
0000H
LJMP
MAIN
ORG
2000H
MAIN:MOV
A,#05H
;偏移量為05H,因為該指令占
;二個字節(jié)數(shù)
MOVCA,@A+PC
;首先將PC+1,則PC=2003,
;然后加05H,則PC指向2008單元
MOV7FH,A
;結果(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單元中有一個數(shù)為30H,試編程把30H送到片外RAM的2000H單元中。
解:雖都是片外RAM的地址單元,但不能直接傳送,必須經過累加器A的轉送,才能實現(xiàn)。ORG
1000HMOVR1,#60H;R1=60HMOVXA,@R1;A=30HMOVDPTR
,#2000H;DPTR=2000HMOVX@DPTR,A
;2000H←30HSJMP$;停止例3.63、數(shù)據交換指令(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結果:A=75H,(20H)=3FH,R0=20H結果:A=35H,(20H)=7FH,R0=20H結果:A=0F3H
已知:片內20H單元有一個數(shù)為30H,片外20H單元有一個數(shù)為03H,編程把二個數(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單元中內容相交換。1、加法指令(13條)ADD A,Rn
ADD A,directADD A,@RiADD A,#data二、算術運算指令(24條)1)不帶進位位(Cy)加法指令(4條)
試分析執(zhí)行如下指令后,累加器A和PSW中各標志的變化情況如何?
MOV
A,#5AH ADDA,#6BH
例3.10A=01011010Bdata=01101011B
90107+)111000101B1CS1970CP
1AC圖3.6加法指令執(zhí)行過程ADDCA,
RnADDCA,
#dataADDCA,
directADDCA,
@Ri2)帶進位位(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解:操作結果應為:
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中的內容各是什么?
INCA INCR0 INC43H INC@R0
INCDPTR例3.12解:由加1指令的規(guī)則,上述指令執(zhí)行后的的操作結果為: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)帶進位位(Cy)減法指令(4條)試分析執(zhí)行下列指令后,累加器A和PSW中各標志位狀態(tài)?
CLRC MOVA,#35H SUBBA,#0B6H
解:第一條指令用于清標志位Cy;第二條指令是對被減數(shù)送累加器A中;第三條指令是進行減法指令,結果為: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中各標志位狀態(tài)?①DECA
②DEC@R1③DEC60H
④DECR7例3.14解:根據減1指令功能,結果為:①A=0FH,P=1②(3BH)=0FEH,
PSW不變③(60H)=0FFH,PSW不變④R7=33H,
PSW不變3、十進制調整指令(1條)DAA對A中兩個壓縮BCD數(shù)相加之和調整為2位BCD碼數(shù)。1)只能用在對BCD碼數(shù)進行ADD或ADDC操
作后使用。2)影響標志位:有進位時C=1。1)BCD加法特點:
試編程實現(xiàn)44H+86H的BCD加法程序,并對其工作原理分析。解:相應BCD加法程序為:
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調整高4位>9,加6調整圖3.7BCD加法過程注意:對于BCD減法
MCS-51單片機中沒有十進制減法調整指令,因此,BCD減法運算必須采用BCD補碼運算法則。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、與指令ANLA,RnANLA,@RiANLA,directANLA,#dataANLdirect,AANLdirect,#data;AA∧
Rn;AA∧(Ri);AA∧(direct);AA∧#data;direct(direct)∧A;direct(direct)∧#data三、邏輯運算指令(20條)結果:將P1口鎖存器的0、3、4、7位內容屏蔽,而其余位保持原值不變。例如常用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結果:將P1口鎖存器的1、4、5位進行置位,而其余位保持原值不變。常用ORL指令對某些位置位或保留某些位例如ORLP1,#00110010B
ANLA,#00011111B(#1FH)
ANLP1,#11100000B(#0E0H)
ORLP1,A例3.16:將累加器A的內容送P1口的低5位,要求傳送時不影響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、異或指令結果:將P1口鎖存器的0、4、5位內容取反,而其余位保持原值不變。常用XRL指令對某些位取反或保留某些位XRLP1,#00110001B例如CPLACLRA;AA;
A04、累加器清零和取反指令RLA;RRA;ARLCA
;RRCA;5、移位指令(4條)A7A0CyA7A0CyA7A0A7A0AAA
已知:M和M+1單元中有一個16位二進制數(shù)(M為低8),編程將其擴大到二倍(注意:該數(shù)最大可擴大到65536)。
解:一個16位二進制數(shù)擴大到二倍就等于是把它進行一次算術左移。由于MCS-51單元片機的移位指令都是二進制8位的移位指令,因此16位數(shù)的移位指令必須用程序來實現(xiàn)。
算法為:
M
M+1
0例3.17ORG
0030HCLR
C ;清進位標志位MOV
R0,#M ;操作數(shù)低8位地址送R0MOV
A,@R0 ;A←操作數(shù)低8位RLC
A ;低8位操作數(shù)左移低位補0MOV@R0,A ;結果送回M單元,Cy中為最高位INC
R0 ;R0指向M+1單元MOV
A,@R0 ;A←操作數(shù)高8位RLCA ;高8位操作數(shù)左移并加上低位CyMOV@R0,A ;結果送回M+1單元SJMP
$ ;停止LJMP
addr16;PC←addr16AJMPaddr11;PC←PC+2,PC10~0←addr11SJMPrel
;PC←PC+2,PC←PC+relJMP@A+DPTR ;PC←A+DPTR四、控制轉移和位操作指令1、控制轉移指令(17條)1)無條件轉移指令MCS-51系列單片機可以在64KB地址范圍內尋址,絕對轉移指令的轉移范圍只在PC當前值所指的2KB地址范圍內。①長轉移指令LJMPaddr16;PCaddr16三字節(jié)指令,不影響標志位,可在64KB地址范圍內無條件轉移。②絕對轉移指令二字節(jié)指令,可在2KB地址范圍內轉移。AJMPaddr11;
PC
PC+2,PC10~0addr11③短轉移指令機器碼:80H
rel
本指令是一條雙字節(jié)雙周期指令,在PC內容加2所指地址上,以rel:-128~+127為偏移量。SJMPrel;PCPC+2+rel
ORG
1000H1000H7401H
START:MOV
A,#01H ;字位碼初值送A1002HF8H
MOVR0,A ;暫存于R01003H90CF01H
LOOP:MOVDPTR,#0CF01H
┋
1017H80rel
SJMP
START
;轉入START┋
SJMP
$
例3.18下列程序中,請計算SJMPSTART指令碼中的rel,并分析目標地址的轉移范圍。a)地址偏移量rel的計算:
目標轉移地址=源地址+2+rel
rel=目標轉移地址-源地址-2
=1000H-1017H-2=-25
rel應采用補碼表示,為此rel=[-25]補=E7H解:SJMP指令中地址偏移量是采用START符號表示的,指明指令執(zhí)行后轉入本程序開頭重新執(zhí)行。b)轉移地址范圍的確定:轉移地址通常以SJMP指令始址為參照點,但實際的參照點是對PC+2,因rel的取值范圍是-128~+127,故可得到轉移地址的實際轉移范圍為-126~+129。
④
變址尋址轉移指令機器碼:73H該類指令是一條單字節(jié)雙周期無條件轉移指令。在64KB地址范圍內無條件轉移。
JMP@A+DPTR;PCA+DPTRJZrel;
A=0
PCPC+2+rel
A≠0PCPC+2JNZrel;A≠0
PCPC+2+rel
A=0
PCPC+2①累加器A判零轉移(2條)2)條件轉移指令CJNEA,#data,rel ;不相等轉移
;#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;不相等轉移
;若A=(direct),則PC←PC+3,C←0;若A>(direct),則PC←PC+3+rel,C←0;若A<(direct),則PC←PC+3+rel,C←1②不相等轉移(影響標志位)CJNERn,#data,rel;不相等轉移
;若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;不相等轉移
;若(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在內部RAM30H~3EH中找出值為100(64H)的單元有多少個?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③減一不為零轉移
ORG1000HMOVR0,#9CLRALOOP:ADDA,R0DJNZR0,LOOPSJMP$例3.20編程計算的值①調用指令(2條)ACALL
addr11;PC
←PC+2
;SP
←SP+1
;(SP)←PC7~0
;SP
←SP-1
;(SP)←
PC15~8
;PC10~0
←
addr11
a)短調用指令3)子程序調用和返回指令機器碼:a10a9a810001a7a6a5a4a3a2a1a0雙字節(jié)指令,不影響標志位,在2KB地址范圍內尋址,以調用子程序。b)長調用指令LCALLaddr16;PC←PC+3;SP←
SP+1,(SP)←PC7~0;SP←SP+1,(SP)←PC15~8;PC
←addr16三字節(jié)指令,在64KB地址范圍內調用子程序。②返回指令(2條)PC15~8
←(SP),SP←SP-1PC7~0
←(SP),SP←SP-1a)子程序返回指令
RET調用子程序后必須返回主程序,因此,每種子程序的最后一條指令必須是返回指令RET。返回時完成將調子時壓入堆棧的斷點地址送回PC以恢復斷點功能。堆棧遵循“后進先出”原則。b)中斷返回指令RETI中斷服務程序的最后一條指令后是中斷返回指令RETI。其恢復斷點的操作與返回指令RET相同。此條指令前必須將相應的優(yōu)先級狀態(tài)觸發(fā)器清0。PC15~8
←(SP),SP←
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 宜賓市荒山土地承包合同范本
- 動漫作品授權合作合同范本
- 企業(yè)用人正式合同范例
- 淺析京劇發(fā)聲與民歌唱法美聲唱法的關系
- 加盟押金店合同范例
- 2025年度市政道路施工建設投資合作協(xié)議
- MW光伏電站項目EC總承包合同范本
- 三方合租協(xié)議合同范本
- 制砂機租賃合同范本
- 保險內勤銷售合同范例
- 餐飲服務與管理(高職)PPT完整全套教學課件
- 成人學士學位英語1000個高頻必考詞匯匯總
- 2023年菏澤醫(yī)學專科學校單招綜合素質模擬試題及答案解析
- 常見食物的嘌呤含量表匯總
- 人教版數(shù)學八年級下冊同步練習(含答案)
- SB/T 10752-2012馬鈴薯雪花全粉
- 2023年湖南高速鐵路職業(yè)技術學院高職單招(英語)試題庫含答案解析
- 濕型砂中煤粉作用及檢測全解析
- 積累運用表示動作的詞語課件
- 機動車登記證書英文證書模板
- 第8課《山山水水》教學設計(新人教版小學美術六年級上冊)
評論
0/150
提交評論