第3章AT89S51的指令系統(tǒng)_第1頁
第3章AT89S51的指令系統(tǒng)_第2頁
第3章AT89S51的指令系統(tǒng)_第3頁
第3章AT89S51的指令系統(tǒng)_第4頁
第3章AT89S51的指令系統(tǒng)_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第3 章章 AT89S51單片機的指令系統(tǒng)單片機的指令系統(tǒng)主要內容:主要內容: 1. AT89S51單片機指令概述。 2. 指令系統(tǒng)分類介紹 重點理解:重點理解:指令的功能、使用方法指令的功能、使用方法3.1 指令系統(tǒng)概述指令系統(tǒng)概述 AT89S51的基本指令共的基本指令共111條。條。按指令所占的字節(jié)來分按指令所占的字節(jié)來分單字節(jié)指令49條雙字節(jié)指令45條三字節(jié)指令17條按指令的執(zhí)行時間來分按指令的執(zhí)行時間來分1個機器周期指令64條2個機器周期指令45條4個機器周期指令2條 (乘、除指令) 12MHz晶振晶振:機器周期為機器周期為1 s。3.2 AT89S51指令系統(tǒng)分類介紹指令系統(tǒng)分類介

2、紹111條條指令指令按按功能功能分為分為5大類大類(1)數(shù)據傳送類數(shù)據傳送類(28條條)(2)算術運算類)算術運算類(24條)條)(3)邏輯操作類)邏輯操作類(25條條)(4)控制轉移類)控制轉移類(17條條)(5)位操作類)位操作類(17條條)指令中操作數(shù)的描述符號的意義指令中操作數(shù)的描述符號的意義:RnRiDirect#data#data16relDPTRbitC(或(或Cy)addr11addr16(X)(X)當前8個工作寄存器R0R7(n=07)間址寄存器R0、R1(i=0,1)直接地址,包括128BRAM單元地址和26個SFR單元地址包含在包含在指令中的指令中的8位立即數(shù)位立即數(shù)包含

3、在包含在指令中的指令中的16位立即數(shù)位立即數(shù)相對轉移指令中的偏移量,8位的帶符號補碼數(shù)。16位外部位外部數(shù)據指針數(shù)據指針寄存器寄存器內內RAM或或SFR中的直接尋址位中的直接尋址位進(借)位標志位或位累加器11位目的地址16位目的地址間接尋址寄存器前綴,如Ri,A+DPTRX中的內容中的內容由X尋址的單元中的內容箭頭右邊的內容被箭頭左邊的內容所取代3.2.1 數(shù)據傳送類指令(數(shù)據傳送類指令(28條)條)MOV ,通用格式:通用格式:指令功能:指令功能:把源操作數(shù)傳送到目的操作數(shù)源操作數(shù)不改變,目的操作數(shù)修改為源操作數(shù)。數(shù)據傳送類操作屬“復制”性質對標志位影響:對標志位影響:不影響標志位:Cy、

4、Ac和OV 影響標志位:P(僅當A為目的操作數(shù)時)常用常用MOV MOVXMOVC片內RAM和特殊功能寄存器之間的傳送片外RAM與ACC之間的傳送程序存儲器的數(shù)據送ACC MOV A,#70H舉例:舉例:MOV A,R0;(R0)AMOV A,70H;(70H)AMOV A,R0;(R0)A;70HA3.2.1 數(shù)據傳送類指令(數(shù)據傳送類指令(28條)續(xù)條)續(xù)執(zhí)行后兩條指令, WR(P3.6)有效。牢記!累加器累加器A與外部數(shù)據存儲器傳送指令(與外部數(shù)據存儲器傳送指令(4條)條)MOVX A,DPTR;(DPTR)A,讀外RAM/IOMOVX A,Ri;(Ri)A,讀外RAM/IOMOVX D

5、PTR,A;(A)(DPTR),寫外RAM/IOMOVX Ri,A;(A)(Ri),寫外RAM/IO采用DPTR間接尋址,高8位地址(DPH)由P2口 輸出,低8位地址(DPL)由P0口輸出。采用Ri(i=0,1)間接尋址,可尋址片外RAM的256個 單元。Ri內容由P0口輸出。MOV后面加“X”,表示訪問的是片外RAM或I/O口執(zhí)行前兩條指令, RD(P3.7)有效。牢記!3.2.1 數(shù)據傳送類指令(數(shù)據傳送類指令(28條)續(xù)條)續(xù)MOVC A,A+PC 查表指令(查表指令(2條)條) 例: (A)=40H執(zhí)行: 1000H: MOVC A,A+PC分析:分析:該指令占用一個字節(jié),下一條指令

6、地址為該指令占用一個字節(jié),下一條指令地址為1001H結果:把結果:把程序存儲器程序存儲器1041H的內容送入的內容送入A。1001H+40H=1041H3.2.1 數(shù)據傳送類指令(數(shù)據傳送類指令(28條)續(xù)條)續(xù) 查表指令(查表指令(2條)續(xù)條)續(xù) MOVC A,A+DPTR例:(DPTR)=8100H (A)=40H執(zhí)行: MOVC A,A+DPTR結果:將結果:將 存儲器中存儲器中 單元內容送到單元內容送到A中。中。執(zhí)行上述兩條指令時,單片機的執(zhí)行上述兩條指令時,單片機的PSEN引腳信號引腳信號 (程序存儲器讀)有效。(程序存儲器讀)有效。牢記!牢記!8140H程序程序3.2.1 數(shù)據傳送

7、類指令(數(shù)據傳送類指令(28條)續(xù)條)續(xù)例:若(SP)=60H,(A)=30H,(B)=70H堆棧指針SP指出棧頂位置。;進棧指令PUSH direct 功能:先將棧指針SP加1,再把direct中的內容送到SP 指示的內部RAM單元中。執(zhí)行:PUSH ACC;(SP)+1=61HSP,(A)61HPUSH B;(SP)+1=62HSP,(B)62H結果:結果: (61H)=62H?30H (62H)=?70H (SP)=?3.2.1 數(shù)據傳送類指令(數(shù)據傳送類指令(28條)續(xù)條)續(xù) 功能:SP指示的棧頂(內RAM單元)內容送入direct 字節(jié)單元中,棧指針SP減1。;出棧指令POP dir

8、ect結果:結果:(DPTR)=例: 若 (SP)=62H,(62H)=70H,(61H)=30H執(zhí)行:執(zhí)行:POP DPH POP DPL;(SP)DPH,(SP)-1SP ;(SP)DPL,(SP)-1SP60H7030H(SP)=?3.2.1 數(shù)據傳送類指令(數(shù)據傳送類指令(28條)續(xù)條)續(xù)3.2.2 算術操作類指令(算術操作類指令(24條)條) 加、減、乘、除指令加、減、乘、除指令單字節(jié)單字節(jié) 二進制二進制 無符號數(shù)無符號數(shù)的的、需編寫程序實現(xiàn)需編寫程序實現(xiàn)帶符號帶符號或或多字節(jié)多字節(jié)二進制數(shù)二進制數(shù) 或或十進制數(shù)十進制數(shù)運算。運算。算術運算結果將使算術運算結果將使PSW的的Cy、Ac

9、、OV 標志位置標志位置1或清或清0。增增1和減和減1指令指令不影響不影響這些標志。這些標志。1加法指令加法指令例1:(A)=53H,(R0)=FCH執(zhí)行指令:ADD A,R0結果結果: (A)= Cy= Ac= OV= P= 例2:(A)=85H, (R0)=20H, (20H)=AFH執(zhí)行指令:ADD A,R0結果結果: (A)= Cy= Ac= OV= P=4FH100 1111134H? ? ? ? ? ? ? ? ? ? 3.2.2 算術操作類指令(算術操作類指令(24條)續(xù)條)續(xù) 2. 帶進位加法指令(帶進位加法指令(4條)條)標志位標志位Cy參加運算,因此是三個數(shù)相加。參加運算,

10、因此是三個數(shù)相加。例:(A)=85H, (20H)=FFH, Cy=1執(zhí)行指令:ADDC A,20H結果結果: (A)= Cy= Ac= OV= P=85H11103.2.2 算術操作類指令(算術操作類指令(24條)續(xù)條)續(xù) INC DPTR;是16位數(shù)增1指令。3. 增增1指令(指令(5條)條)INC AINC Rn ;n=07INC direct INC Ri ;i=0,1 INC DPTR 增1指令是把指令中所指出的內容進行加1操作, 并不影響標志Cy的狀態(tài)。3.2.2 算術操作類指令(算術操作類指令(24條)續(xù)條)續(xù) 4. 十進制調整指令(十進制調整指令(1條)條)用于對 運算結果的修

11、正。修正。DA A壓縮壓縮BCD碼碼 加法加法3.2.2 算術操作類指令(算術操作類指令(24條)續(xù)條)續(xù) 例:(A)=56H, (R5)=67H,把它們看作為兩個壓縮 的BCD數(shù),進行BCD數(shù)的加法。執(zhí)行指令: ADD A,R5 DA A結果:結果: (A)= Cy=兩個兩個BCD碼碼按二進制相加按二進制相加之后,必須經本指令之后,必須經本指令的調整的調整 ,才能得到正確的壓縮,才能得到正確的壓縮BCD碼的和數(shù)!碼的和數(shù)!23H15帶借位的減法指令(帶借位的減法指令(4條)條) 例:(A)=C9H , (R2)=54H, Cy=1執(zhí)行指令: SUBB A,R2結果:結果: (A)= Cy=

12、AC= OV=74H0013.2.2 算術操作類指令(算術操作類指令(24條)續(xù)條)續(xù) 6減減1指令(指令(4條)條);(Ri)-1(Ri),i=0,17乘法指令(乘法指令(1條)條)(23)MUL AB ;ABBACy清清“0”,若積大于,若積大于255,則,則OV置置“1”,否則清,否則清“0”。8除法指令(除法指令(1條)條)(24)DIV AB ;A/BA(商),余數(shù)BCy 和和OV清清“0”,若,若B為為“0” ,則結果不定,置,則結果不定,置OV為為“1” 。不不影影響響標標志志位位(19)DEC A(20)DEC Rn(21)DEC direct(22)DEC Ri;(A)-1A

13、;(Rn)-1Rn,n=07;(direct)-1directP標標志志除除外外3.2.2 算術操作類指令(算術操作類指令(24條)續(xù)條)續(xù) A的內容按位邏輯取反,不影響標志位。的內容按位邏輯取反,不影響標志位。3.2.3 邏輯運算指令(邏輯運算指令(25條)條)1. 累加器累加器A 清清“0”指令指令(1) CLR AA清清“0”,不影響,不影響Cy、Ac、OV等標志位。等標志位。(2) CPL A2. 累加器累加器A 求反求反指令指令累加器A內容和Cy一起向左環(huán)移一位,不影響其它標志。3左環(huán)移指令左環(huán)移指令(3)RL AA向左循環(huán)移位,位7循環(huán)移入位0,不影響標志位。4帶進位左環(huán)移指令帶進

14、位左環(huán)移指令(4)RLC AA7 A6 A5 A4 A3 A2 A1A0A6A3A1 A0A2A4A5A7Cy3.2.3 邏輯運算指令(邏輯運算指令(25條)續(xù)條)續(xù)A7 A6 A5 A4 A3 A2 A1A0A6A3A1 A0A2A4A5A75右環(huán)移指令右環(huán)移指令(5)RR A 累加器A的內容向右環(huán)移一位,Acc.0移入Acc.7,不影響其它標志。6帶進位右環(huán)移指令帶進位右環(huán)移指令(6)RRC A累加器A的內容和Cy一起向右環(huán)移一位,Acc.0進入Cy,Cy移入Acc.7。3.2.3 邏輯運算指令(邏輯運算指令(25條)續(xù)條)續(xù)Cy7累加器半字節(jié)交換指令累加器半字節(jié)交換指令(7)SWAP A

15、將累加器A的高半字節(jié)(Acc.7Acc.4)和低半字節(jié)(Acc.3Acc.0)互換。例: (A)=0C5H執(zhí)行指令: SWAP A結果:結果:(A)= 5CH3.2.3 邏輯運算指令(邏輯運算指令(25條)續(xù)條)續(xù)結果結果: (A)=8邏輯與指令邏輯與指令(6條條)例 :(A)=07H, (R0)=0FDH執(zhí)行: ANL A,R005H3.2.3 邏輯運算指令(邏輯運算指令(25條)續(xù)條)續(xù)9邏輯或指令邏輯或指令(6條條)例 :(P1)=05H, (A)=33H執(zhí)行: ORL P1,A結果結果: (P1)= 37H10邏輯異或指令邏輯異或指令(6條條)例 :(A)=90H, (R3)=73H執(zhí)

16、行: XRL A,R3結果結果: (A)= E3H1長轉移指令(長轉移指令(1條)條)(1)LJMP addr163.2.4 控制轉移類指令(控制轉移類指令(17條)條)n無條件無條件地轉向地轉向addr16指定的目的地址指定的目的地址。n目的地址可以在目的地址可以在64K程序存儲器程序存儲器地址地址 空間的任何位置。空間的任何位置。 程序在匯編時,由程序在匯編時,由匯編程序匯編程序自動計算和填入偏移量自動計算和填入偏移量。2相對轉移指令(相對轉移指令(1條)條)(2)SJMP rel編寫程序時,直接寫要轉向的目標地址標號即可。例: LOOP:MOV A,R6 SJMP LOOP 3.2.4

17、控制轉移類指令(控制轉移類指令(17條)續(xù)條)續(xù)3間接跳轉指令(間接跳轉指令(1條)條)(3)JMP A+DPTR 目的地址由A中8位無符號數(shù)與DPTR的16位數(shù)內容之和來確定。以DPTR內容為基址,A的內容作為變址,給A賦予不同值,即可實現(xiàn)多分支轉移。3.2.4 控制轉移類指令(控制轉移類指令(17條)續(xù)條)續(xù)4條件轉移指令(條件轉移指令(2條)條) 規(guī)定的條件滿足,則進行轉移,條件不滿足則順序執(zhí)行下一條指令。;若A內容為“0”,則轉移;若A內容非“0”,則轉移(4)JZ rel(5)JNZ rel3.2.4 控制轉移類指令(控制轉移類指令(17條)續(xù)條)續(xù)5比較不相等轉移指令(比較不相等轉

18、移指令(4條)條) 比較前面兩個操作數(shù)的大小,若它們的值不相等則轉移到目的地址。舉例:舉例: CJNE A,direct,reln如果第一操作數(shù)(無符號整數(shù))小于第二操作數(shù)(無符號整數(shù)),則Cy置1,否則Cy清0。n該指令的執(zhí)行不影響任何一個操作數(shù)的內容。3.2.4 控制轉移類指令(控制轉移類指令(17條)續(xù)條)續(xù)6減減1不為不為0轉移指令(轉移指令(2條)條)舉例:舉例:DJNZ Rn,rel;n=07 將操作數(shù)(Rn)減1,結果回送到Rn中,若結果不為0則轉移。 此指令主要用于控制程序循環(huán)。以減1后是否為“0”作為轉移條件,即可實現(xiàn)按次數(shù)控制循環(huán)。3.2.4 控制轉移類指令(控制轉移類指令

19、(17條)續(xù)條)續(xù)7調用子程序指令(調用子程序指令(2條)條)ACALL addrll ;短調用指令短調用指令與AJMP指令相類似,是為了與MCS-48中的CALL指令兼容而設的。LCALL addr16 ;長調用指令長調用指令可調用64KB范圍內程序存儲器中的任何一個子程序。2KB范圍內的調用子程序的指令。3.2.4 控制轉移類指令(控制轉移類指令(17條)續(xù)條)續(xù)8 子程序的返回指令子程序的返回指令(15)RET9中斷返回指令中斷返回指令 (16)RETI與RET指令相似,不同之處是本指令清除了中斷響應時被置“1”的內部中斷優(yōu)先級寄存器的優(yōu)先級狀態(tài)。10空操作指令空操作指令(17)NOP

20、(SP)PCH,然后(SP)-1SP(SP)PCL,然后(SP)-1SP只是耗費一個機器周期時間,執(zhí)行(PC)+1PC操作3.2.4 控制轉移類指令(控制轉移類指令(17條)續(xù)條)續(xù)3.2.5 位操作指令(位操作指令(17條)條)1.數(shù)據位傳送指令(數(shù)據位傳送指令(2條)條)(1)MOV C,bit例1:MOV C,06H例2:MOV P1.0,C(2)MOV bit,C不影響其他寄存器或標志位。把源操作數(shù)指定的位變量送到目的操作數(shù)指定處一個操作數(shù)必為C,另一個可以是任何直接尋址位。06H是內部RAM 20H字節(jié)位6的位地址。;(20H).6Cy;CyP1.02位變量修改指令(位變量修改指令(6條)條)例:CLR C;0CyCLR 27H;0(24H).7位CPL 08H;對 (21H).0位取反SETB P1.7;1P1.7位(8)SETB bit(7)SETB C(6)CPL bit(5)C

溫馨提示

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

評論

0/150

提交評論