




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章80C51系列單片機(jī)指令系統(tǒng)本章要點(diǎn)80C51指令的基本格式80C51指令功能分類指令系統(tǒng)中的常用符號80C51指令系統(tǒng)的七種尋址方式
數(shù)據(jù)傳送類指令算術(shù)運(yùn)算類指令 邏輯運(yùn)算及移位指令位操作類指令控制轉(zhuǎn)移類指令
51系列單片機(jī)指令集含有111條指令
每條指令在執(zhí)行時(shí)要花去一定的時(shí)間,以機(jī)器周期為單位。按指令執(zhí)行時(shí)間分類:單周期(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條)§3-1指令系統(tǒng)基本概念標(biāo)號:操作碼操作數(shù);注釋
3.1.1指令基本格式方括符[]表示可選項(xiàng)標(biāo)號代表指令所在地址,1-8個(gè)字母/數(shù)字,“:”結(jié)尾[標(biāo)號:]操作碼[目的操作數(shù)][,源操作數(shù)][;注釋]START:MOVA,#30H;將立即數(shù)30H傳送至A中MOVDPTR,#5678H;將立即數(shù)5678H傳送至DPTR⑴標(biāo)號:指令的符號地址。①用于一段功能程序的識別標(biāo)記或控制 轉(zhuǎn)移地址。指令前的標(biāo)號代表該指令的地址,是用符號表示的地址。一般用英文字母和數(shù)字組成。④標(biāo)號必須用冒號“:”與操作碼分隔。⑵操作碼:表示指令的操作功能。①操作碼用助記符表示,它代表了指令 的操作功能。②操作碼是指令的必需部分,是指令的核心,不可缺少。⑶操作數(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ù)的個(gè)數(shù)可以是0~3個(gè)。⑷注釋:指令功能說明。①注釋屬于非必需項(xiàng),是為便于閱讀, 對指令功能作的說明和注解。②注釋必須以“;”開始。
指令分類⑶ 按指令功能分類:可分為數(shù)據(jù)傳送類、算術(shù)運(yùn)算類、邏輯運(yùn)算類、位操作類和控制轉(zhuǎn)移類等5大類指令。80C51共有111條指令。⑴ 按指令長度分類:可分為1字節(jié)、2字節(jié)和3字節(jié)指令。⑵ 按指令執(zhí)行時(shí)間分類:可分為1機(jī)周、2機(jī)周和4機(jī)周指令。指令系統(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個(gè)字節(jié)。3.2
尋址方式尋址就是尋找操作數(shù)的地址。七種尋址方式,一條指令可能含多種尋址方式立即尋址直接尋址寄存器尋址寄存器間接尋址變址尋址(基址寄存器+變址寄存器間接尋址)相對尋址位尋址【例】⒈立即尋址立即尋址是直接給出操作數(shù),操作數(shù)前有立即數(shù)符“#”。MOVA,#30H;將立即數(shù)30H傳送至A中MOVDPTR,#5678H;將立即數(shù)5678H傳送至DPTRADDA,#05H;(A)←(A)+立即數(shù)05H注意:符號“#”表明其后跟的是立即數(shù),立即數(shù)——就是數(shù)字量本身。⒉直接尋址MOVA,3AH
;將內(nèi)RAM3AH單元中的數(shù)據(jù)傳送至A中MOVA,P0
;將特殊功能寄存器P0口中的數(shù)據(jù)傳送至A中說明:3AH和P0是以direct形式出現(xiàn)的直接地址訪問特殊功能寄存器SFR只能采用直接尋址方式。直接尋址是給出操作數(shù)的直接地址。直接尋址范圍為內(nèi)RAM128B和特殊功能寄存器?!纠竣臣拇嫫鲗ぶ稭OVA,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ù)【例】⒋寄存器間接尋址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)容是一個(gè)地址,由該地址單元尋址到所需的操作數(shù)。間接尋址用間址符“@”作為前綴。【例】注意:1)“間接”表示某寄存器中的“內(nèi)容”只是一個(gè)“單元地址”,這個(gè)地址單元中存放的數(shù)據(jù)才是要找的“操作數(shù)”。2)符號“@”表示“在…”,其含義與讀音皆同“at”。⒌變址尋址MOVCA,@A+DPTR
【例】在變址尋址中,操作數(shù)地址=基址+變址用于讀ROM數(shù)據(jù)操作。;將A的內(nèi)容與DPTR內(nèi)容相加,得到一個(gè)新地址,從該地址ROM中讀取數(shù)據(jù)送入A中。以16位的地址指針寄存器DPTR或16位的PC寄存器為基址寄存器,以累加器A為變址寄存器,兩者中的“內(nèi)容”形成一個(gè)16位的“地址”,該“地址”所指的存儲單元中的內(nèi)容才是操作數(shù)。MOVCA,@A+PC
;A(A+PC)
當(dāng)前PC值加上指令中規(guī)定的偏移量rel,構(gòu)成實(shí)際的操作數(shù)地址
例:SJMPrel
操作:跳轉(zhuǎn)到的目的地址=當(dāng)前16位PC值+rel⒍相對尋址注意:1)“當(dāng)前PC值”指程序中下一條指令所在的首地址,是一個(gè)16位數(shù);2)符號“rel”表示“偏移量”,是一個(gè)帶符號的單字節(jié)數(shù),范圍是:-128—+127(80H—7FH)在實(shí)際編程中,“rel”通常用標(biāo)號代替在實(shí)際編程中,“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相對尋址示意圖。;將位地址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)注意:1)位地址里的數(shù)據(jù)只可能是一個(gè)0或12)有的位地址十分明確,如P1.0,ACC.7等,有的位地址則“不太明確”,如:MOVA,17H;(A)←(17H),17H是字節(jié)地址MOVACC.0,17H;(ACC.0)←(17H),這里ACC.0是位地址所以該指令中的17H是22H單元的第7位80C51單片機(jī)的內(nèi)部存儲器
單片機(jī)的內(nèi)部存儲器包括數(shù)據(jù)存儲器和程序存儲器。80C51的數(shù)據(jù)存儲區(qū)共有256個(gè)單元,按功能又劃分為:低128單元區(qū)和高128單元區(qū)。
§3-3
指令系統(tǒng)功能分五類,共111條指令
數(shù)據(jù)傳送類指令
算術(shù)運(yùn)算類指令
邏輯運(yùn)算及移位指令
位操作類指令
控制轉(zhuǎn)移類指令①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=30H80C51單片機(jī)的內(nèi)部存儲器
單片機(jī)的內(nèi)部存儲器包括數(shù)據(jù)存儲器和程序存儲器。80C51的數(shù)據(jù)存儲區(qū)共有256個(gè)單元,按功能又劃分為:低128單元區(qū)和高128單元區(qū)。
內(nèi)部數(shù)據(jù)存儲器低128單元區(qū)1.寄存器區(qū)內(nèi)部RAM的前32個(gè)單元作為通用寄存器使用,地址為00H~1FH。分為4組,組號依次為0、1、2、3。每組有8個(gè)寄存器:R7~R0。任一時(shí)刻,cpu只能使用其中的一組寄存器,稱為當(dāng)前寄存器組,又程序狀態(tài)字寄存器PSW中的RS1,RS0位的組合來決定。
RS0,RS1:用軟件置位或清除來確定工作寄存器區(qū)。(0,0)——區(qū)0(00H~07H) (0,1)——區(qū)1(08H~0FH)
(1,0)——區(qū)2(10H~17H) (1,1)——區(qū)3(18H~1FH)OV:溢出標(biāo)志。執(zhí)行算術(shù)運(yùn)算時(shí),由硬件置位或清除。
加減法時(shí)OV=C’6異或C’7
乘除也會影響OV,積大于255或除數(shù)為0,OV置位否則清零。
P:奇偶標(biāo)志。每個(gè)指令周期都由硬件來置位或清零。A中值為1的位數(shù)為奇數(shù),則P置位,否則清零。①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條)80C51單片機(jī)的內(nèi)部存儲器
單片機(jī)的內(nèi)部存儲器包括數(shù)據(jù)存儲器和程序存儲器。80C51的數(shù)據(jù)存儲區(qū)共有256個(gè)單元,按功能又劃分為:低128單元區(qū)和高128單元區(qū)。
⑶以直接地址為目的字節(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)80C51單片機(jī)的內(nèi)部存儲器
單片機(jī)的內(nèi)部存儲器包括數(shù)據(jù)存儲器和程序存儲器。80C51的數(shù)據(jù)存儲區(qū)共有256個(gè)單元,按功能又劃分為:低128單元區(qū)和高128單元區(qū)。
⑷以寄存器間址為目的字節(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、1⒉16位數(shù)據(jù)傳送指令MOVDPTR,#data16;data16→DPTR【例】MOVDPTR,#1234H;DPTR=1234H該指令也可以用兩條8位數(shù)據(jù)傳送指令實(shí)現(xiàn):MOVDPH,#12H;DPH=12HMOVDPL,#34H;DPL=34H,DPTR=1234H80C51單片機(jī)的內(nèi)部存儲器
單片機(jī)的內(nèi)部存儲器包括數(shù)據(jù)存儲器和程序存儲器。80C51的數(shù)據(jù)存儲區(qū)共有256個(gè)單元,按功能又劃分為:低128單元區(qū)和高128單元區(qū)。
①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條)⒋讀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三個(gè)不同的存儲空間用三種不同的指令傳送:【例】按下列要求傳送數(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)=ABH【例】已知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=51H①PUSHdirect;SP+1→SP,(direct)→(SP)
②POPdirect;(SP)→(direct),SP-1→SP
⒌堆棧操作指令(2條)⑴PUSH為入棧指令例PUSH30H;(30H)=2BH,具體操作是:
先將堆棧指針SP的內(nèi)容(0FH)加1,指向堆棧頂?shù)囊粋€(gè)空單元,此時(shí)SP=10H;②然后將指令指定的直接尋址單元30H中的數(shù)據(jù)(2BH)送到該空單元中。⑵POP為出棧指令例POP40H;(40H)=4CH,具體操作是:先將SP所指單元0FH(棧頂?shù)刂罚┲械臄?shù)據(jù)(4CH)彈出,送到指定的內(nèi)RAM單元40H,(40H)=4CH;②然后SP-1→SP,SP=0EH,SP仍指向棧頂?shù)刂?。?)PUSHdirect2字節(jié)2周期11000000direct編碼:C0HXXH功能:進(jìn)棧SP←SP+1(SP)←(direct)例:設(shè)A=10H,B=36H,SP=07H,執(zhí)行PUSH0E0HPUSH0F0H問:A=?B=?SP=?及棧的變化。SP→0708090A0B0C10H36HSP→XX仿真(2)POPdirect2字節(jié)2周期編碼:D0HXXH功能:進(jìn)棧(direct)←(SP)SP←SP-1例:設(shè)棧的狀態(tài)如右圖,執(zhí)行POP20HPOP30H問:(20H)=?(30H)=?SP=?及棧的變化。SP→0708090A0B0C10H36HSP→XX11010000direct⒍交換指令(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⑶累加器高低四位互換①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條)⑵帶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
⒉減法指令(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
①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時(shí),會影響P,但不影響其他標(biāo)志位。
⒋BCD碼調(diào)整指令DAA功能:對加法運(yùn)算結(jié)果進(jìn)行BCD碼調(diào)整。十進(jìn)制調(diào)整:(DAA——1條)用于兩個(gè)BCD碼之間的相加,這條指令只能跟在ADD或ADDC之后BCD碼是指“用二進(jìn)制表達(dá)的十進(jìn)制數(shù)”。如:十進(jìn)制數(shù)20可以用二進(jìn)制數(shù)00010100B表示;也可以用十六進(jìn)制數(shù)14H表示;還可以用BCD碼00100000B或20H表示。4個(gè)二進(jìn)制位就可以表示一位BCD碼:0000~1001可表示十進(jìn)制數(shù)(BCD數(shù))0~9;8個(gè)二進(jìn)制位就可以表示兩位壓縮的BCD碼:00000000~10011001表示00~99。十進(jìn)制調(diào)整:(DAA——1條)用于兩個(gè)BCD碼之間的相加,這條指令只能跟在ADD或ADDC之后若(A)3~09或(AC)=1則(A)3~0(A)3~0+6;若(A)7~49或(CY)=1則(A)7~4(A)7~4+6;例:兩個(gè)十進(jìn)制數(shù)“65”與“58”相加,根據(jù)常識,顯然其和應(yīng)當(dāng)為“123”。MOVA,#65HADDA,#58HDAA結(jié)果:(A)=23H(CY)=1指令“DAA”完成的操作:
65011001015801011000
+13181926601100110若(A)3~09或(AC)=1則(A)3~0(A)3~0+6;若(A)7~49或(CY)=1則(A)7~4(A)7~4+6;又如:兩個(gè)十進(jìn)制數(shù)“39”與“58”相加,根據(jù)常識,顯然其和應(yīng)當(dāng)為“97”。MOVA,#39HADDA,#58HDAA結(jié)果:(A)=97H(CY)=0
39001110015801011000
+0723960110指令“DAA”完成的操作:一
舉例:例1:A=85H,(20H)=AFH,C=1執(zhí)行ADDA,20H和ADDCA,20H求:C=AC=P=OV=A=?例2:兩個(gè)三字節(jié)二進(jìn)制數(shù)相加。(52H)(51H)(50H)←(32H)(31H)(30H)+(42H)(41H)(40H)MOVA,30HMOVA,32HADDA,40HADDCA,42HMOV50H,AMOV52H,AMOVA,31HJCOVERADDCA,41HMOV51H,A
359798569485
8C2C1DDAA;BCD碼的加法調(diào)整,1字節(jié)(D4H),1周期IF[(A3-0)>9]OR[AC=1]THEN(A3-0)+6ANDIF[(A7-4)>9]OR[C=1]THEN(A7-4)+6MOVA,30HDAAADDA,40HMOV51H,ADAAMOVA,32HMOV50H,AADDCA,42HMOVA,31HDAAADDCA,41HMOV52H,A例3:兩個(gè)三字節(jié)二進(jìn)制數(shù)相加。(52H)(51H)(50H)←(32H)(31H)(30H)+(42H)(41H)(40H)359798569485929283綜合舉例:內(nèi)部RAM:(30H)=40H;(40H)=10H;P1口上數(shù)據(jù)為CAH。MOVR0,#30HMOVA,@R0MOVR1,AMOVB,@R1MOV@R1,P1MOVP2,P1結(jié)果:(R0)=(R1)=(A)=(B)=(40H)=(P1)=(P2)=仿真
DIVAB;(A÷B)商→A,余數(shù)→BCy=0,OV=0
⒌乘除法指令⑴乘法指令(1條)MULAB;A×B→BA⑵除法指令(1條)MULAB;乘法,1字節(jié)(A4H),4周期操作:
(B)15-8(A)7-0
AB對標(biāo)志位的影響:C=0,若結(jié)果B=0則OV=0,否則OV=1例4:A=50H,B=A0H執(zhí)行:MULAB
B=?A=?C=?OV=?
32H00H01DIVAB;除法,1字節(jié)(84H),4周期操作:A(商),B(余數(shù))A/B對標(biāo)志位的影響:C=0,若原來B=0則OV=1,否則OV=0
例5:A=58H,B=10H執(zhí)行:DIVAB
B=?A=?C=?OV=?
08H05H00三、邏輯運(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條)⒉邏輯“或”運(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→direct⒊邏輯“異或”運(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→direct
①CLRA ;0→A ②CPLA ;A→A⒋清零和取反指令⒌循環(huán)移位指令(4條)①循環(huán)左移:RLA②帶Cy循環(huán)左移:RLCA
③循環(huán)右移:RRA
④帶Cy循環(huán)右移:RRCA
①M(fèi)OVC,bit;(bit)→Cy
②MOVbit,C;Cy→bit四、位操作類指令⒈位傳送指令(2條)
指令中C即進(jìn)位位Cy的助記符,bit為內(nèi)RAM20H~2FH中的128個(gè)可尋址位和特殊功能寄存器中的可尋址位存儲單元。
【例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)⑵位取反指令:①CPLC ;C→C②CPLbit ;(bit)→bit⒉位修正指令(6條)⑴位清0指令:①CLRC ;0→C②CLRbit ;0→bit⑶位置1指令:①SETBC ;1→C②SETBbit ;1→bit⑴位邏輯“與”運(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條)⑶相對轉(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→PCLJMP、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(cuò)。②指令字節(jié)不一樣。
LJMP是3字節(jié)指令;AJMP、SJMP是2字節(jié)指令。⒉條件轉(zhuǎn)移指令(13條)
條件轉(zhuǎn)移指令根據(jù)判斷條件可分為:
⑴判C轉(zhuǎn)移
⑵判bit轉(zhuǎn)移
⑶判A轉(zhuǎn)移
⑷減1非0轉(zhuǎn)移
⑸比較不相等轉(zhuǎn)移指令滿足條件,則轉(zhuǎn)移;不滿足條件,則程序順序執(zhí)行。②
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í)行。③(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í)行①A=0轉(zhuǎn)移指令: JZrel;PC+2→PC,若A=0,則PC+rel→PC,轉(zhuǎn)移若A0,則程序順序執(zhí)行⑶判A轉(zhuǎn)移指令(2條)②A0轉(zhuǎn)移指令: JNZrel;PC+2→PC,若A0,則PC+rel→PC,轉(zhuǎn)移若A=0,則程序順序執(zhí)行⑷減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í)行 若Rn0,則PC+rel→PC,轉(zhuǎn)移⑸比較轉(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=1①產(chǎn)生當(dāng)前PC:PC+3→PC, (PC+3是因?yàn)樵撝噶顬槿止?jié)指令)②斷口地址低8位保存到堆
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村承包經(jīng)營戶合同范例
- 交通工程包工合同范例
- 農(nóng)耕用具銷售合同范例
- 覆壓轉(zhuǎn)板式馬鈴薯收獲機(jī)薯土分離裝置設(shè)計(jì)與試驗(yàn)研究
- 交互大屏在主動(dòng)學(xué)習(xí)課堂中的應(yīng)用研究與設(shè)計(jì)
- 公司相機(jī)租賃合同范例
- 中學(xué)房子出租合同范例
- 會展合同范例簡易
- 加裝電梯寫合同范例
- 書架承攬加工合同范例
- 核心素養(yǎng)導(dǎo)向下的高中歷史大單元教學(xué)設(shè)計(jì)研究課題設(shè)計(jì)論證
- 員工入職登記表
- 2025年揚(yáng)州市職業(yè)大學(xué)單招職業(yè)技能測試題庫參考答案
- 2024年新疆維吾爾自治區(qū)招聘事業(yè)單位工作人員考試真題
- 科技創(chuàng)新在環(huán)境保護(hù)中的重要作用研究報(bào)告
- 2025年濟(jì)源職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫學(xué)生專用
- 《金融市場分析方法》課件
- 卵巢癌的篩查:如何進(jìn)行卵巢癌的早期篩查
- 2025年南網(wǎng)數(shù)字集團(tuán)公開選聘高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 5G基站建設(shè)的審批流程與標(biāo)準(zhǔn)
- 西門子S7-1200 PLC應(yīng)用技術(shù)項(xiàng)目教程(第3版) 考試復(fù)習(xí)題
評論
0/150
提交評論