第一章 單片機基礎知識(二)_第1頁
第一章 單片機基礎知識(二)_第2頁
第一章 單片機基礎知識(二)_第3頁
第一章 單片機基礎知識(二)_第4頁
第一章 單片機基礎知識(二)_第5頁
已閱讀5頁,還剩62頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1.4 8051指令系統1.4.1 尋址方式1.4.2 指令說明1.4.3 偽指令8051 指令系統 指令是指揮計算機執行某種操作的命令。 匯編語言指令用助記符表示。 一臺計算機所有指令的集合,稱為該計算機的指令系統,它是表征計算機性能的重要標志。每臺計算機都有它自己特有的指令系統。 80C51匯編語言需用40多種助記符表征30多種指令功能。通過這些助記符,與指令中的源地址、目的地址組合成80C51的111條指令。 指令格式 MCS-51匯編語言指令格式如下: 標號:標號: 操作碼操作碼 操作數操作數 ;注釋;注釋 START:MOV A,30H ;A(30H)標號標號 標號是程序員根據編程需

2、要給指令設定的符號地址,可有可無;每個子程序的第一條語句都必須有標號; 由字母開頭的字母數字序列,如LOOP,TIME1; 標號后必須用冒號; 在程序中,不可以重復使用。操作碼操作碼 操作碼表示指令的操作種類,規定了指令的具體操作及實現的功能。是指令的助記符。 比如:比如:ADD(加操作),(加操作),MOV (數據的傳送操作)。(數據的傳送操作)。操作數操作數 操作數是指令的操作對象,表示參加運算的數據或數據的地址。操作數一般有以下幾種形式: 沒有操作數項,操作數隱含在操作碼中,如RET指令; 只有一個操作數,如CPL A指令;第1個操作數與操作碼之間用若干空格分隔; 有兩個操作數,如MOV

3、 A,#00H指令,操作數之間以逗號相隔; 有三個操作數,如CJNE A,#00H,NEXT指令,操作數之間也以逗號相隔。注釋注釋 注釋是對指令的解釋說明,用以提高程序的可讀性和維護性,一般說明指令或程序的功能 ;注釋前必須以“;”和指令分開,注釋在每條指令后都可以設有。 指令中符號的意義說明指令中符號的意義說明Rn 當前工作寄存器中的某一個,即R0R7; Ri R0或者R1Direct 單片機內部RAM低128字節中的某個字節地址, 或者是某個專用寄存器的名字;#data 8位(1字節)立即數#data16 16位(2字節)的立即數Addr16 16位目的地址,在LJMP和LCALL的指令中

4、采用Addr11 11位目的地址,只在AJMP和ACALL指令中采用Rel 相對轉移指令中的偏移量。DPTR 數據指針(由DPH和DPL構成)Bit 內部RAM(包括專用寄存器)中可尋址位的地址或名字A 累加器ACCB B寄存器 間接尋址標志 / 加在位地址前,表示對該位狀態取反(X) 某寄存器或某單元的內容(X) 由X間接尋址的單元中的內容 箭頭右邊的內容傳遞給箭頭左邊1.4.1 尋址方式1.1. 寄存器尋址寄存器尋址2.2. 直接尋址直接尋址3.3. 寄存器間接尋址寄存器間接尋址4.4. 立即尋址立即尋址5.5. 變址尋址變址尋址6.6. 相對尋址相對尋址7.7. 位尋址位尋址MCS-51

5、有7種不同的尋址方式:1.1.寄存器尋址寄存器尋址 寄存器尋址是對由指令選定的工作寄存器(R0R7)進行讀/寫。對累加器A、寄存器B、數據指針DPTR、位處理累加器CY等,也可當作寄存器方式尋址。 比如:比如: MOV A, R7 INC DPTR ADD A, R0 例如,設R7的內容為40H,則執行指令: MOV A,R7 R7MOV A , R7 A XX 40H40H2.2.直接尋址直接尋址直接尋址方式是由指令直接給出操作數地址。直接尋址方式可訪問兩種地址空間: 特殊功能寄存器地址空間,這是唯一能尋址特殊功能寄存器的尋址方式。 內部數據存儲器RAM的007F地址空間。例如指令: MOV

6、 A, 62H MOV PSW, #20H 62HMOV A , 62H 55H XX A55H3.3.寄存器間接尋址寄存器間接尋址 寄存器間接尋址方式以寄存器中的內容為地址,該地址中的內容為操作數的尋址方式。 能夠用于寄存器間接尋址的寄存器有:R0、R1、DPTR和PC。 間接尋址的存儲器空間包括內部數據RAM和外部數據RAM。 如指令格式為:MOV A, R0MOVX A, R1MOVX A, DPTR 在指令形式中,對內部RAM還是對外部RAM尋址,區別在于對外部數據RAM的操作僅有數據傳送類指令,且用MOVX的符號形式。以以R0作為間址寄存器方式:作為間址寄存器方式:MOV A , R

7、0以以DPTR作為間址寄存器方式:作為間址寄存器方式: MOVX A, DPTR55H AR055H取出取出地址地址78H78H3FFFH ADPTR3FFFH取出取出地址地址78H78H4.4.立即尋址立即尋址 立即尋址方式由指令直接給出操作數尋址。立即尋址方式由指令直接給出操作數尋址。 立即操作數用前面加有立即操作數用前面加有#號的號的8位或位或16位數來表示。位數來表示。“#”符號稱為立即數符號。符號稱為立即數符號。 例如指令:例如指令:MOV A, #40H MOV DPTR, #2CA5H MOV 30H, # 40H A XXMOV A , #40H40HMOV DPTR , #2

8、CA5H DPL DPH XX2CH XXA5H5.5.變址尋址變址尋址 基址寄存器加變址寄存器間接尋址方式,以程序計數器PC或數據指針DPTR作為基址寄存器,以累加器A作為變址寄存器,這二者內容之和為有效地址。例如:JMP ADPTR MOVC A,APC MOVC A,ADPTR 這種尋址方式特別適用于查表。DPTR為16位字長,可指向64KB的任何單元;APC可指向以PC當前值為起始地址的256B單元。指令:指令:MOVC A,A+DPTR 工作過程:工作過程:3055H相加相加=3055HADPTR3000H取出取出地址地址 A55H66H66H6.6.相對尋址相對尋址 相對尋址方式以

9、PC的當前值為基準,加上指令中給出的相對偏移量(rel)形成有效轉移地址。相對偏移量是一個帶符號的8位二進制數。主要用于實現程序的分支轉移。 在跳轉程序中有一種相對尋址方式,如: JZ relDJNZ R0,rel 例如執行指令:SJMP 08H程序存儲器(2000H)200AHSJMP200AH08H2000H+208HPC2000H7.7.位尋址位尋址 位尋址方式對位地址中的內容作位操作的尋址。 由于單片機中只有內部RAM和特殊功能寄存器的部分單元有位地址(兩者統一編址,地址空間為00HFFH),因此位尋址只能對有位地址的這兩個空間做尋址操作。 位尋址是一種直接尋址方式,由指令給出直接位地

10、址。但與直接尋址不同之處在于,位尋址只給出位地址,而不是字節地址。 例如:SETB 20H MOV 32H, C ORL C, 5AH 其中,C為進位位地址,而其他是直接位地址。CLR P1.0;將單片機的P1.0清“0”。SETB P1.0;將單片機的P1.0置“1”。P1.0X“0”0P1.0P1.0X“1”1P1.01.4.2 指令說明MCS-51單片機指令系統包括單片機指令系統包括111條指令條指令按功能可以劃分為以下按功能可以劃分為以下5類:類:數據傳送和交換指令數據傳送和交換指令(29條)條) 算術運算指令算術運算指令(24條)條)邏輯運算指令邏輯運算指令(24條)條)控制轉移指令

11、控制轉移指令(17條)條)位操作指令位操作指令(17條條)1. 數據傳送和交換指令數據傳送和交換指令 數據傳送類指令共29條,是將源操作數送到目的操作數。指令執行后,源操作數不變,目的操作數被源操作數取代。數據傳送類指令用到的助記符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8種。 可分為兩類,一類為單純的數據傳送,另一類為數據交換。 源操作數可采用寄存器、寄存器間接、直接、立即、變址5種尋址方式尋址,目的操作數可以采用寄存器、寄存器間接、直接尋址3種尋址方式。一、一、內部數據傳送指令內部數據傳送指令1)以累加器為目的的傳送指令:)以累加器為目的的傳送指令:MOV

12、 A, #data ; A data MOV A, direct ; A (direct)MOV A, Rn ; A(Rn)MOV A, Ri ; A(Ri) AXX A33H30H33H結果結果Eg:MOV A,30HEg:MOV A,#10H AXX30H10H結果結果10HAXXA33HR233H55H78H A78HR055H取出取出地址地址Eg:MOV A,R0Eg:MOV A,R2注意:在使用注意:在使用Ri進行間址尋址時,只能夠使用進行間址尋址時,只能夠使用R0和和R1。2)以通用寄存器)以通用寄存器Rn為目的的傳送指令:為目的的傳送指令:MOV Rn,A ; Rn (A)MOV

13、 Rn,direct ; Rn(direct)MOV Rn,#data ; Rn dataR2R2XX33HA33HEg:MOV R2,AEg:MOV R2,30HEg:MOV R2,#30HR2R2XX55H30H55HR2XXR230H30H3)以直接地址為目的的傳送指令:)以直接地址為目的的傳送指令: MOV direct ,#data ; direct data MOV direct1,direct2 ; direct1 (direct2) MOV direct,A ; direct (A) MOV direct ,Ri ; direct (Ri) MOV direct,Rn ; di

14、rect (Rn) Eg:MOV 30H,#33H 30H30HXX33H33H30H30HXX55H31H55HEg:MOV 30H,31HEg:MOV 30H,R0Eg:MOV 30H,AEg:MOV 30H,R3地址地址55H78H30H78HR0取出取出55H30H30H A33HXX33H30H30HR333HXX33H4)以通用寄存器間接地址為目的的傳送指令:)以通用寄存器間接地址為目的的傳送指令:MOV Ri,A ; (Ri) (A)MOV Ri,direct ; (Ri) (direct)MOV Ri,#data ; (Ri) dataEg:MOV R1,AEg:MOV R1,

15、30HEg:MOV R1,#30H55HAR1(地址地址)55H78H78H55H30HR1(地址地址)55H78H78H55H30HR1(地址地址)55H30H5)數據指針賦值指令)數據指針賦值指令當要對片外的RAM和I/O接口進行訪問時,或進行查表操作時,通常要對DPTR賦值。指令為:MOV DPTR, #data16 Eg:將數據指針:將數據指針DPTR指向存于指向存于ROM中的表格首地址。中的表格首地址。 MOV DPTR,#TABLEDPTRDPTRXXXX2000H2000HEg:將數據指針:將數據指針DPTR指向外部指向外部RAM的的2000H單元。單元。 MOV DPTR,#2

16、000H6 6)堆棧操作指令)堆棧操作指令堆棧操作指令包含入棧(堆棧操作指令包含入棧(PUSH)和出棧()和出棧(POP)。在使用)。在使用堆棧之前要首先給堆棧指針堆棧之前要首先給堆棧指針SP賦值。賦值。指令格式:指令格式:PUSH direct POP direct注意:先入后出原則注意:先入后出原則程序舉例:程序舉例: MOV SP , #30H PUSH SBUF; SP (SP)+1, 31H(SBUF) PUSH 60H ; SP (SP)+1, 32H(60H) POP 60H ; 60H ( 32H), SP (SP)-1 POP SBUF;SBUF (31H), SP (SP)

17、-1(SP+1)棧底棧底 (SP+2)入棧入棧出棧出棧(SP)二、片外數據傳遞指令二、片外數據傳遞指令外部數據傳送是指片外數據外部數據傳送是指片外數據RAM和累加器和累加器A之間的相互數之間的相互數據傳送。片外數據存儲器只能使用寄存器間接尋址方式,據傳送。片外數據存儲器只能使用寄存器間接尋址方式,有有4條指令:條指令: MOVX A, DPTR ;A (DPTR)片外片外 MOVX A,Ri ;A (Ri)片外片外 MOVX DPTR,A ;(DPTR)片外片外(A) MOVX Ri,A ;(Ri)片外片外(A)v注意:注意:該指令用于在單片機和外部該指令用于在單片機和外部RAM、擴展、擴展I

18、/O的數據傳送;的數據傳送;使用使用Ri時,只能訪問低時,只能訪問低8位地址為位地址為00HFFH地址段;地址段;使用使用DPTR時,能訪問時,能訪問0000H FFFFH地址段。地址段。三、程序存儲器數據傳送指令(查表指令)三、程序存儲器數據傳送指令(查表指令) 從程序存儲器讀取數據,向累加器從程序存儲器讀取數據,向累加器A傳送。指令格式:傳送。指令格式: MOVC A, A+DPTR ;A (A)+(DPTR) MOVC A, A+PC ;A (A)+(PC)3055H相加相加=3055HA66HDPTR3000H取出取出地址地址 A55H66H Eg:MOV DPTR, #3000H M

19、OV A, #55H MOVC A, A+DPTR四、字節交換指令四、字節交換指令字節交換指令指內部字節交換指令指內部RAM中的某個單元和累加器中的某個單元和累加器A之間進之間進行數據交換,可以是整個字節,也可以是半個字節。包含行數據交換,可以是整個字節,也可以是半個字節。包含3種種交換方式:交換方式:1、整字節交換指令:、整字節交換指令: XCH A, Rn ; (A) (Rn) XCH A, direct ; (A) (direct) XCH A, Ri ; (A) (Ri)A內部內部RAM單元單元2、半字節交換指令、半字節交換指令將累加器將累加器A的低的低4位和位和R0或或R1的低的低4

20、位進行交換,各自的位進行交換,各自的高高4位保持不變。位保持不變。 XCHD A, Ri ; (A) 30 (Ri)30指令執行后指令執行后A0A1A2A3D4D5D6D7(Ri)D0D1D2D3A4A5A6A7AD0D1D2D3D4D5D6D7(Ri)A0A1A2A3A4A5A6A7A 執行指令前執行指令前3、累加器、累加器A高低半字節的交換指令高低半字節的交換指令 SWAP A執行前執行前A7A6A5A4A3A2A1A0執行后執行后A3A2A1A0A7A6A5A4例:例: 假設在執行指令之前(假設在執行指令之前(A)= 70H,則在指令執行完后,則在指令執行完后,(A)= 07H。執行前執

21、行前01110000執行后執行后000001112.2.算術運算指令算術運算指令 算術運算指令有加法、減法、乘法和除法四類,除加算術運算指令有加法、減法、乘法和除法四類,除加1和減和減1指令,其他所有的指令都將影響指令,其他所有的指令都將影響PSW的標志位。的標志位。一、不帶進位的加法指令一、不帶進位的加法指令ADD A,Rn ;A (A)+(Rn)ADD A, direct ;A (A)+(direct)ADD A, Ri ;A (A)+(Ri)ADD A, #data ;A (A)+data例:將內部例:將內部RAM中中40H和和41H單元的數相加,再把和送到單元的數相加,再把和送到42H

22、單元。單元。 MOV A, 40H ADD A, 41H MOV 42H, A加法運算對加法運算對PSW標志位的影響標志位的影響1、在上例中,如果運算結果超出、在上例中,如果運算結果超出FFH(255),將產生進),將產生進位位PSW的的CY位將被置位將被置1。2、若預先說明、若預先說明40H和和41H中放置的是有符號數,則在運算中放置的是有符號數,則在運算指令指令“ADD A,41H”執行后,還要檢查執行后,還要檢查PSW中溢出位中溢出位OV的的狀態,如果狀態,如果OV位為位為1,則運算結果錯誤。,則運算結果錯誤。溢出產生的條件:溢出產生的條件:在運算時,如果在運算時,如果D6D6位和位和D

23、7D7位中一個有進位而另一個無進位,位中一個有進位而另一個無進位,則則OV=1OV=1,溢出。,溢出。二、帶進位的加法運算二、帶進位的加法運算該類指令主要用于多字節的加法運算該類指令主要用于多字節的加法運算ADDC A,Rn ; A(A)+(Rn)+(CY)ADDC A, direct ; A (A)+(direct)+(CY)ADDC A, Ri ; A (A)+(Ri)+(CY)ADDC A, #data ;A (A)+data+(CY)v 如果加數和被加數是無符號數,則在計算后要注意是否如果加數和被加數是無符號數,則在計算后要注意是否產生進位。產生進位。v 如果加數和被加數是有符號數,則

24、在計算后要注意是否如果加數和被加數是有符號數,則在計算后要注意是否溢出,只要溢出,則運算結果錯誤;如果無溢出,則注意溢出,只要溢出,則運算結果錯誤;如果無溢出,則注意是否有進位。是否有進位。例:加數存放在內部例:加數存放在內部RAM的的41H(高位)和(高位)和40H(低(低位),被加數存放在位),被加數存放在43H(高位)和(高位)和42H(低位),將它(低位),將它們相加,和存放在們相加,和存放在46H44H中。中。程序:程序: CLR C MOV A, 40H ADD A, 42H MOV 44H,A MOV A, 41H ADDC A, 43H MOV 45H,A CLR A ADDC

25、 A, #00H MOV 46H,A三、加三、加1指令指令INC A ;A (A)+1INC Rn ;Rn (Rn)+1INC direct ; direct (direct)+1INC Ri ;(Ri) (Ri)+1INC DPTR ;DPTR (DPTR)+1注意:以上所有指令不會影響注意:以上所有指令不會影響PSW中的各個標志位。中的各個標志位。例:設例:設(A)=FFH,(R0)=25H,(26H)=3AH,(DPTR)=2000H執行程序:執行程序: INC A INC R0 INC R0 INC DPTR結果為:結果為:(A)=00H,(R0)=26H,(26H)=3BH,(DPT

26、R)=2001H四、減四、減1指令指令DEC A ;A(A)-1 DEC Rn ;Rn (Rn)-1 DEC direct ;direct (direct)-1 DEC Ri ;(Ri) (Ri)-1注意:減注意:減1指令也不會影響指令也不會影響PSW的各個標志位。的各個標志位。思考:設思考:設(A)=FFH,(R0)=27H,(26H)=3AH 執行程序:執行程序: DEC A DEC R0 DEC R0 結果結果(A)=_ ,(R0)=_ ,(26H)=_ 。 五、減法指令五、減法指令 SUBB A, Rn ;A (A)-(Rn)-(CY) SUBB A, direct ;A (A)-(d

27、irect)-(CY) SUBB A, Ri ;A (A)-(Ri)-(CY) SUBB A, #data ;A (A)-data-(CY)v如果減數和被減數是無符號數,則在計算后要注意是否如果減數和被減數是無符號數,則在計算后要注意是否產生借位。產生借位。v如果減數和被減數是有符號數,則在計算后要注意是否如果減數和被減數是有符號數,則在計算后要注意是否溢出,只要溢出,則運算結果錯誤;如果無溢出,則注意溢出,只要溢出,則運算結果錯誤;如果無溢出,則注意是否有借位。是否有借位。例:設(例:設(A)=C9H,(,(R2)=54H,(,(CY)=1,執行指令,執行指令SUBB A,R2 110010

28、01 01010100 - 1 01110100結果結果:(A)=74H,借位位借位位(CY)=0。六、乘法運算六、乘法運算 MUL AB 指令含義:將指令含義:將(A) (B),乘積的低位字節放在,乘積的低位字節放在A中,中,高位字節放在寄存器高位字節放在寄存器B中。中。七、除法運算七、除法運算DIV AB指令含義:將指令含義:將(A) (B),將商放入,將商放入A,余數放入寄存,余數放入寄存器器B中。中。v對對PSW標志位的影響:標志位的影響:Cy位被清位被清0乘積大于乘積大于FFH時,時,OV位為位為1。如果除數如果除數(B)=0,則,則OV位被置位被置1,表示除法無意義,表示除法無意義

29、,不能進行。不能進行。八、十進制調整指令八、十進制調整指令DA A這條指令用于對這條指令用于對BCDBCD編碼的十進制數相加結果進行調整。編碼的十進制數相加結果進行調整。例:例: 00100101 (25)BCD + 00111000 (38)BCD 01011101(5DH) 61相應程序:相應程序: MOV R2,#25H MOV A,#38H ADD A, R2 DA A注意:注意:DA A指令只能跟在指令只能跟在ADD或或ADDC加法指令后,不加法指令后,不適用于減法。適用于減法。 3.3.邏輯運算指令邏輯運算指令該類指令包含與、或、非、清該類指令包含與、或、非、清0 0、異或和移位指

30、令等共、異或和移位指令等共2424條。條。執行這些指令時一般不影響程序狀態字寄存器執行這些指令時一般不影響程序狀態字寄存器PSW,僅當目的,僅當目的操作數為操作數為ACC時對奇偶標志位有影響。時對奇偶標志位有影響。一、邏輯與運算指令組一、邏輯與運算指令組邏輯與指令的功能是將源操作數內容和目的操作數內容按邏輯與指令的功能是將源操作數內容和目的操作數內容按位相與,結果存入目的操作數指定單元,源操作數不變。位相與,結果存入目的操作數指定單元,源操作數不變。 ANL A,Rn ;A (A)(Rn) ANL A,direct; A (A)(direct) ANL A,Ri; A (A)(Ri) ANL

31、A, #data; A (A)data ANL direct, A ; direct (A)(direct) ANL direct,#data ; direct (direct) data例例:(A)=78H,(R1)=37H,則執行指令則執行指令 ANL A,R1后后,(A)= H (A) 01111000 (R1) 00110111 (A) 00110000程序設計程序設計:讀入讀入P1口的數據口的數據,將其低將其低4位清位清0,高高4位保留位保留,再把結果放到內部再把結果放到內部RAM的的40H單元。單元。MOV A,P1ANL A,#0F0HMOV 40H,A 程序設計程序設計:將累加

32、器將累加器A中壓縮中壓縮BCD碼分為兩個字節,形成碼分為兩個字節,形成非壓縮非壓縮BCD碼,放入內部碼,放入內部RAM的的40H和和41單元中。單元中。MOV 30H, A ;保存;保存A中的內容中的內容ANL A, #00001111B ;清高;清高4位,保留低位,保留低4位位MOV 40H, AMOV A, 30H ;取原數據;取原數據ANL A, #11110000B ;保留高;保留高4低,清低低,清低4位位SWAP AMOV 41H, A二、邏輯或運算指令二、邏輯或運算指令 ORL A,Rn ;A (A)V(Rn) ORL A,direct; A (A)V(direct) ORL A,

33、Ri; A (A)V(Ri) ORL A, #data; A (A)Vdata ORL direct,A ; direct (A)V(direct) ORL direct,#data ; direct (direct) Vdata 或運算舉例:假設或運算舉例:假設(A)=60H,(30H)=79H,則執行指令則執行指令 ORL A, 30H后后,(A)= H (A) 01100000 (30H) V 01111001 01111001程序設計舉例程序設計舉例:將串口緩沖區將串口緩沖區SBUF中的數據送到內中的數據送到內 部部RAM40H單元單元,再將其低再將其低7位位(D6D0)全部變成全部變

34、成1. MOV 40H,SBUFORL 40H,#7FH三、邏輯異或運算三、邏輯異或運算 XRL A,Rn ;A (A) (Rn) XRL A,direct; A (A) (direct) XRL A,Ri; A (A) (Ri) XRL A, #data; A (A) data XRL direct,A ; direct (A) (direct) XRL direct,#data ; direct (direct) data異或原則是相同為異或原則是相同為0,相異為,相異為1 。異或指令可用于判斷兩個字節中的數據是否相等異或指令可用于判斷兩個字節中的數據是否相等. .程序設計程序設計: :如

35、果如果(40H)=(60H),(40H)=(60H),將將PSWPSW中的中的F0F0位置位置1.1. CLR F0 MOV A,40H XRL A,60H JNZ OUT SETB F0四、累加器清四、累加器清0 0和取反指令和取反指令累加器清累加器清0 0指令指令 CLR A ;A 0累加器按位取反指令累加器按位取反指令 CPL A ;A /A例:假設例:假設(A)=89H,(A)=89H,在執行指令在執行指令 CPL A后后,(A)= H 89H=10001001取反取反: 01110110=76H 五、累加器移位指令五、累加器移位指令D0D1D2D3D4D5D6D71 1、循環左移、循

36、環左移 RL A01100101假設假設:(A)=0A6H,:(A)=0A6H,則在執行指令則在執行指令“RL A”RL A”后后,(A)=4DH,(A)=4DH執行前執行前(A):(A):10110010執行后執行后(A):(A):D0D1D2D3D4D5D6D72 2、循環右移、循環右移 RR A01100101假設假設:(A)=0A6H,:(A)=0A6H,則在執行指令則在執行指令“RR A”RR A”后后, ,(A)=53H執行前執行前(A):(A):11001010執行后執行后(A):(A):3、帶進位循環左移帶進位循環左移RLC A例例: :假設假設(A)=0A6H,(CY)=0;

37、(A)=0A6H,(CY)=0;則在執行指令則在執行指令“RLC A”RLC A”后,后,(A)=_ ,(CY)=_(A)=_ ,(CY)=_執行前執行前: :CYD7 D6 D5 D4 D3 D2 D1 D0010100110101001100執行后執行后:4、帶進位位循環右移帶進位位循環右移RRC A例例: :假設假設(A)=0A6H,(CY)=0;(A)=0A6H,(CY)=0;則在執行指令則在執行指令“RRC A”RRC A”后,后,(A)=_ ,(CY)=_(A)=_ ,(CY)=_執行前執行前: :CY D7 D6 D5 D4 D3 D2 D1 D00101001101100101

38、00執行后執行后: : 程序設計程序設計:將存儲在內部將存儲在內部RAM的的40H和和41單元中單元中16位二位二進制數循環左移進制數循環左移1位。位。CLR CMOV A, 40HRLC AMOV 40H, A MOV A, 41HRLC AMOV 41H, A MOV A, 40HADDC A, #00HMOV 40H, A 4.4.控制轉移指令控制轉移指令 控制轉移類指令的功能是根據要求修改程序計數器控制轉移類指令的功能是根據要求修改程序計數器PC的內容,以改變程序的運行流程,實現轉移。的內容,以改變程序的運行流程,實現轉移。 80C51指令系統中有指令系統中有17條控制程序轉移類指令。

39、它們是條控制程序轉移類指令。它們是無條件轉移和條件轉移、絕對轉移和相對轉移、長轉移和短無條件轉移和條件轉移、絕對轉移和相對轉移、長轉移和短轉移、調用和返回指令等。這類指令多數不影響程序狀態標轉移、調用和返回指令等。這類指令多數不影響程序狀態標志寄存器。志寄存器。 一、無條件轉移指令一、無條件轉移指令1、長轉移指令、長轉移指令 LJMP addr16說明:說明:PC無條件跳轉到無條件跳轉到addl6地址地址,可在可在64KB范圍內轉范圍內轉移移, 稱為長轉移指令稱為長轉移指令 。2、絕對轉移指令絕對轉移指令 AJMP addr11 例:例: AJMP MM MM: MOV A,#00H說明:說明

40、:PC無條件轉向到無條件轉向到addl1地址可在地址可在2KB范圍內轉移范圍內轉移, 稱為絕對轉移指令。稱為絕對轉移指令。3、短跳轉指令(相對轉移指令)短跳轉指令(相對轉移指令) SJMP rel說明:說明:PCPC2rel, rel是偏移量是偏移量, 它是它是8位有符號數位有符號數, 范圍范圍-128+127即向后跳轉即向后跳轉128B, 向前可跳轉向前可跳轉127B4、間接轉移指令間接轉移指令 JMP A+DPTR說明:說明: PC ADPTRPC,該指令主要用于多分支的跳該指令主要用于多分支的跳轉程序設計。跳轉的目標地址是累加器轉程序設計。跳轉的目標地址是累加器A A和數據指針和數據指針

41、DPTRDPTR之和。之和。二、條件轉移指令二、條件轉移指令所謂條件轉移,指指令中規定的條件滿足時,程序跳轉所謂條件轉移,指指令中規定的條件滿足時,程序跳轉到目標地址。到目標地址。1 1、累加器判零轉移指令、累加器判零轉移指令JZ rel ;如;如(A)=0,跳到目標語句,跳到目標語句,PCPC2rel ;如;如(A)0,順序執行下一條指令,順序執行下一條指令 JNZ rel ;如;如(A)0,跳到目標語句,跳到目標語句, PCPC2rel ;如;如(A)=0,順序執行下一條指令,順序執行下一條指令2 2、比較轉移指令、比較轉移指令CJNE A, #data, rel; A(direct),

42、順序執行順序執行 ; A(direct), PC PC3rel, CY 0 ; A(direct), PC PC3rel, CY 1CJNE A,direct,relCJNE Rn, #data,relCJNE Ri, #data,rel3、循環轉移指令、循環轉移指令DJNZ Rn,rel ;RnRn-1 ;Rn0, PC PC2rel ;Rn0,順序執行,順序執行DJNZ direct, rel程序設計舉例:將內部程序設計舉例:將內部RAM中中30H3FH的數依次送到的數依次送到70H7FH單元中。單元中。 MOV R0,#30H ;數據源首地址數據源首地址 MOV R1,#70H ;數據存

43、放目標首地址數據存放目標首地址 MOV R2,#10H ;數據個數數據個數LOOP: MOV A,R0 MOV R1,A INC R0 INC R1 DJNZ R2,LOOP END三、子程序調用和返回指令三、子程序調用和返回指令1、長調用指令、長調用指令 LCALL addr16 ; PC PC3,SP SP1, ;(SP) PC.7PC.0, SPSP1, ;(SP) PC.15PC.8,PC addr16例:例:LCALL DELAY ;調用;調用DELAY 子程序子程序2、絕對調用指令、絕對調用指令 ACALL addr11;PC PC2,SP SP1, ;(SP) PC.7PC.0,

44、SPSP1, ;(SP) PC.15PC.8, ;PC.10PC.0 addr113、子程序返回指令、子程序返回指令 RET ;子程序調用返回;子程序調用返回 ;PC.15PC.8 (SP), SP SP-1 ;PC.7PC.0 (SP), SP SP-1 4 4、中斷服務子程序返回指令、中斷服務子程序返回指令 RETI ;PC.15PC.8 (SP), SP SP-1 ;PC.7PC.0 (SP), SP SP-1 說明:用于中斷程序返回說明:用于中斷程序返回, 執行該指令同時清除優先級狀執行該指令同時清除優先級狀態觸發器態觸發器四、空操作指令四、空操作指令指令格式:指令格式: NOP ;

45、PC PC1 說明:只進行取指令和譯碼說明:只進行取指令和譯碼, 不進行任何操作不進行任何操作, 故為空操作故為空操作, 常用于產生一個機器周期延時常用于產生一個機器周期延時5. 5. 位操作指令位操作指令 (1717條)條)一、位傳送指令一、位傳送指令MOV C,bit ;Cy (bit)MOV bit , C ;bit (Cy)例:例: MOV C,00H ;將;將00H位的狀態傳送給位的狀態傳送給CY MOV P1.0,C ;將;將CY位的狀態傳給位的狀態傳給P1口的第口的第0位位程序設計:將程序設計:將00H位內容與位內容與7FH位內容交換位內容交換MOV C, 00HMOV 01H, CMOV C, 7FHMOV 00H, CMOV C, 01HMOV 7FH, C二、位置二、位置“1”1”和清和清“0”0”CLR bit ; bit 0CLR C ; Cy 0SETB bi

溫馨提示

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

評論

0/150

提交評論