第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ù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

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

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

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

4、Ac和OV 影響標(biāo)志位:P(僅當(dāng)A為目的操作數(shù)時)常用常用MOV MOVXMOVC片內(nèi)RAM和特殊功能寄存器之間的傳送片外RAM與ACC之間的傳送程序存儲器的數(shù)據(jù)送ACC MOV A,#70H舉例:舉例:MOV A,R0;(R0)AMOV A,70H;(70H)AMOV A,R0;(R0)A;70HA3.2.1 數(shù)據(jù)傳送類指令(數(shù)據(jù)傳送類指令(28條)續(xù)條)續(xù)執(zhí)行后兩條指令, WR(P3.6)有效。牢記!累加器累加器A與外部數(shù)據(jù)存儲器傳送指令(與外部數(shù)據(jù)存儲器傳送指令(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內(nèi)容由P0口輸出。MOV后面加“X”,表示訪問的是片外RAM或I/O口執(zhí)行前兩條指令, RD(P3.7)有效。牢記!3.2.1 數(shù)據(jù)傳送類指令(數(shù)據(jù)傳送類指令(28條)續(xù)條)續(xù)MOVC A,A+PC 查表指令(查表指令(2條)條) 例: (A)=40H執(zhí)行: 1000H: MOVC A,A+PC分析:分析:該指令占用一個字節(jié),下一條指令

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

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

8、ect結(jié)果:結(jié)果:(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ù)據(jù)傳送類指令(數(shù)據(jù)傳送類指令(28條)續(xù)條)續(xù)3.2.2 算術(shù)操作類指令(算術(shù)操作類指令(24條)條) 加、減、乘、除指令加、減、乘、除指令單字節(jié)單字節(jié) 二進(jìn)制二進(jìn)制 無符號數(shù)無符號數(shù)的的、需編寫程序?qū)崿F(xiàn)需編寫程序?qū)崿F(xiàn)帶符號帶符號或或多字節(jié)多字節(jié)二進(jìn)制數(shù)二進(jìn)制數(shù) 或或十進(jìn)制數(shù)十進(jìn)制數(shù)運算。運算。算術(shù)運算結(jié)果將使算術(shù)運算結(jié)果將使PSW的的Cy、Ac

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

10、因此是三個數(shù)相加。例:(A)=85H, (20H)=FFH, Cy=1執(zhí)行指令:ADDC A,20H結(jié)果結(jié)果: (A)= Cy= Ac= OV= P=85H11103.2.2 算術(shù)操作類指令(算術(shù)操作類指令(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指令是把指令中所指出的內(nèi)容進(jìn)行加1操作, 并不影響標(biāo)志Cy的狀態(tài)。3.2.2 算術(shù)操作類指令(算術(shù)操作類指令(24條)續(xù)條)續(xù) 4. 十進(jìn)制調(diào)整指令(十進(jìn)制調(diào)整指令(1條)條)用于對 運算結(jié)果的修

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

12、AC= OV=74H0013.2.2 算術(shù)操作類指令(算術(shù)操作類指令(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” ,則結(jié)果不定,置,則結(jié)果不定,置OV為為“1” 。不不影影響響標(biāo)標(biāo)志志位位(19)DEC A(20)DEC Rn(21)DEC direct(22)DEC Ri;(A)-1A

13、;(Rn)-1Rn,n=07;(direct)-1directP標(biāo)標(biāo)志志除除外外3.2.2 算術(shù)操作類指令(算術(shù)操作類指令(24條)續(xù)條)續(xù) A的內(nèi)容按位邏輯取反,不影響標(biāo)志位。的內(nèi)容按位邏輯取反,不影響標(biāo)志位。3.2.3 邏輯運算指令(邏輯運算指令(25條)條)1. 累加器累加器A 清清“0”指令指令(1) CLR AA清清“0”,不影響,不影響Cy、Ac、OV等標(biāo)志位。等標(biāo)志位。(2) CPL A2. 累加器累加器A 求反求反指令指令累加器A內(nèi)容和Cy一起向左環(huán)移一位,不影響其它標(biāo)志。3左環(huán)移指令左環(huán)移指令(3)RL AA向左循環(huán)移位,位7循環(huán)移入位0,不影響標(biāo)志位。4帶進(jìn)位左環(huán)移指令帶進(jì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的內(nèi)容向右環(huán)移一位,Acc.0移入Acc.7,不影響其它標(biāo)志。6帶進(jìn)位右環(huán)移指令帶進(jìn)位右環(huán)移指令(6)RRC A累加器A的內(nèi)容和Cy一起向右環(huán)移一位,Acc.0進(jìn)入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結(jié)果:結(jié)果:(A)= 5CH3.2.3 邏輯運算指令(邏輯運算指令(25條)續(xù)條)續(xù)結(jié)果結(jié)果: (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結(jié)果結(jié)果: (P1)= 37H10邏輯異或指令邏輯異或指令(6條條)例 :(A)=90H, (R3)=73H執(zhí)

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

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

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

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

20、(SP)PCH,然后(SP)-1SP(SP)PCL,然后(SP)-1SP只是耗費一個機(jī)器周期時間,執(zhí)行(PC)+1PC操作3.2.4 控制轉(zhuǎn)移類指令(控制轉(zhuǎn)移類指令(17條)續(xù)條)續(xù)3.2.5 位操作指令(位操作指令(17條)條)1.數(shù)據(jù)位傳送指令(數(shù)據(jù)位傳送指令(2條)條)(1)MOV C,bit例1:MOV C,06H例2:MOV P1.0,C(2)MOV bit,C不影響其他寄存器或標(biāo)志位。把源操作數(shù)指定的位變量送到目的操作數(shù)指定處一個操作數(shù)必為C,另一個可以是任何直接尋址位。06H是內(nèi)部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)系上傳者。文件的所有權(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論