




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章單片機(jī)的指令系統(tǒng)
§2.1指令系統(tǒng)概述單片機(jī)所能執(zhí)行的指令的集合稱為指令系統(tǒng)。以助記符、符號(hào)地址、標(biāo)號(hào)等書(shū)寫程序的語(yǔ)言稱為匯編語(yǔ)言。2.1.1指令分類〔1〕按功能分〔2〕按字長(zhǎng)分〔3〕按執(zhí)行時(shí)間分2.1.2指令格式[標(biāo)號(hào)]:操作碼[目的操作數(shù)],[源操作數(shù)];[注釋]2.1.3指令字長(zhǎng)和指令周期指令周期是指執(zhí)行一條指令所需要的時(shí)間。
2.1.4符號(hào)約定⑴#data:8位立即數(shù),取值在00H~0FFH之間。⑵#data16:16位立即數(shù),取值在0000H~0FFFFH之間。⑶Rn:工作存放器,n=0~7,即工作存放器組中的一個(gè)工作存放器。⑷Ri:用于存放器間接尋址的工作存放器,i=0或1,即工作存放器R0和R1。⑸direct:8位直接地址,片內(nèi)RAM地址00H~0FFH。⑹addr11:11位目的地址。⑺addr16:16位目的地址。⑻bit:位地址。⑼DPTR:雙數(shù)據(jù)指針存放器⑽Pi:MCS-51單片機(jī)的I/O口,i=0~3。⑾@:存放器間接尋址前綴。⑿rel:8位帶符號(hào)地址偏移量。⒀$:當(dāng)前指令的地址。⒁(X):片內(nèi)RAM單元X中的內(nèi)容。⒂((X)):X中的內(nèi)容所指向單元的內(nèi)容。⒃←:左邊的內(nèi)容被右邊的內(nèi)容所取代?!?.2尋址方式2.2.1直接尋址
直接尋址:指令中直接給出操作數(shù)存儲(chǔ)地址的尋址方式。1.尋址范圍。 〔1〕片內(nèi)RAM的低128單元。 〔2〕特殊功能存放器SFR。2.使用本卷須知 尋址特殊功能存放器SFR時(shí),可以用直接地址,也可以用存放器名。 INCA;A內(nèi)容加1,存放器尋址方式 INCACC ;直接尋址方式 INC0E0H ;直接尋址方式2.2.2立即尋址立即尋址:在指令中直接給出操作數(shù)的尋址方式。
例如:將十進(jìn)制數(shù)200傳送到累加器A中。 MOVA,#0C8H MOV A,#200 MOVA,#11001000B 2.2.3存放器尋址 存放器尋址:操作數(shù)存放于存放器中的尋址方式。 可用于存放器尋址的存放器有: 〔1〕四個(gè)工作存放器組中的工作存放器R0~R7,共32個(gè)工作存放器。 〔2〕特殊功能存放器,如A、B、DPTR、Pi等。2.2.4存放器間接尋址 存放器間接尋址:操作數(shù)的地址存放在存放器中的尋址方式。1.尋址范圍〔1〕片內(nèi)RAM256B地址單元?!?〕對(duì)片外RAM64KB地址單元。 例如:將片內(nèi)RAM55H單元的數(shù)據(jù)50H傳送到累加器A中。指令如下: MOVR0,#55H MOVA,@R0;執(zhí)行結(jié)果〔A〕=50H 例如:將片外RAM0500H單元的數(shù)據(jù)50H傳送到累加器A中。指令如下: MOVDPTR,#0500H MOVXA,@DPTR2.使用本卷須知 〔1〕為區(qū)別存放器尋址方式,作為存放器間接尋址的存放器前面加@。 〔2〕存放器間接尋址方式不能用于對(duì)特殊功能存放器SFR的尋址。 例如:MOVR0,#0F0H; MOVA,@R0〔3〕堆棧操作指令也是間接尋址方式,它以堆棧指針SP作為間接尋址存放器。2.2.5變址尋址 變址尋址:以DPTR或PC中的數(shù)據(jù)為根本地址,以A中的數(shù)據(jù)為地址偏移量,基地址與地址偏移量之和作為被尋址數(shù)據(jù)地址的尋址方式。 查表操作指令為: MOVCA,@A+PC MOVCA,@A+DPTR 例如:將程序存儲(chǔ)器050AH單元中的常數(shù)50H送到累加器A中。指令如下: MOVA,#0AH MOVDPTR,#0500H MOVCA,@A+DPTR 幾點(diǎn)說(shuō)明: 〔1〕變址尋址方式只能對(duì)程序存儲(chǔ)器進(jìn)展尋址,因此只能用于讀取數(shù)據(jù),而不能用于存放數(shù)據(jù),它主要用于查表操作。 〔2〕變址尋址指令只有3條: MOVCA,@A+PC MOVCA,@A+DPTR JMP@A+DPTR2.2.6相對(duì)尋址 相對(duì)尋址:在執(zhí)行程序的過(guò)程中,CPU尋找相對(duì)于當(dāng)前程序計(jì)數(shù)器PC值的下一條指令地址的尋址方式。 例如:當(dāng)程序狀態(tài)字存放器PSW的最高位時(shí),程序轉(zhuǎn)移到標(biāo)號(hào)為L(zhǎng)OOP的語(yǔ)句執(zhí)行。 ORG0000H SJMPMAIN ORG0030H MAIN:SETBC JCLOOP ………… LOOP:MOVA,#30H ……………2.2.7位尋址 位尋址:針對(duì)可位地址的片內(nèi)RAM空間和可位尋址的特殊功能存放器進(jìn)展尋址的方式?!?〕內(nèi)部RAM的位尋址區(qū),共16個(gè)單元的128位,單元地址為20H~7FH,位地址的表示方法可以用直接位地址或單元地址加位的表示方法。 例如:將2FH單元的最高位的值傳送到PSW.7。指令如下: MOVC,7FH MOVC,2FH.7〔2〕特殊功能存放器SFR中可位尋址的存放器共11個(gè),其位地址在指令中有4種表達(dá)方式。 例如:對(duì)程序狀態(tài)字PSW存放器輔助進(jìn)位位AC進(jìn)展操作 ①直接使用位地址:MOVC,0D6H ②位名稱表示法:MOVC,AC ③單元地址加位的表示法:MOVC,0D0H.6 ④專用存放器符號(hào)加位的表示法: MOVC,PSW.6§2.3數(shù)據(jù)傳送類指令2.3.1內(nèi)部數(shù)據(jù)傳送指令MOV<目的操作數(shù)>,<源操作數(shù)>;注釋 〔1〕立即尋址數(shù)據(jù)傳送指令 指令功能:把源操作數(shù)送指定單元或存放器,源操作數(shù)為立即數(shù)。 MOVA,#data MOVRn,#data MOV@Ri,#data MOVdirect,#data〔2〕片內(nèi)RAM單元與累加器A間傳送數(shù)據(jù)指令MOVA,RnMOVRn,AMOVA,@RiMOV@Ri,AMOVA,directMOVdirect,A〔3〕片內(nèi)RAM單元間的數(shù)據(jù)傳送指令 MOVdirect,Rn MOVRn,direct MOVdirect,@Ri MOV@Ri,direct MOVdirect2,direct1例2-1:將P1口讀得的數(shù)據(jù)傳送給P2口。指令如下: 直接尋址: MOV0A0H,90H 通過(guò)累加器A: MOVA,P1 MOVP2,A 直接傳送: MOVP2,P1例如:將R0中的數(shù)傳給R7。指令如下: MOVA,R0 MOVR7,A〔4〕十六位數(shù)據(jù)傳送指令 MOVDPTR,#data16 例2-2:將數(shù)據(jù)1000H傳送到數(shù)據(jù)指針DPTR中。指令如下: MOVDPTR,#1000H 例2-3:設(shè)內(nèi)部RAM中〔30H〕=40H,〔40H〕=10H,P1口作輸入口,〔P1〕=0CAH,程序如下: MOVR0,#30H MOVA,@R0 MOVR1,A MOVB,@R1 MOV@R1,P1 MOVP2,P1 執(zhí)行后的結(jié)果是什么?2.3.2堆棧操作指令 PUSHdirect;SP←(SP)+1,(SP)←(direct) POPdirect;direct←((SP)),SP←(SP)-1例2-4:設(shè)〔30H〕=X,〔40H〕=Y,試用堆棧實(shí)現(xiàn)30H和40H單元中的數(shù)據(jù)交換。 MOVSP,#50H PUSH40H PUSH30H …………… POP40H POP30H2.3.3數(shù)據(jù)交換指令〔1〕整字節(jié)交換指令XCHA,Rn;〔A〕←→〔Rn〕XCHA,@Ri;〔A〕←→〔〔Ri〕〕XCHA,direct;〔A〕←→〔direct〕〔2〕低半字節(jié)交換指令XCHDA,@Ri;(ACC.3~ACC.0)←→((Ri.3)~〔Ri.0))〔3〕累加器高、低半字節(jié)交換指令SWAPA;(ACC.7~ACC.4)←→(ACC.3~ACC.0) 例2-6片內(nèi)50H單元中有一個(gè)十進(jìn)制數(shù)0~9,試編程把它變?yōu)橄鄳?yīng)的ASCII碼并存入50H單元。2.3.4外部數(shù)據(jù)傳送指令存儲(chǔ)器〔1〕用數(shù)據(jù)指針DPTR作地址存放器的存放器間接尋址指令MOVXA,@DPTR;A←((DPTR))MOVX@DPTR,A;(DPTR)←〔A〕〔2〕用Ri作地址存放器的存放器間接尋址指令MOVXA,@Ri ;A←((Ri))MOVX@Ri,A ;(Ri)←〔A〕例2-6:假設(shè)外部RAM中,〔20FFH〕=30H,〔2100H〕=15H。執(zhí)行以下指令后A中的內(nèi)容是多少?MOVDPTR,#20FFHMOVA,@DPTRINCDPTRMOVA,@DPTR 例2-7:把片外RAM的70H單元中的一個(gè)數(shù)X,送到片外RAM的1010H單元。2.3.5查表操作指令MOVCA,@A+DPTR;A←((A〕+(DPTR))MOVCA,@A+PC;A←((A)+(PC))例2-8:累加器A中有一個(gè)0~9范圍內(nèi)的數(shù),用以上查表指令編出能查出該數(shù)平方值的程序。設(shè)平方表表頭地址為TABLE?!?〕采用DPTR作為基址存放器MOVDPTR,#TABELMOVCA,@A+DPTRTABLE:DB0,1,4,9,16 DB25,36,49,64,81〔2〕采用PC作為基址存放器ORG1FFBH1FFBHADDA,#data;修正量1FFDHMOVCA,@A+PC ;查表1FFEHSJMP$2000HDB02001HDB12002HDB4…2021HDB81§2.4算術(shù)運(yùn)算和邏輯指令2.4.1算術(shù)運(yùn)算指令1.加法指令〔1〕不帶進(jìn)位的加法指令 ADDA,Rn ADDA,direct ADDA,@Ri ADDA,#data 例2-9:試分析8051執(zhí)行如下指令后,累加器A和PSW各標(biāo)志位的變化狀況。 MOVA,#0CFH ADDA,#0A5H〔2〕帶進(jìn)位加法指令帶進(jìn)位加法運(yùn)算指令常用于多字節(jié)加法運(yùn)算。ADDCA,Rn; A←(A)+(Rn)+CyADDCA,direct; A←(A)+(direct)+CyADDCA,@Ri; A←(A)+((Ri))+CyADDCA,#data; A←(A)+data+Cy 例2-10:設(shè)〔A〕=0AAH,〔R0〕=55H,Cy=1執(zhí)行如下指令后,PSW的值是多少? ADDCA,R02.帶借位減法指令SUBBA,Rn ;A←(A)+(Rn)-CySUBBA,direct ;A←(A)-(direct)-CySUBBA,@Ri ;A←(A)-((Ri))-CySUBBA,#data ;A←(A)-data-Cy3.加1和減1指令〔1〕加1指令I(lǐng)NCA ;A←〔A〕+1INCRn ;Rn←〔Rn〕+1INCdirect ;direct←〔direct〕+1INC@Ri ;〔Ri〕←〔〔Ri〕〕+1INCDPTR ;DPTR←〔DPTR〕+1〔2〕減1指令減1指令與加1指令使用方法一樣。DECA;A←〔A〕-1DECRn;Rn←〔Rn〕-1DEC@Ri;〔Ri〕←〔〔Ri〕〕-1DECdirect ;direct←〔direct〕-14.乘法指令MULAB〔1〕進(jìn)位標(biāo)志位Cy總是清“0〞?!?〕累加器A中的值影響奇偶標(biāo)志位P?!?〕當(dāng)積大于255〔B中的內(nèi)容不為0〕時(shí),OV=1,否那么OV=0。5.除法指令DIVAB〔1〕對(duì)Cy和P標(biāo)志的影響與乘法時(shí)一樣?!?〕當(dāng)除數(shù)為0時(shí),除法沒(méi)有意義,OV=1,否那么OV=0。6.二~十進(jìn)制調(diào)整指令DAA假設(shè)AC=1或A3~A0>9,那么A←〔A〕+06H;假設(shè)Cy=1或A7~A4>9,那么A←〔A〕+60H。 2.4.2邏輯運(yùn)算指令 1.邏輯“與〞、“或〞、“異或〞指令邏輯 邏輯與指令: ANLA,Rn ;A←〔A〕∧〔Rn〕 ANLA,@Ri ;A←〔A〕∧〔〔Ri〕〕 ANLA,direct ;A←〔A〕∧〔direct〕 ANLA,#data ;A←〔A〕∧#data ANLdirect,A ;direct←〔direct〕∧〔A〕 ANLdirect,#data ;direct←〔direct〕∧#data 例2-12:計(jì)算立即數(shù)#35H和#78H相與的結(jié)果。 邏輯或指令: ORLA,Rn ;A←〔A〕∨〔Rn〕 ORLA,@Ri ;A←〔A〕∨〔〔Ri〕〕 ORLA,direct ;A←〔A〕∨〔direct〕 ORLA,#data ;A←〔A〕∨〔#data〕 ORLdirect,A ;direct←〔A〕∨〔Rn〕 ORLdirect,#data ;direct←(direct)∨(#data) 例2-13:使用AT89S51控制12位模/數(shù)轉(zhuǎn)換器AD574A進(jìn)展模/數(shù)轉(zhuǎn)換,讀取12位數(shù)據(jù)時(shí)要求先讀取高8位,再讀取低4位,而低4位數(shù)據(jù)在存放單元中又處在高4位,讀取的原始數(shù)據(jù)如以下圖所示。設(shè)讀取數(shù)據(jù)的高8位存放在片內(nèi)RAM的31H單元,低8位存放在片內(nèi)RAM的30H單元。請(qǐng)將讀取的數(shù)據(jù)按正確的12位數(shù)據(jù)存放。 邏輯異或指令: 異或指令是按位異或,即當(dāng)參與異或運(yùn)算的兩個(gè)位同為“0〞或“1〞時(shí),結(jié)果為“0〞;當(dāng)參與異或運(yùn)算的兩個(gè)位不同時(shí),結(jié)果為“1〞。 XRLA,Rn ;A←〔A〕〔Rn〕 XRLA,@Ri ;A←〔A〕〔〔Rn〕〕 XRLA,direct ;A←〔A〕〔direct〕 XRLA,#data ;A←〔A〕#data XRLdirect,A ;direct←〔direct〕〔A〕 XRLdirect,#data ;direct←〔direct〕#data 例2-14:計(jì)算立即數(shù)#35H和#78H相異或的結(jié)果。 2.移位指令 RLA ;累加器內(nèi)容循環(huán)左移 RLCA ;累加器內(nèi)容帶Cy循環(huán)左移 RRA ;累加器循環(huán)右移 RRCA ;累加器內(nèi)容帶Cy循環(huán)右移 3.清零、取反指令 CLRA;A←0,累加器A清0,不影響標(biāo)志位 CPLA;A←〔/A〕,累加器A的內(nèi)容按位取反,不影響標(biāo)志位§2.5控制轉(zhuǎn)移和位操作指令 1.無(wú)條件轉(zhuǎn)移指令 〔1〕長(zhǎng)轉(zhuǎn)移指令 LJMPaddr16;PC←addr16 〔2〕絕對(duì)轉(zhuǎn)移指令 AJMPaddr11;PC←addr11 〔3〕短轉(zhuǎn)移指令 SJMPrel;PC←〔PC〕+2 ;PC←〔PC〕+rel 〔4〕間接轉(zhuǎn)移指令 JMP@A+DPTR;PC←〔A〕+〔DPTR〕 2.條件轉(zhuǎn)移指令 〔1〕累加器判零轉(zhuǎn)移指令 JZrel ;累加器A為0轉(zhuǎn)移 JNZrel ;累加器A不為0轉(zhuǎn)移
〔2〕比較轉(zhuǎn)移指令 CJNE<目的操作數(shù)>,<源操作數(shù)>,rel CJNEA,#data,rel CJNEA,direct,rel CJNE@Ri,#data,rel CJNERn,#data,rel 如果目的操作數(shù)小于源操作數(shù),那么Cy置1,否那么Cy清0。本指令執(zhí)行后不影響任何操作數(shù)。 〔3〕減1條件轉(zhuǎn)移指令 DJNZRn,rel ;〔Rn〕←〔Rn〕-1 ;假設(shè)〔Rn〕=0,那么PC←〔PC〕+2 ;假設(shè)〔Rn〕≠0,那么PC←〔PC〕+2+rel DJNZdirect,rel;direct←〔direct〕-1 ;假設(shè)〔direct〕=0,那么PC←〔PC〕+3 ;假設(shè)〔direct〕≠0,那么PC←〔PC〕+3+rel 例2-16:設(shè)R0、R1、R2的內(nèi)容分別為01H、0AH、20H,執(zhí)行以下程序: L1:…… L2:…… L3:…… DJNZR0,L1 DJNZR1,L2 DJNZR2,L3 3.子程序調(diào)用和返回指令 〔1〕調(diào)用指令 ①長(zhǎng)調(diào)用指令 LCALLaddr16 ;PC←(PC)+3 ;SP←(SP)+1,(SP)←PC7~PC0 ;SP←(SP)+1,(SP)←PC15~PC8 ;PC←addr16
②絕對(duì)調(diào)用指令
ACALLaddr11 ;PC←(PC)+2 ;SP←(SP)+1,(SP)←PC7~PC0 ;SP←(SP)+1,(SP)←PC15~PC8 ;PC10~0←addr11〔2〕子程序返回指令RET RET ;PC15~PC8←〔SP〕 ;SP←〔SP〕-1 ;PC7~PC0←〔SP〕 ;SP←〔SP〕-1〔3〕中斷報(bào)務(wù)程序返回指令 RETI ;PC15~PC8←〔SP〕 ;SP←〔SP〕-1 ;PC7
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 大棚櫻桃樹(shù)保溫管理制度
- 玻尿酸考試題及答案
- 表演即興考試題及答案
- 保溫知識(shí)考試題及答案
- 白酒大曲考試題及答案
- pmi監(jiān)考試題及答案
- cvc導(dǎo)管考試題及答案
- c 駕考試題及答案
- 中國(guó)古代出入境管理制度
- 施工現(xiàn)場(chǎng)消防管理制度
- 專項(xiàng)8 非連續(xù)性文本閱讀- 2022-2023學(xué)年五年級(jí)語(yǔ)文下冊(cè)期末專項(xiàng)練習(xí)
- 安全生產(chǎn)知識(shí)應(yīng)知應(yīng)會(huì)
- 質(zhì) 量 管 理 體 系 認(rèn) 證審核報(bào)告(模板)
- 腫瘤科新護(hù)士入科培訓(xùn)和護(hù)理常規(guī)
- 體育器材采購(gòu)設(shè)備清單
- 第4章 頜位(雙語(yǔ))
- 二手車鑒定評(píng)估報(bào)告書(shū)最終
- 電影場(chǎng)記表(雙機(jī)位)
- 塔吊負(fù)荷試驗(yàn)方案
- 電子商務(wù)專業(yè)“產(chǎn)教融合、五雙并行”人才培養(yǎng) 模式的實(shí)踐研究課題論文開(kāi)題結(jié)題中期研究報(bào)告(經(jīng)驗(yàn)交流)
- 購(gòu)買社區(qū)基本公共養(yǎng)老、青少年活動(dòng)服務(wù)實(shí)施方案
評(píng)論
0/150
提交評(píng)論