單片機(jī)原理及接口技術(shù)(第二版-李全利)第3章80C51的指令系統(tǒng)_第1頁(yè)
單片機(jī)原理及接口技術(shù)(第二版-李全利)第3章80C51的指令系統(tǒng)_第2頁(yè)
單片機(jī)原理及接口技術(shù)(第二版-李全利)第3章80C51的指令系統(tǒng)_第3頁(yè)
單片機(jī)原理及接口技術(shù)(第二版-李全利)第3章80C51的指令系統(tǒng)_第4頁(yè)
單片機(jī)原理及接口技術(shù)(第二版-李全利)第3章80C51的指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第3章 80C51的指令系統(tǒng)指令格式及常用符號(hào)3.180C51的尋址方式3.2數(shù)據(jù)傳送指令 (29條)3.3算數(shù)運(yùn)算指令 (24條)3.4邏輯運(yùn)算與循環(huán)類指令(24條)3.5控制轉(zhuǎn)移類指令 (17條)3.6位操作類指令 (17條)3.72022/8/2013.1 指令格式及常用符號(hào)3.1.1 機(jī)器指令的字節(jié)編碼形式 8位編碼僅為操作碼 單字節(jié)指令(49條)機(jī)器指令:計(jì)算機(jī)能直接識(shí)別和執(zhí)行的指令。 位號(hào)7 6 5 4 3 2 1 0字節(jié)opcode如:INC A 編碼為:00000100即:04H 8位編碼含操作碼和寄存器編碼位號(hào)7 6 5 4 3 2 1 0 字節(jié)opcoder r r如:MO

2、V A,R0 編碼為:11101000即:E8H2022/8/202 雙字節(jié)指令(45條)位號(hào)7 6 5 4 3 2 1 0字節(jié)opcodedata或direct 三字節(jié)指令(17條)位號(hào)7 6 5 4 3 2 1 0字節(jié)opcodedata或directdata或direct如:MOV A,#50H 編碼為:0111010001010000即:74H 50H如:MOV 20H,#50H 編碼為:011101010100000001010000即:75H 20H 50H2022/8/203 書(shū)寫(xiě)格式注意:操作助記符不能缺少操作數(shù)個(gè)數(shù)可為:1、2、3個(gè)2個(gè)操作數(shù)的指令,目的操作數(shù)在左邊一般格式操

3、作助記符 目的操作數(shù),源操作數(shù);注釋3.1.2 符號(hào)指令的書(shū)寫(xiě)格式2022/8/204 描述符號(hào)Rn(n=07)-當(dāng)前工作寄存器組中的寄存器R0R7之一Ri(i=0,1)-當(dāng)前工作寄存器組中的寄存器R0或R1 -間址寄存器前綴#data -8位立即數(shù)/#data16-16位立即數(shù)direct-片內(nèi)低128個(gè)RAM單元地址及SFR地址addr11-11位目的地址addr16-16位目的地址rel-8位地址偏移量,范圍:128127bit-片內(nèi)RAM位地址、SFR的位地址()-表示 地址單元或寄存器中的內(nèi)容/ -位操作數(shù)的取反操作前綴2022/8/2053.2.1 寄存器尋址尋址方式:尋找(源)操

4、作數(shù)或指令轉(zhuǎn)移地址的方式80C51單片機(jī)有7種尋址方式3.2 80C51的尋址方式操作數(shù)在寄存器中尋址空間:R0R7、A、B(AB形式)和DPTR特點(diǎn):傳送和執(zhí)行速度快【例】若(R0)=30H, 執(zhí)行MOV A,R0后,(A)=30H 2022/8/2063.2.2 直接尋址操作碼后字節(jié)存放的是操作數(shù)的地址尋址空間:片內(nèi)RAM低128字節(jié)SFR(符號(hào)形式)另一類直接尋址是轉(zhuǎn)移目標(biāo)地址的尋址。如:LJMP ADDR16【例】若(50H)=3AH , 執(zhí)行MOV A,50H后,(A)=3AH 2022/8/2073.2.3 寄存器間接尋址寄存器中的內(nèi)容是操作數(shù)的地址尋址空間:片內(nèi)RAM(Ri、SP

5、)片外RAM(Ri、DPTR)【例】若(R0)=30H,(30H)=5AH 執(zhí)行MOV A,R0后,(A)=5AH 片內(nèi):MOV片外:MOVX2022/8/2083.2.4 立即尋址操作數(shù)在指令編碼中尋址空間:ROM對(duì)于MOV DPTR,#2100H指令,立即數(shù)高8位“21H”裝入DPH 【例】執(zhí)行MOV A,#50H 結(jié)果:(A)=50H 2022/8/2093.2.5 變址尋址操作數(shù)地址:基地址+偏移量尋址空間:ROM變址尋址還用于跳轉(zhuǎn)指令,如JMP A+DPTR 【例】(A)0FH (DPTR)=2400H 執(zhí)行MOV A,A+DPTR”后結(jié)果:(A)=88H 2022/8/20103.

6、2.6 相對(duì)尋址用于跳轉(zhuǎn)指令,實(shí)現(xiàn)程序分支Rel常用符號(hào)地址表示,離源地址不要超過(guò)(128127 ) 【例】若rel為75H,PSW.7為1,JC rel存于1000H開(kāi)始的單元。 執(zhí)行JC rel指令后,程序?qū)⑻D(zhuǎn)到1077H單元取指令并執(zhí)行。 2022/8/20113.2.7 位尋址尋址位數(shù)據(jù)尋址空間片內(nèi)RAM位空間SFR位空間【例】位地址00H內(nèi)容為1,MOV C,00H執(zhí)行后,位地址PSW.7的內(nèi)容為1。位尋址方式實(shí)質(zhì)屬于位的直接尋址。 2022/8/20123.3 數(shù)據(jù)傳送類指令(29條)一般不影響標(biāo)志寄存器PSW的狀態(tài)。 傳送類指令有兩大類 一般傳送( MOV ) 特殊傳送,如:

7、MOVC MOVX PUSH、POP XCH、XCHD SWAP 2022/8/20133.3.1 一般傳送指令16位傳送(僅1條)MOV DPTR,#data16; DPTR data16例:執(zhí)行指令 MOV DPTR,#1234H 后 (DPH)=12H,(DPL)=34H。8位傳送通用格式: MOV , ; 2022/8/2014 以A為目的【例3-9】若(R1)= 20H,(20H)= 55H。執(zhí)行指令 MOV A,R1 后,(A)= 55H。2022/8/2015 以Rn為目的【例3-10】執(zhí)行指令 MOV R6,#50H 后,(R6)= 50H 2022/8/2016 以direc

8、t為目的【例3-11】若(R1)=50H,(50H)=18H,執(zhí)行指令 MOV 40H,R1 后,(40H)=18H 2022/8/2017 以Ri為目的【例3-12】若(R1)=30H,(A)=20H,執(zhí)行指令 MOV R1,A 后,(30H)=20H。 2022/8/20183.3.2 特殊傳送指令 以DPTR內(nèi)容為基址讀ROM中常數(shù)表項(xiàng)指令MOVCROM中可以存放程序代碼,還經(jīng)常存放常數(shù)表 MOVC A,A+DPTR;A (A)+(DPTR) 以PC內(nèi)容為基址MOVC A,A+PC ;A (A)+(PC)常數(shù)表存放約束小,稱為遠(yuǎn)程查表指令。占用DPTR 常數(shù)表存放約束大,稱為近程查表指令

9、。不占用DPTR 2022/8/2019 讀片外RAM讀片外RAM及接口單元數(shù)據(jù)的指令MOVX片外RAM中經(jīng)常存放數(shù)據(jù)采集與處理的中間數(shù)據(jù) MOVX A,DPTR ;A (DPTR)MOVX A,Ri ;A (Ri) 寫(xiě)片外RAMMOVX DPTR,A ;(DPTR)AMOVX Ri,A ;(Ri)A注意:用Ri尋址時(shí),高8位地址由P2口提供 2022/8/2020 入棧指令PUSH堆棧操作指令PUSH和POP堆棧是一片存儲(chǔ)區(qū),遵循“后進(jìn)先出”原則,棧頂由SP指示。80C51的堆棧設(shè)在片內(nèi)RAM低端的128個(gè)單元,向上生長(zhǎng)。 PUSH direct ;SP(SP)1,(SP)(direct)

10、出棧指令POPPOP direct ;(direct)(SP),SP (SP)1 注:堆棧用于子程序調(diào)用時(shí)保護(hù)返回地址,或者用于保護(hù)子程序調(diào)用之前的某些重要數(shù)據(jù)(即保護(hù)現(xiàn)場(chǎng)),還可以用于數(shù)據(jù)交換。 2022/8/2021利用堆棧完成40H與50H單元內(nèi)容的交換的示例 MOV SP,#6FH;將堆棧設(shè)在70H以上RAM空間PUSH 40H ;將40H單元的“23H”入棧,之后(SP)=70H PUSH 50H ;將50H單元的“45H”入棧,之后(SP)=71HPOP 40H ;將SP指向的71H單元的內(nèi)容彈到40H單元,之后(SP)=70HPOP 50H ;將SP指向的70H單元的內(nèi)容彈到50

11、H單元,之后(SP)=6FH(a)初始狀態(tài) (b)2條PUSH指令執(zhí)行后 (c)2條POP指令執(zhí)行后2022/8/2022 字節(jié)交換指令XCH數(shù)據(jù)交換指令XCH、XCHD和SWAP數(shù)據(jù)交換屬于同時(shí)進(jìn)行的雙向傳送 【例3-20】若(R0)=80H,(A)=20H。 執(zhí)行指令 XCH A,R0 后,(A)=80H,(R0)=20H。 2022/8/2023 半字節(jié)交換指令XCHD【例3-21】若(R0)30H,(30H)67H, (A)20H。執(zhí)行指令 XCHD A,R0 指令后,(A)27H,(30H)60H。 XCHD是間址操作數(shù)的低半字節(jié)與A的低半字節(jié)互換。SWAP是累加器的高低4位互換【例

12、3-22】若(A)30H,執(zhí)行指令SWAP A后,(A)03H 。 2022/8/20243.4 算數(shù)運(yùn)算類指令(24條)算數(shù)運(yùn)算結(jié)果要影響PSW中標(biāo)志位 CY為1,無(wú)符號(hào)數(shù)(字節(jié))加減發(fā)生進(jìn)位或借位 OV為1,有符號(hào)數(shù)(字節(jié))加減發(fā)生溢出錯(cuò)誤 AC為1,十進(jìn)制數(shù)(BCD碼)加法的結(jié)果應(yīng)調(diào)整 P為1,存于累加器A中操作結(jié)果的“1”的個(gè)數(shù)為奇數(shù) 標(biāo)志位意義標(biāo)志位與相關(guān)指令影響 指令標(biāo)志ADD、ADDC、SUBBDAMULDIV CY00ACOVP2022/8/2025算數(shù)運(yùn)算影響標(biāo)志位示例【例3-23】有2個(gè)參與相加的機(jī)器數(shù),一個(gè)是84H,另一個(gè)是8DH。試分析運(yùn)算過(guò)程及其對(duì)狀態(tài)標(biāo)志的影響。結(jié)果

13、:CY為1;AC為1 ;OV為1 ;P為0 2022/8/20263.4.1 加法不帶進(jìn)位加法【例3-24】若有2個(gè)無(wú)符號(hào)數(shù)存于累加器A和RAM的30H單元,即(A)=84H,(30H)=8DH,試分析執(zhí)行指令 ADD A,30H 后的結(jié)果。由于對(duì)無(wú)符號(hào)數(shù)相加,要考察CY。由上頁(yè)圖可知,CY=1,因此知道運(yùn)算的結(jié)果發(fā)生了進(jìn)位,即實(shí)際值應(yīng)該是100H+11H。所以,編程者應(yīng)確保單字節(jié)無(wú)符號(hào)數(shù)運(yùn)算結(jié)果不要超過(guò)255 2022/8/2027【例3-25】若有2個(gè)有符號(hào)數(shù)存于累加器A和RAM的30H單元,即(A)=84H,(30H)=8DH,試分析執(zhí)行指令 ADD A,30H 后的結(jié)果。 有符號(hào)數(shù)相加

14、,只需考察溢出標(biāo)志OV即可。由上圖可見(jiàn)OV=1,因此可知運(yùn)算的結(jié)果發(fā)生了溢出,這說(shuō)明累加器A中的結(jié)果已經(jīng)不是正確的值了。 編程者應(yīng)確保單字節(jié)有符號(hào)數(shù)運(yùn)算結(jié)果不超過(guò)-128127。否則,就要將數(shù)據(jù)用多字節(jié)表示或在程序運(yùn)行中對(duì)狀態(tài)標(biāo)志進(jìn)行判斷: 無(wú)符號(hào)數(shù)用JNC或JC,有符號(hào)數(shù)要用JNB或JB。 2022/8/2028帶進(jìn)位加法(這組指令方便了多字節(jié)加法的實(shí)現(xiàn)) 加12022/8/2029十進(jìn)制調(diào)整DA A ;調(diào)整A的內(nèi)容為正確的BCD碼 兩個(gè)壓縮的BCD碼按二進(jìn)制相加后,必須經(jīng)過(guò)調(diào)整方能得到正確的和。 當(dāng)A中低4位出現(xiàn)了非BCD碼(10101111)或低4位的進(jìn)位AC=1,則應(yīng)在低4位加6調(diào)整。

15、 當(dāng)A中高4位出現(xiàn)了非BCD碼(10101111)或高4位的進(jìn)位CY=1,則應(yīng)在高4位加6調(diào)整。 執(zhí)行十進(jìn)制調(diào)整指令后,PSW中的CY表示結(jié)果的百位值 2022/8/2030【例3-24】若(A)0110 1001B,表示的BCD碼為 (R2)0101 1000B,表示的BCD碼為 ,執(zhí)行指令: ADD A,R2DA A(A)0010 0111B,即 且(CY)1,即正確的結(jié)果為:127 2022/8/20313.4.2 減法帶借位減法用此組指令完成不帶借位的減法,只需先清CY為0即可 CY為1,表示D7位需借位 AC為1,表示D3位需借位 OV為1,表示“D6有借位D7無(wú)借位”或“D7有借位

16、D6無(wú)借位”2022/8/2032【例3-25】若(A)=C9H,(R2)=54H,(CY)=1,試分析指令SUBB A,R2執(zhí)行后,累加器的內(nèi)容及狀態(tài)標(biāo)志。 (A):1 1 0 0 1 0 0 1(201) (CY): 1(1)1 1 0 0 1 0 0 0(R2): 0 1 0 1 0 1 0 0(84)結(jié)果:0 1 1 1 0 1 0 0(116)即:(A)=74H,(CY)=0,(AC)=0,(OV)=1,(P)=0。分析:數(shù)據(jù)為無(wú)符號(hào)類型。該指令執(zhí)行前CY=1,說(shuō)明此指令不是運(yùn)算的最低字節(jié),即在此指令執(zhí)行之前,一定執(zhí)行過(guò)低字節(jié)的減法并產(chǎn)生了借位。因此,本次相減(201-1-84=11

17、6=74H)結(jié)果為74H。2022/8/2033減1這組指令僅 DEC A 影響P標(biāo)志。其余指令都不影響標(biāo)志位的狀態(tài)。2022/8/20343.4.3 乘法僅有一條乘法指令 MUL AB ;A與B相乘 無(wú)符號(hào) 結(jié)果:B中為積的高8位,A中為積的低8位。 CY總是被清0;OV=1表示積大于FFH 3.4.4 除法僅有一條除法指令 DIV AB ;A除以B 無(wú)符號(hào) 結(jié)果:A中為商的整數(shù)部分,B中為余數(shù) CY總是被清0;OV=1表示除數(shù)為0 2022/8/20353.5 邏輯運(yùn)算與循環(huán)類指令(24條)3.5.1 邏輯與 邏輯:與、或、異或、清0和取反 循環(huán):左、右移,帶進(jìn)位位左、右移【例】(A)=C

18、3H,(R0)=AAH,執(zhí)行指令 ANL A,R0 后,(A)=82H 與操作常用于對(duì)某些不關(guān)心位進(jìn)行“清0”,同時(shí)“保留”另一些關(guān)心位 2022/8/20363.5.2 邏輯或【例】(A)=C3H,(R0)=55H,執(zhí)行指令 ORL A,R0 后,(A)=D7H 或操作常用于對(duì)某些關(guān)心位進(jìn)行“置1”,不關(guān)心位保持不變 2022/8/20373.5.3 邏輯異或【例】(A)=C3H,(R0)=AAH,執(zhí)行指令 XRL A,R0 后,(A)=69H 異或操作常用于對(duì)某些關(guān)心位進(jìn)行“取反”,不關(guān)心位保持不變 2022/8/20383.5.4 邏輯清0和取反3.5.5 累加器循環(huán)移位2022/8/2

19、0393.6 控制轉(zhuǎn)移類指令(17條)3.6.1 無(wú)條件轉(zhuǎn)移短跳轉(zhuǎn)AJMP addr11 ;PC (PC)+ 2,PC100 addr11 2022/8/2040長(zhǎng)跳轉(zhuǎn)LJMP addr16 ;PC addr16 相對(duì)轉(zhuǎn)移SJMP rel ;PC (PC)+ 2,PC (PC)+ rel 目標(biāo)地址rel 對(duì)應(yīng)范圍為 127 128。 2022/8/2041【例】若“NEWADD”為地址1022H,PC的當(dāng)前值為1000H。執(zhí)行指令 SJMP NEWADD 后,程序?qū)⑥D(zhuǎn)向1022H處執(zhí)行(rel=20H= 1022H1000H2)。解析如下:2022/8/2042散轉(zhuǎn)移JMP A+DPTR;PC

20、 (PC)+ 1,PC (A)+(DPTR) 可完成多條判跳指令的功能 【例】功能:當(dāng)(A)=00H時(shí),程序?qū)⑥D(zhuǎn)到 ROUT0處執(zhí)行;當(dāng)(A)=02H時(shí),程序?qū)⑥D(zhuǎn)到 ROUT1處執(zhí)行;。 MOV DPTR,#TABLE JMP A+DPTRTABLE:AJMP ROUT0 AJMP ROUT1 AJMP ROUT2 AJMP ROUT32022/8/20433.6.2 條件轉(zhuǎn)移累加器判0轉(zhuǎn)移比較不等轉(zhuǎn)移2022/8/2044減1不為0轉(zhuǎn)移2022/8/2045【例】有一段程序如下,該程序執(zhí)行后,(A)=10+9+8+7+6+5+4+3+2+1=37H MOV 23H,#0AH CLR ALOOPX:ADD A,23H DJNZ 23H,LOOPX SJMP $2022/8/20463.6.3 調(diào)用與返回調(diào)用 指令執(zhí)行時(shí)將返回地址入棧 SP應(yīng)設(shè)為合適值(默認(rèn)值07H) 2022/8/2047【例3】若(SP)=07H,標(biāo)號(hào)“XADD”表示的實(shí)際地址為0345H,PC的當(dāng)前值為0123H。 執(zhí)行指令 ACALL XADD 后: 返回地址為:(PC)+2=0125H。其低8位的25H壓入堆棧的08H單元,其高8位的01H

溫馨提示

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

評(píng)論

0/150

提交評(píng)論