匯編指令系統(tǒng)_第1頁
匯編指令系統(tǒng)_第2頁
匯編指令系統(tǒng)_第3頁
匯編指令系統(tǒng)_第4頁
匯編指令系統(tǒng)_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第3章80C51系列單片機(jī)指令系統(tǒng)本章要點

80C51指令的基本格式

80C51指令功能分類指令系統(tǒng)中的常用符號

80C51指令系統(tǒng)的七種尋址方式

數(shù)據(jù)傳送類指令算術(shù)運(yùn)算類指令 邏輯運(yùn)算及移位指令位操作類指令控制轉(zhuǎn)移類指令

151系列單片機(jī)指令集含有111條指令

每條指令在執(zhí)行時要花去一定的時間,以機(jī)器周期為單位。按指令執(zhí)行時間分類:單周期(64條);雙周期(45條);4周期(2條)按指令的功能分類,可分為5大類:數(shù)據(jù)傳送類(29條);算術(shù)運(yùn)算類(24條)邏輯運(yùn)算及移位類(24);控制轉(zhuǎn)移類(17條)位操作類(17條)每條指令在程序存儲器ROM中占據(jù)一定的空間,以字節(jié)為單位。按指令所占字節(jié)數(shù)分類:單字節(jié)(49條);雙字節(jié)(46條);3字節(jié)(16條)2§3-1指令系統(tǒng)基本概念標(biāo)號:操作碼操作數(shù);注釋

3.1.1指令基本格式方括符[]表示可選項標(biāo)號代表指令所在地址,1-8個字母/數(shù)字,“:”結(jié)尾[標(biāo)號:]操作碼[目的操作數(shù)][,源操作數(shù)][;注釋]START:MOVA,#30H;將立即數(shù)30H傳送至A中MOVDPTR,#5678H;將立即數(shù)5678H傳送至DPTR3⑴標(biāo)號:指令的符號地址。①用于一段功能程序的識別標(biāo)記或控制 轉(zhuǎn)移地址。指令前的標(biāo)號代表該指令的地址,是用符號表示的地址。一般用英文字母和數(shù)字組成。④標(biāo)號必須用冒號“:”與操作碼分隔。4⑵操作碼:表示指令的操作功能。①操作碼用助記符表示,它代表了指令 的操作功能。②操作碼是指令的必需部分,是指令的核心,不可缺少。5⑶操作數(shù):參加操作的數(shù)據(jù)或數(shù)據(jù)地址。⑤操作數(shù)與操作碼之間用空格分隔,操作數(shù)與 操作數(shù)之間用逗號“,”分隔。①操作數(shù)可以是數(shù)據(jù),也可以是數(shù)據(jù)的地址、 數(shù)據(jù)地址的地址或操作數(shù)的其他信息。②操作數(shù)可分為目的操作數(shù)和源操作數(shù)。③操作數(shù)可用二進(jìn)制數(shù)、十進(jìn)制數(shù)或十六進(jìn)制 數(shù)表示。④操作數(shù)的個數(shù)可以是0~3個。6⑷注釋:指令功能說明。①注釋屬于非必需項,是為便于閱讀, 對指令功能作的說明和注解。②注釋必須以“;”開始。73.1.2指令分類⑶ 按指令功能分類:可分為數(shù)據(jù)傳送類、算術(shù)運(yùn)算類、邏輯運(yùn)算類、位操作類和控制轉(zhuǎn)移類等5大類指令。80C51共有111條指令。⑴ 按指令長度分類:可分為1字節(jié)、2字節(jié)和3字節(jié)指令。⑵ 按指令執(zhí)行時間分類:可分為1機(jī)周、2機(jī)周和4機(jī)周指令。83.1.3指令系統(tǒng)中的常用符號⑹bit:位地址。SETBACC.7

代表片內(nèi)RAM中的可尋址位00H~7FH及SFR中的可尋址位。⑴#:立即數(shù)符。MOVA,#30H

#data:8位立即數(shù);#data16:16位立即數(shù)。⑵direct:8位直接地址MOVA,3AH

代表內(nèi)RAM00H~7FH或SFR的80H~FFH。⑶@:間接尋址符。MOVA,@R0如@Ri,@DPTR,@A+PC,@A+DPTR。⑷addr11:11位目的地址。

addr16:16位目的地址。⑸rel:帶符號的8位偏移地址。SJMPrel

用于轉(zhuǎn)移指令,其范圍是相對于下一條指令第1字節(jié)地址的-128~+127個字節(jié)。93.1.4尋址方式尋址就是尋找操作數(shù)的地址。七種尋址方式,一條指令可能含多種尋址方式立即尋址直接尋址寄存器尋址寄存器間接尋址變址尋址(基址寄存器+變址寄存器間接尋址)相對尋址位尋址10【例】⒈立即尋址立即尋址是直接給出操作數(shù),操作數(shù)前有立即數(shù)符“#”。MOVA,#30H;將立即數(shù)30H傳送至A中MOVDPTR,#5678H;將立即數(shù)5678H傳送至DPTRADDA,#05H;(A)←(A)+立即數(shù)05H注意:符號“#”表明其后跟的是立即數(shù),立即數(shù)——就是數(shù)字量本身。11⒉直接尋址MOVA,3AH

;將內(nèi)RAM3AH單元中的數(shù)據(jù)傳送至A中MOVA,P0

;將特殊功能寄存器P0口中的數(shù)據(jù)傳送至A中說明:3AH和P0是以direct形式出現(xiàn)的直接地址訪問特殊功能寄存器SFR只能采用直接尋址方式。直接尋址是給出操作數(shù)的直接地址。直接尋址范圍為內(nèi)RAM128B和特殊功能寄存器。【例】12⒊寄存器尋址MOVA,R0;將R0中的數(shù)據(jù)傳送至A中INCAMULAB從寄存器中讀取操作數(shù)或存放操作數(shù)進(jìn)寄存器寄存器尋址的操作數(shù)在規(guī)定的寄存器中。

規(guī)定的寄存器有:①工作寄存器R0~R7

②累加器A

③雙字節(jié)AB

④數(shù)據(jù)指針DPTR

⑤位累加器Cy這些被尋址寄存器中的內(nèi)容就是操作數(shù)【例】13⒋寄存器間接尋址MOVA,@R0;將以R0中內(nèi)容為地址的存儲單元中的數(shù)據(jù)傳送至A中MOVXA,@DPTR;將外RAMDPTR所指存儲單元中的數(shù)據(jù)傳送至A中PUSHPSW;將PSW中數(shù)據(jù)傳送至堆棧指針SP所指的存儲單元中MOV@R1,#0FH;(30H)←立即數(shù)0FH

寄存器中的內(nèi)容是一個地址,由該地址單元尋址到所需的操作數(shù)。間接尋址用間址符“@”作為前綴。【例】注意:1)“間接”表示某寄存器中的“內(nèi)容”只是一個“單元地址”,這個地址單元中存放的數(shù)據(jù)才是要找的“操作數(shù)”。2)符號“@”表示“在…”,其含義與讀音皆同“at”。14⒌變址尋址MOVCA,@A+DPTR

【例】在變址尋址中,操作數(shù)地址=基址+變址用于讀ROM數(shù)據(jù)操作。;將A的內(nèi)容與DPTR內(nèi)容相加,得到一個新地址,從該地址ROM中讀取數(shù)據(jù)送入A中。以16位的地址指針寄存器DPTR或16位的PC寄存器為基址寄存器,以累加器A為變址寄存器,兩者中的“內(nèi)容”形成一個16位的“地址”,該“地址”所指的存儲單元中的內(nèi)容才是操作數(shù)。MOVCA,@A+PC;A(A+PC)

15

當(dāng)前PC值加上指令中規(guī)定的偏移量rel,構(gòu)成實際的操作數(shù)地址

例:SJMPrel

操作:跳轉(zhuǎn)到的目的地址=當(dāng)前16位PC值+rel⒍相對尋址注意:1)“當(dāng)前PC值”指程序中下一條指令所在的首地址,是一個16位數(shù);2)符號“rel”表示“偏移量”,是一個帶符號的單字節(jié)數(shù),范圍是:-128—+127(80H—7FH)在實際編程中,“rel”通常用標(biāo)號代替16在實際編程中,“rel”通常用標(biāo)號代替例:SJMPLOOP1例:2000H:SJMP08H;原PC值為2000H;執(zhí)行這條指令后的當(dāng)前PC值為2002H,rel為08H。2002H+08H=200AH,轉(zhuǎn)移目的地址為200AH,程序就跳轉(zhuǎn)至200AH去執(zhí)行了。右圖為SJMP08H相對尋址示意圖。17;將位地址07H(字節(jié)地址20H中最高位)中的數(shù)據(jù)傳送至進(jìn)位位Cy。⒎位尋址位尋址是對內(nèi)RAM和特殊功能寄存器中的可尋址位進(jìn)行操作的尋址方式。MOVC,07H

指令中直接給出了操作數(shù)所在的位地址。例:CLRP1.0;(P1.0)←0SETBACC.7;(ACC.7)←1CPLC;(C)←NOT(C)18注意:1)位地址里的數(shù)據(jù)只可能是一個0或12)有的位地址十分明確,如P1.0,ACC.7等,有的位地址則“不太明確”,如:MOVA,17H;(A)←(17H),17H是字節(jié)地址MOVACC.0,17H;(ACC.0)←(17H),這里ACC.0是位地址所以該指令中的17H是22H單元的第7位19§3-2指令系統(tǒng)功能分五類,共111條指令

數(shù)據(jù)傳送類指令

算術(shù)運(yùn)算類指令

邏輯運(yùn)算及移位指令

位操作類指令

控制轉(zhuǎn)移類指令20①M(fèi)OVA,Rn ;Rn→A,n=0~7

②MOVA,@Ri ;(Ri)→A,i=0、1③MOVA,direct;(direct)→A④MOVA,#data;data→A

3.2.1數(shù)據(jù)傳送類指令⒈內(nèi)RAM數(shù)據(jù)傳送指令⑴以累加器A為目的字節(jié)的傳送指令(4條)【例3-1】若R0=40H,(30H)=60H,(40H)=50HMOVA,R0;將工作寄存器R0中的數(shù)據(jù)傳送至A中,A=40HMOVA,@R0;將以R0中內(nèi)容為地址的存儲單元中的數(shù)據(jù)送至A中A=50HMOVA,30H;將直接地址30H存儲單元中的數(shù)據(jù)傳送至A中,A=60HMOVA,#30H;將立即數(shù)#30H送入A中,A=30H21①M(fèi)OVRn,A;A→Rn,n=0~7②MOVRn,direct;(direct)→Rn,n=0~7③MOVRn,#data;data→Rn,n=0~7⑵以工作寄存器Rn為目的字節(jié) 的傳送指令(3條)22⑶以直接地址為目的字節(jié)的傳送指令(5條)①M(fèi)OVdirect,A ;A→(direct)②MOVdirect,Rn ;Rn→(direct),n=0~7③MOVdirect,@Ri ;(Ri)→(direct),i=0、1④MOVdirect1,direct2;(direct2)→(direct1)⑤MOVdirect,#data ;data→(direct)23⑷以寄存器間址為目的字節(jié)的傳送指令(3條)①M(fèi)OV@Ri,A ;A→(Ri),i=0、1②MOV@Ri,direct;(direct)→(Ri),i=0、1③MOV@Ri,#data;data→(Ri),i=0、124⒉16位數(shù)據(jù)傳送指令MOVDPTR,#data16;data16→DPTR【例】MOVDPTR,#1234H;DPTR=1234H該指令也可以用兩條8位數(shù)據(jù)傳送指令實現(xiàn):MOVDPH,#12H;DPH=12HMOVDPL,#34H;DPL=34H,DPTR=1234H25①M(fèi)OVXA,@Ri;(Ri)→A,i=0、1②MOVXA,@DPTR;(DPTR)→A③MOVX@Ri,A;A→(Ri),i=0、1④MOVX@DATR,A;A→(DATR)⒊外RAM傳送指令(4條)26⒋讀ROM指令(2條)內(nèi)RAM(包括特殊功能寄存器):用MOV指令傳送;外RAM:用MOVX指令傳送;ROM:用MOVC指令傳送。①M(fèi)OVCA,@A+DPTR;(A+DPTR)→A②MOVCA,@A+PC;PC+1→PC,(A+PC)→A三個不同的存儲空間用三種不同的指令傳送:27【例3-9】按下列要求傳送數(shù)據(jù):設(shè)ROM(2000H)=ABH(1)ROM2000H單元數(shù)據(jù)送內(nèi)RAM10H單元;(2)R0M2000H單元數(shù)據(jù)送外RAM80H單元;(3)ROM2000H單元數(shù)據(jù)送外RAM1000H單元;解(1):MOVDPTR,#2000H;置基址2000H,DPTR=2000H MOVA,#00H;置變址0,A=00H MOVCA,@A+DPTR;讀ROM2000H,A=ABH MOV10H,A;存內(nèi)RAM10H單元,(10H)=ABH解(2):MOVDPTR,#1FFFH;置基址1FFFH,DPTR=1FFFH MOVA,#01H;置變址01H,A=01H MOVCA,@A+DPTR;讀ROM2000H,A=ABH NOVR0,#80H;置外RAN間址,R0=80H MOVX@R0,A;寫外RAM80H,外RAM(80H)=ABH解(3):MOVDPTR,#2000H;置基址2000H,DPTR=2000H MOVA,#00H;置變址0,A=00H MOVCA,@A+DPTR;讀ROM2000H,A=ABH MOVDPH,1OH;修改外RAN地址,DPTR=1000H MOVX@DPTR,A;寫外RAM1000H,外RAM(1000H)=ABH28【例3.10】已知ROM中存有0~9的平方表,首地址為2000H,試根據(jù)累加器A中的數(shù)值查找對應(yīng)的平方值,存入內(nèi)RAM30H。(設(shè)A=3)

解:若用DPTR作為基址寄存器,可編程如下:1000H:MOVDPTR,#2000H;置ROM平方表首地址MOVCA,@A+DPTR;A+2000H=2003H(設(shè)A=3),;A=(2003H)=09HMOV30H,A;平方值存入內(nèi)RAM30H中 …………2000H:00H;平方表:02=02001H:01H;12=12002H:04H;22=42003H:09H;32=92004H:10H;42=16,16=10H…………2009H:51H;92=81,81=51H29①PUSHdirect;SP+1→SP,(direct)→(SP)

②POPdirect;(SP)→(direct),SP-1→SP

⒌堆棧操作指令(2條)30⑴PUSH為入棧指令例PUSH30H;(30H)=2BH,具體操作是:

先將堆棧指針SP的內(nèi)容(0FH)加1,指向堆棧頂?shù)囊粋€空單元,此時SP=10H;②然后將指令指定的直接尋址單元30H中的數(shù)據(jù)(2BH)送到該空單元中。31⑵POP為出棧指令例POP40H;(40H)=4CH,具體操作是:先將SP所指單元0FH(棧頂?shù)刂罚┲械臄?shù)據(jù)(4CH)彈出,送到指定的內(nèi)RAM單元40H,(40H)=4CH;②然后SP-1→SP,SP=0EH,SP仍指向棧頂?shù)刂贰?2⒍交換指令(5條)

①XCHA,Rn ;A←→Rn,n=0~7②XCHA,@Ri ;A←→(Ri),i=0、1③XCHA,direct;A←→(direct)SWAPA;A7~4←→A3~0⑴字節(jié)交換指令⑵半字節(jié)交換指令XCHDA,@Ri;A3~0←→(Ri)3~0高4位不變。i=0、1⑶累加器高低四位互換33①ADDA,Rn;A+Rn→A(n=0~7)

有進(jìn)位,Cy=1;無進(jìn)位,Cy=0②ADDA,@Ri;A+(Ri)→A(i=0、1)

有進(jìn)位,Cy=1;無進(jìn)位,Cy=0③ADDA,direct;A+(direct)→A有進(jìn)位,Cy=1;無進(jìn)位,Cy=0④ADDA,#data;A+data→A有進(jìn)位,Cy=1;無進(jìn)位,Cy=0

3.2.2算術(shù)運(yùn)算類指令⒈加法指令⑴不帶Cy加法指令(4條)34⑵帶Cy加法指令(4條)①ADDCA,Rn;A+Rn+Cy→A(n=0~7)有進(jìn)位,Cy=1;無進(jìn)位,Cy=0②ADDCA,@Ri;A+(Ri)+Cy→A(i=0、1)有進(jìn)位,Cy=1;無進(jìn)位,Cy=0③ADDCA,direct;A+(direct)+Cy→A有進(jìn)位,Cy=1;無進(jìn)位,Cy=0④ADDCA,#data;A+data+Cy→A有進(jìn)位,Cy=1;無進(jìn)位,Cy=0

35⒉減法指令(4條)①SUBBA,Rn;A-Rn-Cy→A,(n=0~7),

有借位,Cy=1;無借位,Cy=0

②SUBBA,@Ri;A-(Ri)-Cy→A,(n=0~1),有借位,Cy=1;無借位,Cy=0③SUBBA,direct;A-direct-Cy→A,有借位,Cy=1;無借位,Cy=0④SUBBA,#data;A-data-Cy→A,有借位,Cy=1;無借位,Cy=0

36①INCA ;A+1→A②INCRn ;Rn+1→Rn,n=0~7③INC@Ri ;(Ri)+1→(Ri),i=0、1④INCdirect ;(direct)+1→(direct)⑤INCDPTR ;DPTR+1→DPTR⒊加1減1指令⑴加1指令(5條)⑵減1指令(4條)①DECA ;A-1→A②DECRn ;Rn-1→Rn,n=0~7③DEC@Ri ;(Ri)-1→(Ri),i=0、1④DECdirect;(direct)-1→(direct)

加1減1指令涉及A時,會影響P,但不影響其他標(biāo)志位。

37⒋BCD碼調(diào)整指令DAA功能:對加法運(yùn)算結(jié)果進(jìn)行BCD碼調(diào)整。十進(jìn)制調(diào)整:(DAA——1條)用于兩個BCD碼之間的相加,這條指令只能跟在ADD或ADDC之后38BCD碼是指“用二進(jìn)制表達(dá)的十進(jìn)制數(shù)”。如:十進(jìn)制數(shù)20可以用二進(jìn)制數(shù)00010100B表示;也可以用十六進(jìn)制數(shù)14H表示;還可以用BCD碼00100000B或20H表示。4個二進(jìn)制位就可以表示一位BCD碼:0000~1001可表示十進(jìn)制數(shù)(BCD數(shù))0~9;8個二進(jìn)制位就可以表示兩位壓縮的BCD碼:00000000~10011001表示00~99。

十進(jìn)制調(diào)整:(DAA——1條)用于兩個BCD碼之間的相加,這條指令只能跟在ADD或ADDC之后39若(A)3~0

9或(AC)=1則(A)3~0

(A)3~0+6;若(A)7~4

9或(CY)=1則(A)7~4

(A)7~4+6;例:兩個十進(jìn)制數(shù)“65”與“58”相加,根據(jù)常識,顯然其和應(yīng)當(dāng)為“123”。MOVA,#65HADDA,#58HDAA結(jié)果:(A)=23H(CY)=1

指令“DAA”完成的操作:

65011001015801011000

+1318192660110011040若(A)3~0

9或(AC)=1則(A)3~0

(A)3~0+6;若(A)7~4

9或(CY)=1則(A)7~4

(A)7~4+6;又如:兩個十進(jìn)制數(shù)“39”與“58”相加,根據(jù)常識,顯然其和應(yīng)當(dāng)為“97”。MOVA,#39HADDA,#58HDAA結(jié)果:(A)=97H(CY)=0

39001110015801011000

+0723960110指令“DAA”完成的操作:41

DIVAB;(A÷B)商→A,余數(shù)→BCy=0,OV=0

⒌乘除法指令⑴乘法指令(1條)MULAB;A×B→BA⑵除法指令(1條)42三、邏輯運(yùn)算及移位指令①ANLA,Rn;A∧Rn→A②ANLA,@Ri;A∧(Ri)→A③ANLA,#data;A∧data→A④ANLA,direct;A∧(direct)→A⑤ANLdirect,A;(direct)∧A→direct⑥ANLdirect,#data;(direct)∧data→direct⒈邏輯“與”運(yùn)算指令(6條)43⒉邏輯“或”運(yùn)算指令(6條)①ORLA,Rn;A∨Rn→A②ORLA,@Ri;A∨(Ri)→A③ORLA,#data;A∨data→A④ORLA,direct;A∨(direct)→A⑤ORLdirect,A;(direct)∨A→direct⑥ORLdirect,#data;(direct)∨data→direct44⒊邏輯“異或”運(yùn)算指令(6條)①XRLA,Rn;A

Rn→A②XRLA,@Ri;A

(Ri)→A③XRLA,#data;A

data→A④XRLA,direct;A

(direct)→A⑤XRLdirect,A;(direct)

A→direct⑥XRLdirect,#data;(direct)

data→direct45

①CLRA ;0→A ②CPLA ;A→A⒋清零和取反指令⒌循環(huán)移位指令(4條)①循環(huán)左移:RLA②帶Cy循環(huán)左移:RLCA

③循環(huán)右移:RRA

④帶Cy循環(huán)右移:RRCA

46①M(fèi)OVC,bit;(bit)→Cy

②MOVbit,C;Cy→bit四、位操作類指令⒈位傳送指令(2條)

指令中C即進(jìn)位位Cy的助記符,bit為內(nèi)RAM20H~2FH中的128個可尋址位和特殊功能寄存器中的可尋址位存儲單元。

【例3-36】將位存儲單元24H.4中的內(nèi)容傳送到位存儲單元24H.0。解:MOVC,24H.4;(24H.4)CMOV24H.0,C;C(24H.0)或?qū)懗桑篗OVC,24H;(24H)C,(24H=24H.4)MOV20H,C;C(20H),(20H=24H.0)47⑵位取反指令:①CPLC ;C→C②CPLbit ;(bit)→bit⒉位修正指令(6條)⑴位清0指令:①CLRC ;0→C②CLRbit ;0→bit⑶位置1指令:①SETBC ;1→C②SETBbit ;1→bit48⑴位邏輯“與”運(yùn)算指令:①ANLC,bit ;C∧(bit)→C②ANLC,/bit ;C∧(bit)→C⑵位邏輯“或”運(yùn)算指令:①ORLC,bit ;C∨(bit)→C②ORLC,/bit

;C∨(bit)→C⒊位邏輯運(yùn)算指令(4條)49⑶相對轉(zhuǎn)移指令

SJMPrel;PC+2→PC,PC+rel→PC五、控制轉(zhuǎn)移類指令⒈無條件轉(zhuǎn)移指令(3條)⑴長轉(zhuǎn)移指令LJMPaddr16;addr15~0→PC,

⑵短轉(zhuǎn)移指令A(yù)JMPaddr11 ;PC+2→PC, addr10~0→PC10~0, PC15~11不變⑷間接轉(zhuǎn)移指令(散轉(zhuǎn)指令)JMP@A+DPTR ;A+DPTR→PC50LJMP、AJMP、SJMP三條無條件轉(zhuǎn)移指令的區(qū)別:①轉(zhuǎn)移范圍不一樣。

LJMP轉(zhuǎn)移范圍是64KB;AJMP轉(zhuǎn)移范圍是與當(dāng)前PC值同一2KB;SJMP轉(zhuǎn)移范圍是當(dāng)前PC-128B~+127B。使用AJMP和SJMP指令應(yīng)注意轉(zhuǎn)移目標(biāo)地址是否在轉(zhuǎn)移范圍內(nèi),若超出范圍,程序?qū)⒊鲥e。②指令字節(jié)不一樣。

LJMP是3字節(jié)指令;AJMP、SJMP是2字節(jié)指令。51⒉條件轉(zhuǎn)移指令(13條)

條件轉(zhuǎn)移指令根據(jù)判斷條件可分為:

⑴判C轉(zhuǎn)移

⑵判bit轉(zhuǎn)移

⑶判A轉(zhuǎn)移

⑷減1非0轉(zhuǎn)移

⑸比較不相等轉(zhuǎn)移指令滿足條件,則轉(zhuǎn)移;不滿足條件,則程序順序執(zhí)行。52②

C=0轉(zhuǎn)移指令:

JNCrel ;PC+2→PC,若Cy=0,則PC+rel→PC,轉(zhuǎn)移

若Cy=1,則程序順序執(zhí)行。⑴判C轉(zhuǎn)移指令(2條)①C=1轉(zhuǎn)移指令: JCrel ;PC+2→PC,若Cy=1,則PC+rel→PC,轉(zhuǎn)移若Cy=0,則程序順序執(zhí)行。53③(bit)=1轉(zhuǎn)移并清0指令: JBCbit,rel;PC+3→PC,;若(bit)=1,則PC+rel→PC,轉(zhuǎn)移,且0→(bit) ;若(bit)=0,則程序順序執(zhí)行⑵判bit轉(zhuǎn)移指令(3條)①(bit)=1轉(zhuǎn)移指令: JBbit,rel;PC+3→PC,若(bit)=1,則PC+rel→PC,轉(zhuǎn)移若(bit)=0,則程序順序執(zhí)行②(bit)=0轉(zhuǎn)移指令: JNBbit,rel;PC+3→PC,若(bit)=0,則PC+rel→PC,轉(zhuǎn)移若(bit)=1,則程序順序執(zhí)行54①A=0轉(zhuǎn)移指令: JZrel;PC+2→PC,若A=0,則PC+rel→PC,轉(zhuǎn)移若A

0,則程序順序執(zhí)行⑶判A轉(zhuǎn)移指令(2條)②A0轉(zhuǎn)移指令: JNZrel;PC+2→PC,若A0,則PC+rel→PC,轉(zhuǎn)移若A=0,則程序順序執(zhí)行55⑷減1非0轉(zhuǎn)移指令(2條)②DJNZdirect,rel;PC+3→PC,(direct)-1→direct若(direct)=0,則程序順序執(zhí)行若(direct)0,則PC+rel→PC,轉(zhuǎn)移

①DJNZRn,rel;PC+2→PC,Rn-1→Rn, 若Rn=0,則程序順序執(zhí)行 若Rn

0,則PC+rel→PC,轉(zhuǎn)移56⑸比較轉(zhuǎn)移指令(4條)①CJNEA,direct,rel;PC+3→PC,;若A=(direct),則程序順序執(zhí)行;若A≠(direct),則PC+rel→PC,轉(zhuǎn)移;且若A≥(direct),Cy=0;若A<(direct),Cy=1

CJNEA,#data,rel;PC+3→PC,;若A=data,則程序順序執(zhí)行;若A≠data,則PC+rel→PC,轉(zhuǎn)移;且若A≥data,Cy=0;若A<data,Cy=1

CJNERn,#data,rel;PC+3→PC,;若Rn=data,則程序順序執(zhí)行;若Rn≠data,則PC+rel→PC,轉(zhuǎn)移;且若Rn≥data,Cy=0;若Rn<data,Cy=1④

CJNE@Ri,#data,rel;PC+3→PC,;若(Ri)=data,則程序順序執(zhí)行;若(Ri)≠data,則PC+rel→PC,轉(zhuǎn)移;且若(Ri)≥data,Cy=0;若(Ri)<data,Cy=157①產(chǎn)生當(dāng)前PC:PC+3→PC, (PC+3是因為該指令為三字節(jié)指令)②斷口地址低8位保存到堆棧中: SP+1→SP,(PC)0~7→(SP)③斷口地址高8位保存到堆棧中: SP+1→SP,(PC)8~15→(SP)

④形成轉(zhuǎn)移目標(biāo)地址:addr16→PC⒊調(diào)用和返回指令LCALLaddr16 ;PC+3→PC,SP+1→SP,(PC)0~7→(SP) ;SP+1→SP,(PC)8~15→(SP);addr16→PC⑴長調(diào)用指令LCALL指令執(zhí)行步驟:58①產(chǎn)生當(dāng)前PC:PC+2→PC,

溫馨提示

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

評論

0/150

提交評論