第3章 AT89C51指令系統_第1頁
第3章 AT89C51指令系統_第2頁
第3章 AT89C51指令系統_第3頁
第3章 AT89C51指令系統_第4頁
第3章 AT89C51指令系統_第5頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第第3 3章章 80518051的指令系統的指令系統 介紹介紹AT89C51AT89C51匯編語言匯編語言的指令系統。的指令系統。 指令系統概述指令系統概述 AT89C51AT89C51的基本指令共的基本指令共111111條條,按指令所占的字節來分:按指令所占的字節來分: (1) (1) 單字節單字節指令指令4949條;條; (2) (2) 雙字節雙字節指令指令4545條;條; (3) (3) 三字節三字節指令指令1717條。條。按指令的執行時間來分按指令的執行時間來分: (1) (1) 1 1個機器周期個機器周期(1212個時鐘振蕩周期)指令個時鐘振蕩周期)指令6464條條 (2) (2)

2、2 2個機器周期個機器周期(2424個時鐘振蕩周期)指令個時鐘振蕩周期)指令4545條條 (3) (3) 只有只有乘、除兩條指令乘、除兩條指令的執行時間為的執行時間為4 4個機個機器周期器周期(4848個時鐘振蕩周期)。個時鐘振蕩周期)。12MHz12MHz晶振晶振: :機器周期為機器周期為1 s。 3.1 3.1 指令系統的尋址方式指令系統的尋址方式共共7 7種種尋址方式。尋址方式。 1 1寄存器尋址寄存器尋址 尋址方式尋址方式就是在指令中就是在指令中說明操作數所在地址說明操作數所在地址的方法的方法 操作數在寄存器中操作數在寄存器中 MOV A,Rn ;(;(Rn)A,n=07尋址范圍:尋址

3、范圍:2 2直接尋址直接尋址 尋址范圍:尋址范圍: (1)4組通用工作寄存區共組通用工作寄存區共32個工作寄存器。個工作寄存器。(2)部分)部分SFR,例如,例如A、B、DPTR等。等。直接地址形式直接地址形式MOV A,40H片內片內RAM的的128個單元:個單元:00H7FH SFR。除了以單元地址的形式外。除了以單元地址的形式外,還還可用寄存器符號可用寄存器符號的形式給出。例如:的形式給出。例如: MOV A,80H 與與 MOV A,P0是等價的是等價的。3. 3. 寄存器間接尋址寄存器間接尋址 尋址范圍:尋址范圍:寄存器中存放的是操作數的地址寄存器中存放的是操作數的地址加加前綴標志前

4、綴標志“” 。MOV A,Ri ;i=0或或1 MOVX A,DPTR(1)片內片內RAM 128B:00H7FH,形式為形式為Ri(i=0,1)(2)片)片外外64KB,形式為,形式為DPTR 注片外注片外RAM低低256B,MOVX A ,RiMOVX A,DPTR(3 3)堆棧區)堆棧區 堆棧操作指令堆棧操作指令PUSHPUSH(壓棧)和(壓棧)和POPPOP(出棧)使用堆(出棧)使用堆棧指針(棧指針(SPSP)作間址寄存器)作間址寄存器4 4立即尋址立即尋址 5 5基址變址尋址:基址變址尋址: 形式:形式:#dataMOV A,#40H只對只對ROM尋址尋址只有只有3條條:MOVC A

5、,A+DPTRMOVC A,A+PCJMP A+DPTR例如:例如:指令指令 MOVC AMOVC A,A+DPTRA+DPTR 其中其中A A的原有內的原有內容為容為05H05H,DPTRDPTR的內容為的內容為0400H0400H,該指令執行,該指令執行的結果是把程序存儲器的結果是把程序存儲器0405H0405H單元的內容傳送單元的內容傳送給給A A。6 6位尋址位尋址 MCS-51MCS-51有有位處理位處理功能,可以對數據位進行操作。功能,可以對數據位進行操作。尋址范圍:所有位尋址范圍:所有位 例如:例如: MOV C,40H = MOV C, (28H).0(1)片內)片內RAM中的

6、位尋址區。中的位尋址區。2種表示方法:種表示方法:位地址位地址和和單元地址加上位單元地址加上位,(2 2)可位尋址的)可位尋址的SFRSFR 4 4種種表示方法:表示方法:直接使用位地址直接使用位地址。 位名稱的表示位名稱的表示方法。方法。單元地址加位數單元地址加位數的表示方法。的表示方法。d.d.特殊功能寄存器符號加位數特殊功能寄存器符號加位數的表示方法。的表示方法。MOV C, F0=MOV C, 0D5H=MOV C, PSW.5=MOV C, (0D0H).57 7相對尋址相對尋址: : 程序轉移指令程序轉移指令中中 在相對尋址的轉移指令中,給出了地址偏移量,在相對尋址的轉移指令中,給

7、出了地址偏移量,以以“relrel”表示,即把表示,即把PCPC的當前值加上偏移量就構成的當前值加上偏移量就構成了程序轉移的目的地址:了程序轉移的目的地址: 目的地址目的地址= =轉移指令所在的地址轉移指令所在的地址 + + 轉移指令的字節數轉移指令的字節數relrel偏移量偏移量relrel是一帶符號的是一帶符號的8 8位二進制數補碼數位二進制數補碼數 。范圍是:范圍是:128 - +127128 - +127 尋址空間:尋址空間:ROMROM7 7種尋址方式及尋址空間,見課本表格。種尋址方式及尋址空間,見課本表格。3.2 AT89C513.2 AT89C51指令系統分類介紹指令系統分類介紹

8、111111條指令條指令,按功能分類,可分為下面,按功能分類,可分為下面5 5大類大類: (1 1)數據傳送類)數據傳送類(28(28條條) ) (2 2)算術操作類)算術操作類(24(24條條 (3 3)邏輯運算類)邏輯運算類(25(25條條) ) (4 4)控制轉移類)控制轉移類(17(17條條) ) (5 5)位操作類)位操作類(17(17條條) )當前寄存器區的當前寄存器區的8 8個工作寄存器個工作寄存器R0R0R7(n=0R7(n=07)7)。當前寄存器區中可作間接尋址寄存器的當前寄存器區中可作間接尋址寄存器的2 2個寄個寄存器存器R0R0、R1(i=0,1)R1(i=0,1)。直接

9、地址,直接地址,包含在包含在指令中的指令中的8 8位立即數位立即數。包含在包含在指令中的指令中的1616位立即數位立即數。相對轉移指令中的偏移量,為相對轉移指令中的偏移量,為8 8位的帶符號補位的帶符號補碼數。碼數。RnRiDirect#data#data16rel指令中符號的意義指令中符號的意義:數據指針數據指針,可用作,可用作1616位的數據地址寄存器。位的數據地址寄存器。內部內部RAMRAM或特殊功能寄存器中的或特殊功能寄存器中的直接尋址位直接尋址位。進位標志位或位處理機中的累加器。進位標志位或位處理機中的累加器。1111位目的地址位目的地址1616位目的地址位目的地址間接尋址寄存器前綴

10、,如間接尋址寄存器前綴,如RiRi,A+DPTRA+DPTRX X中的內容中的內容。由由X X尋址的單元中的內容尋址的單元中的內容。箭頭右邊的內容被箭頭左邊的內容所取代。箭頭右邊的內容被箭頭左邊的內容所取代。DPTRbitC(或(或Cy)addr11addr16(X)(X)3.2.1 3.2.1 數據傳送類指令數據傳送類指令 MOV MOV , 屬“復制”性質,而不是“搬家”不影響標志位不影響標志位:Cy、Ac和OV,影響奇偶標志位P。操作數的形式:操作數的形式:A, Rn, Ri, direct, #data 1 1以以A A為目的為目的: : MOV A,Rn ; (Rn)A,n=07 M

11、OV A,Ri ; (Ri)A,i=0,1 MOV A,direct ;(direct)A MOV A,#data ; #dataA 例如:例如: MOV A,R6 ;(R6)A,寄存器尋址 MOV A,70H ;(70H)A,直接尋址 MOV A,R0 ;(R0)A,間接尋址 MOV A,#78H ;78HA,立即尋址2. 2. 以以RnRn為目的為目的MOV Rn, AMOV Rn, direct MOV Rn, #data3.3.以以directdirect為目的為目的 MOV direct, A ; MOV direct, Rn;MOV direct, Ri ; MOV direct,

12、 #data;MOV direct1, direct2; 4.4.以以RiRi為目的為目的: : MOV Ri, A MOV Ri, direct ; MOV Ri, #data ; 注:無注:無 MOV Rn,Rn MOV Rn,Ri MOV Ri, Rn MOV Ri, Ri 5. 16位數據傳送指令:位數據傳送指令:唯一的唯一的16位數據的傳送指令位數據的傳送指令 MOV DPTR,#data16 6堆棧操作指令堆棧操作指令PUSH directPOP direct(SP)+1SP,(direct)進棧進棧出棧數據出棧數據 direct, (SP)-1SP例:PUSH AccPUSH B

13、POP DPHPOP DPL7. A7. A與片外與片外RAM: RAM: MOVXMOVX MOVX A, DPTR MOVX A, DPTR ;(DPTR)A,讀外部RAM/IO MOVX A, Ri MOVX A, Ri ;(Ri)A,讀外部RAM/IO MOVX DPTR,A MOVX DPTR,A;(A)(DPTR),寫外部RAM/IO MOVX Ri, A MOVX Ri, A ;(A)(Ri),寫外部RAM/IO 注意:注意:RDRD*或或WRWR*信號有效。信號有效。8.8.查表指令查表指令 : :讀讀ROM ROM MOVCMOVC(1) MOVC A,A+PC(PC)+(A

14、)A例如例如: (A)=30H,執行地址執行地址1000H處的指令處的指令 1000H: MOVC A,A+PC; (1031H)A(2) MOVC A,A+DPTR(DPTR)+(A)A例如例如:(DPTR)=8100H (A)=40H 執行指令執行指令 MOVC A,A+DPTR缺點:表格只能存放在該條查表指令后面的缺點:表格只能存放在該條查表指令后面的256個單元之內,個單元之內,表格的大小受到限制,且表格只能被一段程序所利用。表格的大小受到限制,且表格只能被一段程序所利用。優點:表格的大小和位置可以在優點:表格的大小和位置可以在64K64K程序存儲器中任意安排程序存儲器中任意安排,一,

15、一個表格個表格可為各個程序塊公用。可為各個程序塊公用。 9 9字節交換指令字節交換指令XCH A, RnXCH A, directXCH A, Ri例如:例如: (A)=80H,(R7)=08H,(40H)=F0H (R0)=30H,(30H)=0FH執行下列指令:執行下列指令: XCH A,R7 ;(A)與與(R7)互換互換 XCH A,40H ;(A)與與(40H)互換互換 XCH A,R0 ;(A)與與(R0)互換互換 結果:結果:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H1010( (低低) )半字節交換指令半字節交換指令 XCHD A,RiXCHD A,

16、Ri則則(A)=5EH,(60H)=39H。例如:例如:(R0)=60H,(60H)=3EH,(A)=59H執行完執行完 XCHD A,R0 指令指令,3.1.2 3.1.2 算術操作類指令算術操作類指令 以以A A為目的操作數為目的操作數。影響。影響CyCy、AcAc、OVOV。但增但增1 1和減和減1 1指令不影指令不影響。響。1 1加法加法 ADDADDADD A, RnADD A, directADD A, RiADD A, #data影響影響Cy、Ac、OV對對標志位的影響:標志位的影響:(1 1)如果)如果位位7 7有進位有進位,則置,則置“1 1”進位標志進位標志CyCy,否則清

17、,否則清“0 0”CyCy(2 2)如果)如果位位3 3有進位有進位,置,置“1 1”輔助進位標志輔助進位標志AcAc,否則清,否則清“0 0”AcAc(3 3)如果位如果位6 6有進位,而位有進位,而位7 7沒有進位,或者位沒有進位,或者位7 7有進位,而位有進位,而位6 6沒有,則溢出標志位沒有,則溢出標志位OVOV置置“1 1”,否則清,否則清“0 0”OVOV。溢出標志位溢出標志位OVOV的狀態,只有在的狀態,只有在帶符號數加法運算帶符號數加法運算時才有意義時才有意義。當兩個帶符號數相加時,當兩個帶符號數相加時,OV=1OV=1,表示加法運算表示加法運算超出了超出了累加器累加器A A所

18、能表示的帶符號數的有效范圍。所能表示的帶符號數的有效范圍。 例例 (A)=53H(A)=53H,(R0)=FCH(R0)=FCH,執行指令,執行指令 ADD A,R0ADD A,R0結果結果: : 例例 (A)= 85H,(R0)=20H,(A)= 85H,(R0)=20H,(20H20H)=AFH=AFH,執行指令:,執行指令: ADD A,R0ADD A,R0 結果結果: :(A)=4FH,Cy=1,Ac=0,OV=0,P=1(A)=34H,Cy=1,Ac=1,OV=1,P=1 2 2帶進位加法帶進位加法 ADDCADDC ADDC A, Rn ADDC A, direct ADDC A,

19、 Ri ADDC A, #data 例:例:(A)=85H,(20H)=FFH,Cy=1,執行指令:,執行指令: ADDC A,20H結果為結果為:(A)=85H,Cy=1,Ac=1,OV=0,P=13 3增增1:INC1:INC INC A INC Rn INC direct INC Ri INC DPTR不影響標志不影響標志,除(除(A)+1影響影響P外。外。4 4帶借位的減法指令帶借位的減法指令 SUBB A,Rn SUBB A,directSUBB A,RiSUBB A,#data注無SUB位6位7不同時有借位時OV=1,否則為0 6 6減減1 1:DECDEC DEC A DEC R

20、n DEC direct DEC Ri不影響標志位。不影響標志位。 7 7乘法指令乘法指令 注:DEC DPTRMUL AB ;ABBA8 8除法指令除法指令 DIV AB ;A/BA(商),余數(商),余數BCy0,當積,當積255,則,則OV1Cy0,當,當(B)=0時,時,OV18十進制調整十進制調整2個壓縮個壓縮BCD碼相加調整碼相加調整 DA A兩個兩個BCD碼碼按二進制相加按二進制相加之后,必須經本指令的調之后,必須經本指令的調整整 才能得到正確的壓縮才能得到正確的壓縮BCD碼的和數。碼的和數。3.2.3 3.2.3 邏輯運算指令邏輯運算指令1. CLR A ;(;(A)=0 CP

21、L A ;AA不影響標志不影響標志2. RL A RR A RLC A RRC A除除Cy,不影響其它標志,不影響其它標志3累加器半字節交換指令累加器半字節交換指令 SWAP A4 4邏輯與:邏輯與:ANLANL ANL A, Rn ANL A, direct ANL A, #data ANL A, Ri ANL direct, A ANL direct, #data5 5邏輯或:邏輯或:ORLORL6 6邏輯異或:邏輯異或:XRLXRL同上例例 (A)=05H,(R0)=0FDH 執行指令:執行指令:ANL A, R0ORL A,R0XRL A,R0(A)=05H(A)=0FDH(A)=0F

22、8H結果結果:3.2.4 3.2.4 控制轉移類指令控制轉移類指令 1 1無條件轉移指令無條件轉移指令 跳轉范圍跳轉范圍AJMP addrll AJMP addrll SJMP relSJMP relLJMP addr16LJMP addr16JMP A+DPTRJMP A+DPTR2112KBrel:有符號數 前128B后127B之間21664KB間接轉移 A 8位無符號數DPTR 16位 64KB跳轉的目的地址PC+本條指令字節addr在編寫程序時,在編寫程序時,直接寫上要轉向的目標地址標號直接寫上要轉向的目標地址標號就可就可以。以。例如:例如: LOOPLOOP:MOV AMOV A,R

23、6 R6 SJMP LOOPSJMP LOOP 程序在匯編時,由程序在匯編時,由匯編程序匯編程序自動計算和填入偏移量自動計算和填入偏移量。5 5條件轉移指令條件轉移指令 注注; ; 皆短轉移皆短轉移 - -128128127127(1) 根據根據(A)=?0JZ relJNZ rel (2)比較不相等轉移比較不相等轉移:CJNECJNE A, direct, relCJNE A, #data, relCJNE Rn, #data, relCJNE Ri, #data, rel(3)(3)減減1 1不為不為0 0轉移轉移: DJNZ : DJNZ 用于循環用于循環DJNZ DJNZ RnRn, rel, rel;n=0;n=07 7DJNZ DJNZ direct,direct, re

溫馨提示

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

最新文檔

評論

0/150

提交評論