版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章指令系統(tǒng)3.1概述3.2尋址方式3.3指令系統(tǒng)3.4匯編語言程序設(shè)計§3.1概述指令:是CPU根據(jù)人的意圖來執(zhí)行某種操作的命令。程序設(shè)計語言:是實現(xiàn)人機(jī)交換信息的基本工具,分為機(jī)器語言、匯編語言和高級語言。機(jī)器語言:用二進(jìn)制編碼表示每條指令,是計算機(jī)能直接識別和執(zhí)行的語言。匯編語言:是用助記符、符號和數(shù)字等來表示指令的程序設(shè)計語言。它與機(jī)器語言指令是一一對應(yīng)的。§3.1.2指令格式89C51匯編語言指令格式[標(biāo)號]:操作碼[目的操作數(shù)][,源操作數(shù)][;注釋]
MOVA,#34H;將數(shù)34h送累加器A符號注釋Rn(n=0~7):當(dāng)前選中的工作寄存器組R0~R7。Ri(I=0,1):作為地址指針的兩個工作寄存器R0,R1。#data8:8位立即數(shù)。#data16:16位立即數(shù)。direct:8位片內(nèi)RAM單元的直接地址。addr11:11位目的地址,用于ACALL和AJMP指令中。addr16:16位目的地址。用于LCALL和LJMP指令中。符號注釋rel:補(bǔ)碼表示的8位地址偏移量。范圍:-128~+127D。bit:片內(nèi)RAM或SFR的直接尋址位地址。@:間接寄存器的符號。/:位操作指令中對該位先取反再參與操作,不影響原值。(×):×中的內(nèi)容。((×)):×指出的地址單元中的內(nèi)容。→:指令操作流程方向?!?.2尋址方式什么是尋址方式:如何找到存放操作數(shù)的地址,把操作數(shù)提取出來的方法。1、7種尋址方式:2、尋址空間及符號注釋:1)立即數(shù)尋址立即數(shù)尋址:指令操作碼后面緊跟的是一字節(jié)或兩字節(jié)操作數(shù),用“#”號表示,以區(qū)別直接地址。例如:MOVA,3AH;(3AH)→AMOVA,#3AH;3AH→AMOVDPTR,#2000H;2000H→DPTR
2)直接尋址直接尋址方式:在指令中直接給出操作數(shù)所在存儲單元的地址。指令中操作數(shù)部分是操作數(shù)所在地址。直接尋址方式可訪問片內(nèi)RAM的128個單元以及所有的SFR。對于SFR,既可以使用它們的地址,也可以使用它們的名字。例如:MOVA,3AH;(3AH)→AMOVA,P1;(P1口)→A
或:MOVA,90H;90H是P1口的地址3)寄存器尋址寄存器尋址:由指令指出寄存器組R0~R7中的某一個或其他寄存器(A,B,DPTR等)的內(nèi)容作為操作數(shù)。例如:MOVA,R0;(R0)→AMOVP1,A;(A)→P1口
ADDA,R0;(A)+(R0)→A4)寄存器間接尋址
寄存器間接尋址:操作數(shù)的地址事先存放在某個寄存器中,寄存器間接尋址是把指定寄存器的內(nèi)容作為地址,由該地址所指定的單元內(nèi)容作為操作數(shù)。規(guī)定R0或R1為間接尋址寄存器,它可尋址內(nèi)部地址RAM低位的128B單元內(nèi)容。還可采用DPTR作為間接尋址寄存器,尋址外部數(shù)據(jù)存儲器的64KB空間。例如例如:將片內(nèi)RAM65H單元內(nèi)容47H送A,可執(zhí)行指令“MOVA,@R0”。其中R0內(nèi)容為65H。如圖所示:65H47HR0A47H數(shù)據(jù)存儲器地址┋┋65H①②以指令中所指定的R0內(nèi)容(65H)為指針將片內(nèi)RAM65H單元內(nèi)容47H送A5)變址尋址(基址寄存器+變址寄存器間接尋址)變址尋址:以某個寄存器的內(nèi)容為基地址,在這個基地址的基礎(chǔ)上加上地址偏移量形成真正的操作數(shù)地址。采用DPTR或PC為基址寄存器,A的內(nèi)容為地址偏移量。變址尋址只能訪問程序存儲器,訪問范圍為64KB。例如例如:MOVCA,@A+DPTR;((A)+(DPTR))→A如圖所示1EH0302HROMDPTRAA02F1H11H1EH+①②DPTR內(nèi)容與A的內(nèi)容之和為程序存儲器地址程序存儲器內(nèi)容送A6)相對尋址
相對尋址:是以當(dāng)前的PC值加上指令中規(guī)定的偏移量rel而形成實際的轉(zhuǎn)移地址。相對尋址只出現(xiàn)在相對轉(zhuǎn)移指令中。當(dāng)前的PC值是指執(zhí)行完相對指令后的PC值;相對轉(zhuǎn)移指令操作碼所在地址稱為源地址;轉(zhuǎn)移后的地址稱為目的地址。目的地址=源地址+相對轉(zhuǎn)移指令字節(jié)數(shù)+relrel為補(bǔ)碼表示的有符號數(shù)。7)位尋址位尋址:采用位尋址方式的指令的操作數(shù)是8位二進(jìn)制數(shù)中的某一位,指令中給出的是位地址。位地址在指令中用bit表示。例如:CLRbit;位地址的兩種表示方法:直接使用位地址,如D3H;直接用寄存器名字加位數(shù),如PSW.3。位尋址區(qū)域:片內(nèi)RAM的20H-2FH的16個單元中的128位;字節(jié)地址能被8整除的SFR。概述:單片機(jī)指令系統(tǒng)由111條指令組成。其中,單字節(jié)指令49條,雙字節(jié)指令45條,三字節(jié)指令17條。從指令執(zhí)行時間看,單周期指令64條,雙周期45條,只有乘、除指令為4個周期。§3.3指令系統(tǒng)指令系統(tǒng)可分為五大類[1]數(shù)據(jù)傳送指令:29條[2]算術(shù)運(yùn)算指令:24條[3]邏輯運(yùn)算及移位指令:24條[4]控制轉(zhuǎn)移指令:17條[5]位操作指令(布爾操作):17條§3.3.2數(shù)據(jù)傳送指令1.片內(nèi)數(shù)據(jù)存儲器傳送MOV2.片外數(shù)據(jù)存儲器傳送MOVX3.程序存儲器傳送MOVC4.累加器交換XCH、XCHD、SWAP5.堆棧操作PUSH、POPMOV類傳送指令主要包括了立即數(shù)傳送指令、內(nèi)部RAM單元之間的數(shù)據(jù)傳送指令、累加器數(shù)據(jù)傳送指令。MOV的匯編格式如下:
MOV<目的操作數(shù)>,<源操作數(shù)>
1.MOV(Move)類傳送指令(16條)
(1)源操作數(shù)為立即尋址方式的傳送指令:源操作數(shù)為立即尋址方式的傳送指令,簡稱立即數(shù)傳送指令。
MOVA,#data;A←dataMOVdirect,#data;(direct)←dataMOVRn,#data;Rn←dataMOV@Ri,#data;(Ri)←dataMOVDPTR,#data16
【例3-1】將立即數(shù)A3H送入累加器A。MOVA,#0A3H【例3-2】將立即數(shù)76H送入片內(nèi)30H,可執(zhí)行以下指令。有以下兩種傳送方式:MOVA,#76HMOVR0,#30HMOV@R0,A或直接執(zhí)行MOV30H,#76H
(2)內(nèi)部RAM單元之間的數(shù)據(jù)傳送指令:內(nèi)部RAM單元之間數(shù)據(jù)傳送指令有兩直接地址之間、直接地址與工作寄存器之間、工作寄存器與直接地址之間、直接地址與間接地址寄存器之間、間接地址寄存器與直接地址之間的傳送指令。MOVdirect2,direct1;(direct2)←(direct1)MOVdirect,Rn;(direct)←RnMOVRn,direct;Rn←(direct)MOVdirect,@Ri;(direct)←(Ri)MOV@Ri,direct;(Ri)←(direct)【例3-3】將50H單元的數(shù)據(jù)直接送入30H,R1內(nèi)容指定的內(nèi)部RAM單元的內(nèi)容送入PSW寄存器,片內(nèi)RAM60H單元的內(nèi)容送入R4中,用以下指令完成。MOV30H,50HMOVD0H,@R1;D0H為PSW的單元地址MOVR4,60H【例3-4】將R2中的內(nèi)容送入P0口MOVP0,R2也可使用MOV80H,R2(3)累加器的數(shù)據(jù)傳送指令。與累加器有關(guān)的數(shù)據(jù)傳送指令有:累加器與工作寄存器之間,累加器與直接地址之間、累加器與間接地址寄存器之間的傳送MOVA,Rn;A←RnMOVRn,A;Rn←AMOVA,direct;A←(direct)MOVdirect,A;(direct)←AMOVA,@Ri;A←(Ri)MOV@Ri,A;(Ri)←A【例3-5】將R6的內(nèi)容送入累加器AMOVA,R6【例3-6】將R4清零,可使用以下指令完成MOVA,#00HMOVR4,A(1)使用DPTR進(jìn)行間接尋址。與DPTR間接尋址有關(guān)的指令有以下2條:
MOVXA,@DPTR;A←(DPTR)MOVX@DPTR,A;(DPTR)←A
外部RAM單元只能使用間接尋址方法,分別以DPTR和Ri作為間接地址寄存器。因此MOVX傳送類有兩組不同的間接尋址指令。2.MOVX(MoveExternal)類傳送指令(4條)【例3-7】設(shè)某輸出設(shè)備口地址為8000H,將片內(nèi)RAM30H單元中的數(shù)據(jù)輸出至該端口,則可用以下指令完成:MOVDPTR,#8000HMOVA,30HMOVC@DPTR,A
【例3-8】將片外RAM3000H單元中的內(nèi)容送至4000H單元中去,用以下指令完成:MOVDPTR,#3000HMOVXA,@DPTRMOVDPTR,#4000HMOVX@DPTR,A(2)使用Ri進(jìn)行間接尋址。與Ri間接尋址有關(guān)的指令有以下2條:
MOVXA,@Ri;A←(Ri)MOVX@Ri,A;(Ri)←A例3-9】將片外RAM(8FH)中的內(nèi)容0AH,傳送至寄存器R0中,而將R1中的值04H寫入片外RAM(90H),執(zhí)行以下指令完成。MOVR1,#8FH;指向片外8FH單元MOVXA,@R1;將片外8FH單元內(nèi)容暫存AMOVR0,A;暫存結(jié)果送入R0中MOVA,R1;取R1中的內(nèi)容MOVR1,#90H;指向片外90H單元MOVX@R1,A;04H送入片外90H單元
MOVCA,@A+DPTR;A←((A)+(DPTR))MOVCA,@A+PC;A←((A)+(PC))
MOVC類指令是對程序存儲器進(jìn)行數(shù)據(jù)傳送,因此又稱為程序存儲器傳送指令,由于MOVC類指令通常用于查表,所以也稱為查表指令,其表格放在程序存儲器中。
3.MOVC(MoveCode)類傳送指令(2條)【例3-10】在程序存儲器中,從8000H開始存有A~Z的ASCII碼,將D的ASCII碼取出。8000H:41H;(41H為“A”的ASCII碼,存放在8000H單元中)8001H:42H;(42H為“B”的ASCII碼,存放在8001H單元中)8002H:43H;(43H為“C”的ASCII碼,存放在8002H單元中)8003H:44H;(44H為“D”的ASCII碼,存放在8003H單元中)8004H:45H;┋┋設(shè)完成此操作的程序存放在4000H開始存儲器中。執(zhí)行以下程序:4000H:MOVA,#03H;A←03H偏移量4002H:MOVDPTR,#8000H;DPTR←8000H4005H:MOVCA,@A+DPTR;取出D的ASCII碼送累加器A執(zhí)行結(jié)果:(A)=44H(PC)=4006H
(1)XCH(Exchange)全字節(jié)交換
XCHA,Rn;A←→RnXCHA,direct;A←→(direct)XCHA,@Ri;A←→(Ri)
(2)XCHD低半字節(jié)交換(Exchangelow-orderDigit)
XCHDA,@Ri;A0-3←→(Ri)0-3
累加器交換指令XCH、XCHD、SWAP,主要是在片內(nèi)RAM和累加器A之間進(jìn)行數(shù)據(jù)的交換。
(3)SWAP高4位與低4位交換
SWAPA;A7~4←→A3~0
4.XCH、XCHD、SWAP類指令(5條)【例3-11】將片內(nèi)RAM中30H、40H單元的內(nèi)容互換,并將互換后的40H單元內(nèi)容存入R0指示的片內(nèi)RAM單元。
MOVA,30H;30H單元的內(nèi)容送A中
XCHA,40H;30H單元與40H單元中的內(nèi)容互換
MOV@R0,A;互換后的結(jié)果存入R0指示的單元中
(1)PUSH入棧操作(Pushdirectbyteontostack)
PUSHdirect;SP←SP+1,(SP)←(direct)
(2)POP出棧操作(Popdirectfromstack)
POPdirect;SP←SP-1,(direct)←(SP)
5.PUSH、POP類指令(2條)
【例3-12】設(shè)DPTR指向了5000H單元,將其壓入堆棧中,然后彈出到片內(nèi)RAM的50H、51H單元中,用如下指令完成:
MOVDPTR,#5000HPUSHDPLPUSHDPHPOP51H;DPH彈出到51H單元
POP50H;DPL彈出到50H單元§3.3.3算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令用到的助記符有以下3大類加法指令:ADD、ADDC、INC、DA減法指令:SUBB、DEC乘除指令:MUL、DIV算術(shù)運(yùn)算類指令(24條)
——加法指令(8條)
ADDA,Rndirect@Ri#data操作:將兩個操作數(shù)相加,再把和送到A中。其結(jié)果必然影響:進(jìn)位位C,輔助進(jìn)位位AC,溢出位OV,奇偶位P,零標(biāo)志Z。R0=12H,(12H)=78H,A=9AH,C=1執(zhí)行ADDA,@R0后結(jié)果?
10011010+01111000
.....00010010
10011010+01111000+C
.....00010011CC說明:本組指令的功能是同時把源操作數(shù)所指出的內(nèi)容和進(jìn)位標(biāo)志未CY都加到累加器A中,結(jié)果存放到A中,其余的功能和上面的ADD指令相同。本組指令常用于多字節(jié)加法。
【例3-13】有符號數(shù)相加,執(zhí)行以下程序,說明PSW有關(guān)標(biāo)志位的內(nèi)容。
MOVA,#7AHMOVR0,#65HADDA,R0
01111010A
+)01100101
(R0)
11011111
執(zhí)行結(jié)果:OV=D6CY⊕D7CY=1⊕0=1;說明和產(chǎn)生溢出;PSW的CY=0AC=0OV=1
CLRCMOVA,R4ADDA,R6MOVR4,AMOVA,R5ADDCA,R7MOVR5,A
程序執(zhí)行時先計算低字節(jié)之和:
11111111FFH
+)10101011ABH110101010低字節(jié)之和=AAH,CY=1,AC=1,OV=0,然后再計算高字節(jié)之和:
1000010185H0100010145H
+)1CY11001011高字節(jié)之和=CBH,CY=0,AC=0,OV=0程序執(zhí)行完后的最后結(jié)果:R5R4=CBAAH,CY=0,AC=0,OV=0
【例3-14】在R5R4、R7R6中有兩個16位的無符號數(shù),其值分別為85FFH與45ABH,計算兩個數(shù)的和,結(jié)果仍存于R5R4中,并說明PSW中相關(guān)位的內(nèi)容
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中考道德與法治一輪復(fù)習(xí)之民主與法治
- 美容行業(yè)美發(fā)技術(shù)培訓(xùn)心得
- 教研工作推動學(xué)術(shù)進(jìn)步
- 電力系統(tǒng)通信(完整版)資料
- 時尚行業(yè)美工工作總結(jié)
- 電子行業(yè)電子設(shè)備維護(hù)培訓(xùn)總結(jié)
- 2024年管理部門安全管理制度
- 2025屆【首發(fā)】河北省衡水市棗強(qiáng)縣中考試題猜想生物試卷含解析
- 2025關(guān)于押運(yùn)服務(wù)合同書的范本
- 2024年度天津市公共營養(yǎng)師之二級營養(yǎng)師通關(guān)題庫(附帶答案)
- 帝國主義:資本主義發(fā)展的最高最后階段
- 江蘇省蘇州市2023-2024學(xué)年高一上學(xué)期期末學(xué)業(yè)質(zhì)量陽光指標(biāo)調(diào)研生物試題
- 銀行催收外包服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 2024年廣西北部灣港集團(tuán)招聘筆試參考題庫含答案解析
- 建設(shè)工程項目工程項目三方合署辦公管理標(biāo)準(zhǔn)
- 工程造價畢業(yè)設(shè)計總結(jié)3000字(5篇)
- 鼓膜置管方法
- 國家開放大學(xué)電大??啤缎谭▽W(xué)(1)》題庫及答案
- 行業(yè)代碼大全
- 反電信詐騙ppt-防范電信詐騙的ppt
- 樁基檢測的環(huán)保措施
評論
0/150
提交評論