版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三章:單片機的指令系統本章重點:時序分析;
延時分析;尋址方式;
MCS-51指令集;偽指令;
51系列單片機指令集含有111條指令每條指令在執(zhí)行時要花去一定的時間,以機器周期為單位。按指令執(zhí)行時間分類:單周期(64條);雙周期(45條);4周期(2條)按指令的功能分類,可分為5大類:數據傳送類(28條);算術運算類(24條)邏輯運算及移位類(25條);控制轉移類(17條)位操作類(17條)每條指令在程序存儲器ROM中占據一定的空間,以字節(jié)為單位。按指令所占字節(jié)數分類:單字節(jié)(49條);雙字節(jié)(45條);3字節(jié)(17條)MCS-51單片機指令系統有如下特點:(1)指令執(zhí)行時間快。(2)指令短,約有一半的指令為單字節(jié)指令。(3)用一條指令即可實現2個一字節(jié)的相乘或相除。(4)具有豐富的位操作指令。(5)可直接用傳送指令實現端口的輸入輸出操作。1、時序分析計算機工作時,是在統一的時鐘脈沖控制下一拍一拍地進行的。這個脈沖是由單片機控制器中的時序電路發(fā)出的。單片機的時序就是CPU在執(zhí)行指令時所需控制信號的時間順序,為了保證各部件間的同步工作,單片機內部電路應在唯一的時鐘信號下嚴格地控時序進行工作。計算機是在統一的時鐘脈沖控制下工作的,那么,它的時鐘脈沖是怎么來的呢?
要給我們的計算機CPU提供時序,就需要相關的硬件電路,即振蕩器和時鐘電路。51系列單片機內部有一個高增益反相放大器,這個反相放大器的作用就是用于構成振蕩器用的,但要形成時鐘,外部還需要加一些附加電路。XTAL1XTAL2通常外接一個晶振兩個電容1MCS-51系列
方式一:利用內部的振蕩器,在引腳Xtal1和Xtal2兩端接晶振,就構成了穩(wěn)定的自激振蕩器,其發(fā)出的脈沖直接送入內部時鐘電路,外接晶振時,晶振兩端的電容一般選擇為30pf左右;這兩個電容對頻率有微調的作用,晶振的頻率范圍可在之間選擇。為了減少寄生電容,更好地保證振蕩器穩(wěn)定、可靠地工作,振蕩器和電容應盡可能安裝得與單片機芯片靠近。1MCS-51系列XTAL1XTAL2外部時鐘信號方式二:是利用外部振蕩脈沖接入XTAL1或XTAL2。HMOS和CHMOS單片機外時鐘信號接入方式不同,HMOS型單片機(例如8051)外時鐘信號由XTAL2端腳注入后直接送至內部時鐘電路,輸入端XTAL1應接地。由于XTAL2端的邏輯電平不是TTL的,故建議外接一個上接電阻。8051外時鐘源接法圖1MCS-51系列XTAL1XTAL2外部時鐘信號方式二:對于CHMOS型的單片機(例如80C51),因內部時鐘發(fā)生器的信號取自反相器的輸入端,故采用外部時鐘源時,接線方式為外時鐘信號接到XTAL1而XTAL2懸空。如下圖本腳懸空80C51外時鐘源接法圖目前各大廠商推出的各類單片機產品都采用了CHMOS工藝。80C51系列單片機采用兩種半導體工藝生產。一種是HMOS工藝,即高密度短溝道MOS工藝。另外一種是CHMOS工藝,即互補金屬氧化物的HMOS工藝。CHMOS是CMOS和HMOS的結合,除保持了HMOS的高速度和高密度的特點之外,還具有CMOS低功耗的特點。例如8051的功耗為630mw,而80C51的功耗只有120mw。在便攜式、手提式或野外作業(yè)儀器設備上低功耗是非常有意義的。因此,在這些產品中必須使用CHMOS的單片機芯片?;仡檭热菡袷帲〞r鐘)周期
=晶振頻率fosc的倒數;1個機器周期
=6個狀態(tài)周期;=12個振蕩周期(時鐘周期);1個指令周期
=1、2、4個機器周期P1P2S1振蕩(時鐘)周期機器周期機器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2狀態(tài)周期
通常含一個機器周期的指令稱為單周期指令,包含兩個機器周期的指令稱為雙周期指令。
MCS-51指令系統中,按它們的長度可分為單字節(jié)指令、雙字節(jié)指令和三字節(jié)指令。執(zhí)行這些指令需要的時間是不同的,也就是它們所需的機器周期是不同的,有下面幾種形式:·單字節(jié)指令單機器周期;單字節(jié)指令雙機器周期;
·雙字節(jié)指令單機器周期;雙字節(jié)指令雙機器周期;
·三字節(jié)指令雙機器周期;
·單字節(jié)指令四機器周期(如單字節(jié)的乘除法指令)圖中的ALE脈沖是為了鎖存地址的選通信號,顯然,每出現一次該信號單片機即進行一次讀指令操作。從時序圖中可看出,該信號是時鐘頻率6分頻后得到,在一個機器周期中,ALE信號兩次有效。1個機器周期ALE單字節(jié)單周期指令例:INCAALE1個機器周期單字節(jié)單周期指令:
單字節(jié)單周期指令只進行一次讀指令操作,當第二個ALE信號有效時,PC并不加1,那么讀出的還是原指令,屬于一次無效的讀操作。雙字節(jié)單周期指令例:ADDA,DATA雙字節(jié)單周期指令:
這類指令兩次的ALE信號都是有效的,只是第一個ALE信號有效時讀的是操作碼,第二個ALE信號有效時讀的是操作數。ALE單字節(jié)雙周期指令:
兩個機器周期需進行四讀指令操作,但只有一次讀操作是有效的,后三次的讀操作均為無效操作。
ALE單字節(jié)雙周期指令例:INCDPTR若MCS-51單片機外接晶振為fosc=12MHz時,則單片機的四個周期的具體值為:Tosc=振蕩周期=1/12MHz=1/12μs=Tcy=機器周期=振蕩周期*12=1μs指令周期=1~4μs在MCS-51指令系統中,單字節(jié)、雙字節(jié)指令占絕大多數,三字節(jié)指令很少(13條)。單字節(jié)或雙字節(jié)指令可能是單周期或雙周期的,三字節(jié)指令是雙周期的,乘除指令是四周期的,因此,振蕩頻率為12MHz時,指令執(zhí)行時間分別為1μs、2μs、4μs。在MCS-51指令中,一般指令主要由操作碼、操作數組成。指令應具有以下功能:(1)操作碼指明執(zhí)行什么性質和類型的操作。例如,數的傳送、加法、減法等。(2)操作數指明操作的數本身或者是操作數所在的地址。(3)指定操作結果存放的地址。2、指令格式單字節(jié)指令操作碼和操作數在同一個字節(jié)中。雙字節(jié)指令前一個字節(jié)為操作碼,后一個字節(jié)為操作數。三字節(jié)指令前一個字節(jié)為操作碼,后兩個字節(jié)為操作數。指令描述符號介紹
Rn——當前選中的寄存器區(qū)中的8個工作寄存器R0~R7(n=0~7)。
Ri——當前選中的寄存器區(qū)中的2個工作寄存器R0、R1(i=0,1)。
direct——8位的內部數據存儲器單元中的地址。
#——表明其后跟的是立即數(就是數字量本身),有8位、16位常數。addr16——16位目的地址。
addr11——11位目的地址。rel——8位帶符號的偏移字節(jié),簡稱偏移量。DPTR——
數據指針,可用作16位地址寄存器。bit——內部RAM或專用寄存器中的直接尋址位。A——
累加器。B——
專用寄存器,用于乘法和除法指令中。C——
進位標志或進位位,或布爾處理機中的累加器。@——寄存器間接尋址或基址寄存器的前綴,如@Ri,@DPTR。
/——
位操作數的前綴,表示對該位數操作取反,如/bit。
(×)——
片內RAM的直接地址或寄存器。((×))——
由×尋址的單元中的內容。
——箭頭左邊的內容被箭頭右邊的內容所代替。
——箭頭右邊的內容被箭頭左邊的內所代替。、延時分析觀察仿真教學練習1\單燈亮滅概念1下的仿真實驗例題LJ20080304。結果有兩個問題:第一,計算機執(zhí)行指令的時間很快,執(zhí)行完后,燈是滅了,但在極短時間(微秒級)后,計算機又執(zhí)行了指令,燈又亮了,所以根本分辨不出燈曾滅過。第二,在執(zhí)行完后,跳轉再去執(zhí)行指令,結果閃爍不定(又稱余輝或鬼影)。(實物與仿真效果差別)、解決方案為了解決這兩個問題,我們可以做如下設想,第一,在執(zhí)行完后,延時一段時間(幾秒或零點幾秒)再執(zhí)行第二條指令,就可以分辨出燈曾滅過了。第二在執(zhí)行完第二條指令后,讓計算機再去執(zhí)行第一條指令,不斷地在原地兜圈,我們稱之為“循環(huán)”,這樣就可以完成任務了。
、程序分析;主程序:LOOP:SETBP1.0引腳燈滅
LCALLDELAY
;延時
CLRP1.0引腳燈亮
LCALLDELAY
;延時
AJMPLOOP
;跳轉;以下是延時子程序DELAY:MOVR7,#250
;工作寄存器R7賦值D1:MOVR6,#250
;工作寄存器R6賦值D2:DJNZR6,D2;R6如果不等于0,就轉移至D2
DJNZR7,D1;R7如果不等于0,就轉移至D1
RET
;子程序返回指令
END
;程序結束指令LED亮滅有定之觀察實例:仿真教學練習1\單燈亮滅概念DELAY:MOVR7,#250;將250傳送至R7
D1:MOVR6,#250;將250傳送至R7
D2:DJNZR6,D2;原地轉圈250次
DJNZR7,D1;
RET
指令分析:MOV:意思是傳遞數據。從指令MOVRi,#250中來分析,Ri是一個接受者,250是被傳遞的數。(i=6、7)DJNZ:指令的執(zhí)行過程,它將其后面的第一個參數中的值減1,然后看一下,這個值是否等于0,如果等于0,就往下執(zhí)行,如果不等于0,就轉移至第二個參數所指位置。最終DJNZR6,D2指令將被執(zhí)行250*250=62500次我們來計算剛才的延時,首先必須要知道晶振的頻率,我們設所用晶振為12M,則一個機器周期就是1微秒。而DJNZ指令是雙周期指令,所以執(zhí)行一次要2個微秒。一共執(zhí)行62500次,正好125000微秒,也就是125毫秒。要點分析:1、一個單元中的數是否可以超過255;2、如何分配兩個數。、延時估算在單片機的控制應用中,常有延時的需要,CPU過一段時間再去作某件事情,稱之為延時。延時有兩種方法,即軟件延時和硬件延時.硬件延時是通過定時/計數器來實現的,這種方法不占用CPU的工作時間。軟件延時一般采用循環(huán)程序,通過CPU執(zhí)行一個具有固定延遲時間的循環(huán)體來實現的。、延時精確計算過程延時程序的延時時間主要與兩個因素有關,一是所用晶振,二是延時程序中的循環(huán)次數,一旦晶振確定之后,則主要是如何設計與計算需給定的延時循環(huán)次數。設單片機的晶振頻率為6MHz,則一機器周期為2us;設單片機的晶振頻率為12MHz,則一機器周期為1us;匯編語言常用延時程序所用到的指令指令占用的機器周期數MOVRn,#Data
1DJNZRn,Rel
2RET2NOP1ACALLAddr112LCALLAddr162ADDA,Ri1INCDPTR2用得最多的延時指令基本延時程序模式及延時時間的計算分以下幾種情況:1、單循環(huán)延時程序DEL2:
MOVR0,#X
;1周期DEL1:
DJNZR0,DEL1;2周期
RET;2周期延時時間=2*X*T+1*T+2*T=(2X+3)T整個程序的延時時間范圍為:5us<=t<=1030us;以晶振頻率6MHz為例延時時間的范圍的計算設X是裝入寄存器R0的時間常數,R0是8位寄存器(以下的R1、R2、Ri均為8位),因為0<=R0<=255,R0=0,延時時間最長,R0=1,延時時間最短。當Ri=0時,由匯編語言的特征知其將從零開始判斷,共256次,所以應在公式中代入256,因此這個程序的最長定時時間為1030us。2、雙重循環(huán)延時程序:DEL3:
MOVR1,#Y;1周期DEL2:
MOVR0,#X;1周期DEL1:
DJNZR0,DEL1;2周期
DJNZR1,DEL2;2周期
RET;2周期延時時間=(2*X+1+2)*Y*T+1*T+2*T=(2XY+3)T整個程序的延時范圍為:12us<=t<=263668us;3、三重循環(huán)延時程序DEL4:
MOVR2,#Z;1周期DEL3:
MOVR1,#Y;1周期DEL2:
MOVR0,#X;1周期DEL1:
DJNZR0,DEL1;2周期
DJNZR1,DEL2;2周期
DJNZR2,DEL3;2周期
RET;2周期延時時間=[(2*X+1+2)*Y+1+2]*Z*T+1*T+2*T=(2XYZ+3YZ+3Z+3)T整個程序的延時時間范圍為:練習1:設計一個延時100微秒的程序設單片機的晶振頻率為12MHz,則一機器周期為1us,打算延時100us,只要用下面的代碼,就可以滿足一般的需要:
MOVR0,#049;1周期Loop:DJNZR0,loop;2周期
RET;2周期一個周期=1us。上述程序延時時間=2*49*1+1*1+2*1=101us若將立即數的值改為048,則延時時間為=99us簡單:MOVR0,#048;1周期
NOP;1周期Loop:DJNZR0,Loop;2周期
RET;2周期說明:延時精確調整可用NOP空操作指令進行調控,該指令機器周期為1.如何精確到100us呢???????????搞定!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!練習1:設計一個延時100毫秒的程序練習2:設計一個延時1秒的程序立即尋址直接尋址寄存器尋址寄存器間接尋址變址尋址(基址寄存器+變址寄存器間接尋址)相對尋址位尋址尋址方式:指令按地址獲得操作數的方式七種尋址方式,一條指令可能含多種尋址方式。4、單片機指令的尋址方式1、立即尋址指令中直接給出操作數的尋址方式。立即操作數用前面加有#號的8位或16位數來表示。例如:MOV
A,#60H ;A←#60HMOV
DPTR,#3400H;DPTR←#3400HMOV
30H,#40H;30H單元←#40H上述三條指令執(zhí)行完后,累加器A中數據為立即數據60H,DPTR寄存器中數據為3400H,30H單元中數據為立即數40H。注意:符號“#”表明其后跟的是立即數,
立即數——就是數字量本身。2、直接尋址 指令中直接給出操作數地址的尋址方式,能進行直接尋址的存儲空間有SFR寄存器和內部數據RAM。例如:MOVR1,1FH;(R1)←(1FH)
MOV30H,4AH;(30H)←(4AH)在本單片機中規(guī)定:訪問特殊功能寄存器SFR只能采用直接尋址方式。例如:MOVA,SP;(A)←(SP)MOVA,81H;(A)←(SP)MOVP1,#5AH;(P1)←(#5AH)MOV90H,#5AH;(P1)←(#5AH)MOVB,30H;(B)←(30H)相同相同3、寄存器尋址 以通用寄存器的內容為操作數的尋址方式。通用寄存器指A、B、DPTR以及R0~R7
。從寄存器中讀取操作數或存放操作數進寄存器例如:CLR A ;A←0INC DPTR ;(DPTR)←(DPTR+1)ADD R5,#20H ;(R5)←(R5+#20H)MOVA,B;(A)←(B)
MOV30H,R0;(30H)←(R0)
MOVA,R1;(A)←(R1)4、寄存器間接尋址寄存器中的內容是一個地址,由該地址單元尋址到所需的操作數。間接尋址的存儲器空間包括內部數據RAM和外部數據RAM。能用于寄存器間接尋址的寄存器有R0,R1,
DPTR,SP。其中R0、R1必須是工作寄存器組中的寄存器。SP僅用于堆棧操作。注意:1)“間接”表示某寄存器中的“內容”只是一個“單元地址”,這個地址單元中存放的數據才是要找的“操作數”。2)符號“@”表示“在…”,其含義與讀音皆同“at”。例如:MOV@R0,A;內部RAM(R0)←A
其指令操作過程示意圖如圖3-1所示。
片內RAM30HR034HA30H34H圖3-1MOV@R0,A間接尋址示意圖R0指定存貯地址又如:MOVXA,@R1;A←外部RAM(P2R1)
其指令操作過程示意圖如圖3-2所示。片外RAM34HP245HA3410H45H10HR1圖3-2MOVXA,@R1間接尋址示意圖
生成地址再如:MOVX@DPTR,A;外部RAM(DPTR)←A
其指令操作過程示意圖如圖3-3所示。片外RAM2000HDPTR30HA2000H30H圖3-3MOVX@DPTR,A間接尋址示意圖5、變址尋址 變址尋址只能對程序存儲器中數據進行操作。由于程序存儲器是只讀的,因此變址尋址只有讀操作而無寫操作,在指令符號上采用MOVC的形式(如圖3-4所示)。例如:MOVCA,@A+DPTR;A←(A+DPTR)[設:A中已存有#10H,DPTR中已存有#2000H]操作:將10H+2000H=2010H單元中的數放進累加器A又如,MOVCA,@A+PC;A←(A+PC)這條指令與上條指令不同的是,基址寄存器是PC。相對尋址
以當前程序計數器PC的內容為基礎,加上指令給出的一字節(jié)補碼數(偏移量)形成新的PC值的尋址方式。相對尋址用于修改PC值,主要用于實現程序的分支轉移。
SJMPrel
操作:跳轉到的目的地址=當前16位PC值+rel
注意:1)“當前PC值”指程序中下一條指令所在的首地址,是一個16位數;2)符號“rel”表示“偏移量”,是一個帶符號的單字節(jié)數,范圍是:-128—+127(80H—7FH),程序存儲器(2000H)200AHSJMP200AH08H2000H+208HPC2000H例如,SJMP08H;PC←PC+2+08H
圖3-5相對尋址示意圖位尋址位尋址只能對有位地址的單元作位尋址操作。位尋址其實是一種直接尋址方式,不過其地址是位地址。指令中直接給出了操作數所在的位地址。例如:SETB10H;將10H位置1若22H單元中存放著數據40H,22H單元的D0位的位地址為10H,執(zhí)行上述指令后(22H)=41H。又如:MOV32H,C;32H←進位位CORLC,32H;C←C∨32H分類指令
數據傳送類指令算術運算類指令邏輯運算與循環(huán)類指令程序轉移類指令調用子程序及返回指令位操作指令空操作指令數據傳送類指令數據傳送類指令共28條,是將源操作數送到目的操作數。指令執(zhí)行后,源操作數不變,目的操作數被源操作數取代。數據傳送類指令用到的助記符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8種。源操作數可采用寄存器、寄存器間接、直接、立即、變址5種尋址方式尋址,目的操作數可以采用寄存器、寄存器間接、直接尋址3種尋址方式。MCS-51單片機片內數據傳送途徑如圖3-6所示。直接地址direct累加器A直接地址direct間接地址@Ri寄存器Rn立即數#data寄存器DPTR圖3-6MCS-51單片機片內數據傳送圖1.以A為目的操作數MOVA,Rn ;A←RnMOVA,direct;A←(direct)MOVA,@Ri ;A←(Ri)MOVA,#data;A←#data例:MOVA,R1 MOVA,10HMOVA,@R1 MOVA,#30H2.以Rn為目的操作數MOVRn,A ;Rn←AMOVRn,direct;Rn←(direct)MOVRn,#data ;Rn←#data例:MOVR1,A MOVR1,10HMOVR1,#10H3.以直接地址為目的操作數MOVdirect,A;(direct)←AMOVdirect,Rn;(direct)←(Rn)MOVdirect1,direct2;(direct1)←(direct2)MOVdirect,@Ri;(direct)←(Ri)MOVdirect,#data;(direct)←#data4.以間接地址為目的操作數MOV@Ri,A ;(Ri)←AMOV@Ri,direct ;(Ri)←(direct)MOV@Ri,#data ;(Ri)←#data例如:設(30H)=6FH,R1=40H,執(zhí)行MOV@R1,30H后,30H單元中數據取出6FH送入R1間接尋址的40H單元,(40H)=6FH。5.以DPTR為目的操作數MOVDPTR,#data16;DPTR←#data16例如執(zhí)行MOVDPTR,#2000H后,(DPTR)=2000H。6.訪問外部數據RAM
MOVXA,@DPTR ;A←(DPTR)MOVX@DPTR,A ;(DPTR)←AMOVXA,@Ri ;A←(P2Ri)MOVX@Ri,A ;(P2Ri)←A8.數據交換l
字節(jié)交換XCHA,Rn ;A<=>RnXCHA,direct ;A<=>(direct)XCHA,@Ri ;A<=>(Ri)l
半字節(jié)交換XCHDA,@Ri ;A0~3<=>(Ri)0~3SWAPA ;A0~3<=>A4~79.堆棧操作所謂堆棧是在片內RAM中按“先進后出,后進先出”原則設置的專用存儲區(qū)。數據的進棧出棧由指針SP統一管理。堆棧的操作有如下兩條專用指令:
PUSHdirect;SP←(SP+1),(SP)←(direct)
POP direct;(direct)←(SP),SP←SP-1PUSH是進棧(或稱為壓入操作)指令。指令執(zhí)行過程如圖3-7所示。片內RAM30H11H10HSP××片內RAM50H40H11H10HSP××40H30H片內RAM50H40H11H10H50H××SP30H片內RAM40H11H10H34H××SP30H34H34H××××執(zhí)行前執(zhí)行前執(zhí)行前PUSH指令后執(zhí)行POP指令后圖3-7指令PUSH操作示意圖圖3-8指令POP操作示意圖【例3.1】將片內RAM30H單元與40H單元中的內容互換。方法1(直接地址傳送法):
MOV 31H,30HMOV 30H,40HMOV 40H,31HSJMP $方法2(間接地址傳送法):
MOV R0,#40HMOV R1,#30HMOV A,@R0MOV B,@R1MOV @R1,AMOV @R0,BSJMP $方法3(字節(jié)交換傳送法):
MOV A,30HXCH A,40HMOV 30H,A
方法4(堆棧傳送法):
PUSH 30HPUSH 40HPOP 30HPOP 40H
算術運算類指令
1.加法指令ADDA,Rn ;A←A+RnADDA,direct ;A←A+(direct)ADDA,@Ri ;A←A+(Ri)ADDA,#data;A←A+#data2.帶進位加指令ADDCA,Rn ;A←A+Rn+CADDCA,direct;A←A+(direct)+CADDCA,@Ri ;A←A+(Ri)+CADDCA,#data;A←A+#data+CC為來自PSW狀態(tài)寄存器中的進位位C。例如,設A=20H,R0=21H,C=1,執(zhí)行指令ADDC
A,R0后,A=42H。3.帶借位減指令SUBBA,Rn ;A←A-Rn-CSUBBA,direct;A←A-(direct)-CSUBBA,@Ri ;A←A-(Ri)-CSUBBA,#data;A←A-#data–C例如,設A=39H,R0=20H,(20H)=32H,C=1,執(zhí)行指令SUBBA,@R0后,A=06H。4.乘法指令MULA,B ;BA←A×BA和B中各存放一個8位無符號數,指令執(zhí)行后,16位乘積的高8位在B中,低8位存A中。例如,A=30H,B=60H,執(zhí)行MULAB后,A=00H,B=12H。
5.除法指令
DIVA,B;A÷B→商在A中,余數在B中
A和B中各存放一個8位無符號數,A放被除數,B放除數。指令執(zhí)行后,A中存放商,B中存入余數。若B=00H,則指令執(zhí)行后OV=1,A與B不變。例如,A=30H,B=07H,執(zhí)行DIVAB后,
A=06H,B=06H。6.加1指令INCA ;A←A+1INCRn ;Rn←Rn+1INCdirect;(direct)←(direct)+1INC@Ri ;(Ri)←(Ri)+1INCDPTR;DPTR←DPTR+1例如,(30H)=22H,執(zhí)行INC30H后,(30H)=23H。7.減1指令DECA ;A←A-1DECRn ;Rn←Rn-1DECdirect ;direct←(direct)-1DEC@Ri ;(Ri)←(Ri)-1例如,R0=30H,(30H)=22H,執(zhí)行DEC@R0后,(30H)=21H。8.十進制調整指令DAA
;把A中按二進制相加的結果調整成按BCD碼相加的結果。例如,A=65BCD,B=78BCD,C=0,執(zhí)行下列語句ADD A,BDA A后,A=43BCD,C=1?!纠?.2】試把存放在R1R2和R3R4中的兩個16位數相加,結果存于R5R6中。解:參考程序如下:
MOV A,R2;取第一個數的低8位
ADD A,R4;兩數的低8位相加
MOV R6,A;保存和的低8位
MOV A,R1 ;取第一個數的高8位
ADDC A,R3 ;兩數的高8位相加,并把低8位相加時的進位位加進來
MOV R5,A ;把相加的高8位存入
R5寄存器中
SJMP$1.“與”操作指令2.“或”操作指令3.“異或”操作指令4.求反與清除指令5.移位指令邏輯運算類指令邏輯與(ANL),邏輯或(ORL),邏輯異或(XRL):累加器清零/取反操作(CLR,CPL——2條)CLRA——對累加器清零1Byte1個TmCPLA——對累加器按位取非1Byte1個Tm指令形式ByteTmANL(ORL,XRL)direct,A21ANL(ORL,XRL)direct,#data32ANL(ORL,XRL)A,#data21ANL(ORL,XRL)A,direct21ANL(ORL,XRL)A,@Ri11ANL(ORL,XRL)A,Rn11邏輯運算指令的常見用法邏輯與ANL用于清0或者保留某些位:例:ANLA,#0FH;則(A)=0AH(已知累加器A中已存有數:9AH)邏輯或ORL用于置1或者保留某些位:例:ORLA,#0FH;則(A)=9FH邏輯異或XRL用于取反或者保留某些位:例:XRLA,#0FH;則(A)=95H(A)
10011010#0FH
0000111195H
10010101邏輯運算及移位類指令累加器移位操作:(RL,RLC,RR,RRC——4條)RLA左環(huán)移累加器A累加器ACy累加器ACy累加器ARRCA帶進位位右環(huán)移RRA右環(huán)移RLCA帶進位位左環(huán)移控制轉移類指令無條件轉移:LJMP,AJMP,SJMP,JMP——4條LJMPaddr16長跳轉指令
——可在64K范圍內跳轉AJMPaddr11絕對跳轉指令
——可在指令所在的2K范圍內跳轉SJMPrel相對跳轉指令
——可在當前PC-128與+127范圍內跳轉JMP@A+DPTR間接長跳轉指令
——可在以DPTR為基址+A為偏移量之和所指向的64K程序范圍內跳轉控制轉移類指令條件轉移:JZ,JNZ,CJNE,DJNZ——8條JZrelJNZrel——根據Acc的內容是否為0決定是否跳轉DJNZ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年企業(yè)間技術秘密轉讓與保密合同
- 2024《教育基金贈與合同》
- 2024年度二手挖掘機質量保證合同
- 2024年奶牛養(yǎng)殖收購合同
- 2024年度融資合同融資項目及融資金額
- 2024年建筑工程屋面分包協議
- 2024年度★店鋪轉讓及培訓協議
- 2024年度生物醫(yī)藥實驗室安裝內部承包合同
- 2024年企業(yè)間關于物聯網技術研發(fā)與應用合作協議
- 2024供應鏈金融借款合同
- PDCA化療藥物規(guī)范化使用率報告
- 順豐快遞薪酬管理案例分析
- 路面彎沉溫度修正系數
- 【護理論文】護理論文范文(共40篇)
- 2023腿式機器人性能及試驗方法
- 乳膠漆墻面施工方案范本
- Scratch在小學數學中的應用-以《長方形的周長》為例
- 化工企業(yè)停工方案范本
- 網絡傳播法規(guī)(自考14339)復習必備題庫(含答案)
- 民法典合同編解讀之合伙合同
- 高中英語學習情況問卷調查表及調查報告
評論
0/150
提交評論