




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第2章章 單片機(jī)的指令系統(tǒng)單片機(jī)的指令系統(tǒng)2.1 指令系統(tǒng)概述指令系統(tǒng)概述n單片機(jī)所能執(zhí)行的指令的集合稱為指令系統(tǒng)。 n以助記符、符號(hào)地址、標(biāo)號(hào)等書(shū)寫程序的語(yǔ)言稱為匯編語(yǔ)言。2.1.1 指令分類指令分類n (1) 按功能分n(2) 按字長(zhǎng)分n(3) 按執(zhí)行時(shí)間分2.1.2 指令格式指令格式標(biāo)號(hào)標(biāo)號(hào):操作碼:操作碼 目的操作數(shù),源操作數(shù);注釋目的操作數(shù),源操作數(shù);注釋2.1.3 指令字長(zhǎng)和指令周期指令字長(zhǎng)和指令周期指令周期是指執(zhí)行一條指令所需要的時(shí)間指令周期是指執(zhí)行一條指令所需要的時(shí)間。 2.1.4 符號(hào)約定符號(hào)約定n #data:8位立即數(shù),取值在00h0ffh之間。n #data16:16
2、位立即數(shù),取值在0000h0ffffh之間。n rn:工作寄存器,n=07,即工作寄存器組中的一個(gè)工作寄存器。n ri:用于寄存器間接尋址的工作寄存器,i=0或1,即工作寄存器r0和r1。n direct:8位直接地址,片內(nèi)ram地址00h0ffh。n addr11:11位目的地址。n addr16:16位目的地址。n bit:位地址。n dptr:雙數(shù)據(jù)指針寄存器n pi:mcs-51單片機(jī)的i/o口,i=03。n :寄存器間接尋址前綴。n rel:8位帶符號(hào)地址偏移量。n $:當(dāng)前指令的地址。n (x):片內(nèi)ram單元x中的內(nèi)容。n (x):x中的內(nèi)容所指向單元的內(nèi)容。n :左邊的內(nèi)容被右
3、邊的內(nèi)容所取代。2.2 尋址方式尋址方式2.2.1 直接尋址直接尋址n直接尋址:直接尋址:指令中直接給出操作數(shù)存儲(chǔ)地址的尋址方式。n1. 尋址范圍。尋址范圍。 (1)片內(nèi)ram的低128單元。 (2)特殊功能寄存器 sfr。 n2. 使用注意事項(xiàng)使用注意事項(xiàng)尋址特殊功能寄存器 sfr 時(shí),可以用直接地址,也可以用寄存器名。inc a ;a內(nèi)容加1,寄存器尋址方式inc acc ;直接尋址方式inc 0e0h ;直接尋址方式2.2.2 立即尋址立即尋址n立即尋址:立即尋址:在指令中直接給出操作數(shù)的尋址方式在指令中直接給出操作數(shù)的尋址方式。例如:將十進(jìn)制數(shù)200傳送到累加器a中。mov a,#0c
4、8h mov a,#200mov a,#11001000b2.2.3 寄存器尋址寄存器尋址寄存器尋址:寄存器尋址:操作數(shù)存放于寄存器中的尋址方式??捎糜诩拇嫫鲗ぶ返募拇嫫饔校海?)四個(gè)工作寄存器組中的工作寄存器 r0r7,共32個(gè)工作寄存器。(2)特殊功能寄存器,如 a、b、dptr 、pi等。 2.2.4 寄存器間接尋址寄存器間接尋址寄存器間接尋址:寄存器間接尋址:操作數(shù)的地址存放在寄存器中的尋址方式。1. 尋址范圍尋址范圍(1)片內(nèi)ram 256b地址單元 。(2)對(duì)片外ram 64kb地址單元。例如:將片內(nèi)ram 55h單元的數(shù)據(jù)50h傳送到累加器a中。指令如下:mov r0,#55hm
5、ov a, r0 ;執(zhí)行結(jié)果(a)=50h例如:將片外ram 0500h單元的數(shù)據(jù)50h傳送到累加器a中。指令如下:mov dptr,#0500hmovx a,dptr2. 使用注意事項(xiàng)使用注意事項(xiàng)(1)為區(qū)別寄存器尋址方式,作為寄存器間接尋址的寄存器前面加 。(2)寄存器間接尋址方式不能用于對(duì)特殊功能寄存器sfr的尋址。例如:mov r0,#0f0h; mov a, r0(3)堆棧操作指令也是間接尋址方式,它以堆棧指針sp 作為間接尋址寄存器。2.2.5 變址尋址變址尋址變址尋址:變址尋址:以dptr或pc中的數(shù)據(jù)為基本地址,以a中的數(shù)據(jù)為地址偏移量,基地址與地址偏移量之和作為被尋址數(shù)據(jù)地址
6、的尋址方式。查表操作指令為:movc a,a+pcmovc a,a+dptr例如:將程序存儲(chǔ)器050ah單元中的常數(shù)50h送到累加器a中。指令如下:mov a,#0ahmov dptr,#0500hmovc a, a +dptr幾點(diǎn)說(shuō)明:(1)變址尋址方式只能對(duì)程序存儲(chǔ)器進(jìn)行尋址,因此只能用于讀取數(shù)據(jù),而不能用于存放數(shù)據(jù),它主要用于查表操作。(2)變址尋址指令只有3條:movc a, a +pcmovc a, a +dptrjmp a +dptr2.2.6 相對(duì)尋址相對(duì)尋址相對(duì)尋址:相對(duì)尋址:在執(zhí)行程序的過(guò)程中,cpu尋找相對(duì)于當(dāng)前程序計(jì)數(shù)器pc值的下一條指令地址的尋址方式。例如:當(dāng)程序狀態(tài)字
7、寄存器psw的最高位時(shí),程序轉(zhuǎn)移到標(biāo)號(hào)為loop的語(yǔ)句執(zhí)行。org 0000hsjmp mainorg 0030hmain:setb c jc loop loop:mov a,#30h 2.2.7 位尋址位尋址位尋址:位尋址:針對(duì)可位地址的片內(nèi)ram空間和可位尋址的特殊功能寄存器進(jìn)行尋址的方式。(1)內(nèi)部 ram 的位尋址區(qū),共16個(gè)單元的128位,單元地址為20h7fh,位地址的表示方法可以用直接位地址或單元地址加位的表示方法。例如:將2fh單元的最高位的值傳送到psw.7。指令如下:mov c,7fhmov c,2fh.7(2)特殊功能寄存器sfr中可位尋址的寄存器共11個(gè),其位地址在指令
8、中有4 種表達(dá)方式。例如:對(duì)程序狀態(tài)字psw寄存器輔助進(jìn)位位ac進(jìn)行操作 直接使用位地址:mov c,0d6h 位名稱表示法:mov c, ac 單元地址加位的表示法:mov c,0d0h.6 專用寄存器符號(hào)加位的表示法:mov c, psw .62.3 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令2.3.1 內(nèi)部數(shù)據(jù)傳送指令內(nèi)部數(shù)據(jù)傳送指令mov , ;注釋注釋(1)立即尋址數(shù)據(jù)傳送指令)立即尋址數(shù)據(jù)傳送指令 指令功能:把源操作數(shù)送指定單元或寄存指令功能:把源操作數(shù)送指定單元或寄存器,源操作數(shù)為立即數(shù)。器,源操作數(shù)為立即數(shù)。mov a, #datamov rn, #datamov ri, #data mov
9、 direct, #data(2)片內(nèi))片內(nèi)ram單元與累加器單元與累加器a間傳送數(shù)據(jù)指令間傳送數(shù)據(jù)指令 mov a,rn mov rn,a mov a, ri mov ri, a mov a,direct mov direct,a(3)片內(nèi))片內(nèi)ram單元間的數(shù)據(jù)傳送指令單元間的數(shù)據(jù)傳送指令mov direct, rnmov rn, direct mov direct, ri mov ri, direct mov direct2, direct1例2-1:將p1口讀得的數(shù)據(jù)傳送給p2口。指令如下:直接尋址:mov 0a0h,90h通過(guò)累加器a:mov a,p1mov p2,a直接傳送:mov
10、 p2,p1例如:將r0中的數(shù)傳給r7。指令如下:mov a,r0mov r7,a(4)十六位數(shù)據(jù)傳送指令)十六位數(shù)據(jù)傳送指令mov dptr,#data16例2-2:將數(shù)據(jù)1000h傳送到數(shù)據(jù)指針dptr中。指令如下:mov dptr,#1000h例2-3:設(shè)內(nèi)部 ram 中(30h)=40h,(40h)=10h,p1口作輸入口,(p1)=0cah,程序如下:mov r0, #30hmov a, r0 mov r1, amov b, r1 mov r1,p1mov p2, p1執(zhí)行后的結(jié)果是什么? 2.3.2 堆棧操作指令堆棧操作指令push direct ;sp(sp)+1,(sp)(di
11、rect)pop direct ;direct(sp),sp(sp)-1例2-4:設(shè)(30h)=x,(40h)=y,試用堆棧實(shí)現(xiàn) 30h 和 40h 單元中的數(shù)據(jù)交換。mov sp, #50hpush 40hpush 30h pop 40hpop 30h2.3.3 數(shù)據(jù)交換指令數(shù)據(jù)交換指令(1)整字節(jié)交換指令)整字節(jié)交換指令xch a, rn ;(;(a)(rn)xch a, ri ;(;(a)(ri)xch a, direct ;(;(a)(direct)(2)低半字節(jié)交換指令)低半字節(jié)交換指令xchd a, ri ;(acc.3acc.0)(ri.3)(ri.0)(3)累加器高、低半字節(jié)交
12、換指令)累加器高、低半字節(jié)交換指令swap a ;(acc.7acc.4)(acc.3acc.0) 例2-6 已知片內(nèi)50h單元中有一個(gè)十進(jìn)制數(shù)09,試編程把它變?yōu)橄鄳?yīng)的ascii碼并存入50h單元。 2.3.4 外部數(shù)據(jù)傳送指令存儲(chǔ)器 (1)用數(shù)據(jù)指針)用數(shù)據(jù)指針dptr作地址寄存器的寄存器作地址寄存器的寄存器間接尋址指令間接尋址指令movx a, dptr ;a(dptr)movx dptr, a ;(dptr)(a)(2)用)用ri作地址寄存器的寄存器間接尋址指令作地址寄存器的寄存器間接尋址指令movx a, ri ;a(ri)movx ri, a ;(ri)(a) 例2-6:若外部ra
13、m中,(20ffh)=30h,(2100h)=15h。執(zhí)行下列指令后a中的內(nèi)容是多少?mov dptr, #20ffhmov a,dptrinc dptrmov a,dptr例2-7:把片外ram的70h單元中的一個(gè)數(shù)x,送到片外ram的1010h單元。 2.3.5 查表操作指令查表操作指令movc a,a +dptr ; a(a)+(dptr)movc a, a +pc ; a(a)+(pc)例2-8:已知累加器a中有一個(gè)09范圍內(nèi)的數(shù),用以上查表指令編出能查出該數(shù)平方值的程序。設(shè)平方表表頭地址為table。(1)采用dptr作為基址寄存器mov dptr, #tabelmovc a, a
14、+dptrtable:db 0, 1, 4, 9,16db 25,36,49,64,81 (2)采用pc作為基址寄存器org 1ffbh1ffbh add a,#data ;修正量1ffdh movc a,a +pc ;查表1ffeh sjmp $2000h db 02001h db 12002h db 42009h db 812.4 算術(shù)運(yùn)算和邏輯指令算術(shù)運(yùn)算和邏輯指令2.4.1 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令1. 加法指令加法指令(1)不帶進(jìn)位的加法指令)不帶進(jìn)位的加法指令add a, rnadd a, directadd a, riadd a, #data例2-9:試分析8051執(zhí)行如下指令后
15、,累加器 a 和 psw 各標(biāo)志位的變化狀況。mov a, #0cfhadd a, #0a5h(2)帶進(jìn)位加法指令)帶進(jìn)位加法指令 帶進(jìn)位加法運(yùn)算指令常用于多字節(jié)加法運(yùn)算。addc a, rn ;a(a)+(rn)+ cyaddc a, direct ;a(a)+(direct)+ cyaddc a, ri ;a(a)+(ri)+ cyaddc a, #data ;a(a)+data+cy例2-10:設(shè)(a)=0aah,(r0)=55h,cy=1 執(zhí)行如下指令后,psw的值是多少? addc a,r02. 帶借位減法指令帶借位減法指令subb a, rn ;a(a)+(rn)- cysubb
16、a, direct ;a(a)-(direct)-cysubb a, ri ;a(a)-(ri)-cysubb a, #data ;a(a)-data-cy3. 加加1和減和減1指令指令(1)加)加1指令指令inc a ; a(a)+1inc rn ;rn(rn)+1inc direct ;direct(direct)+1inc ri ;(;(ri)(ri)+1inc dptr ;dptr(dptr)+1(2)減)減1指令指令減1指令與加1指令使用方法相同。dec a ; a(a)-1dec rn ;rn(rn)-1dec ri ;(ri)(ri)-1dec direct ;direct(di
17、rect)-14. 乘法指令乘法指令 mul ab (1)進(jìn)位標(biāo)志位cy總是清“0”。(2)累加器a中的值影響奇偶標(biāo)志位p。(3)當(dāng)積大于255(b中的內(nèi)容不為0)時(shí),ov=1,否則ov =0。 5. 除法指令除法指令div ab(1)對(duì)cy和p標(biāo)志的影響與乘法時(shí)相同。(2)當(dāng)除數(shù)為0時(shí),除法沒(méi)有意義,ov =1,否則ov =0。6. 二二十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令da a若ac =1或a3a09,則 a(a)+06h;若cy =1或a7a49,則 a(a)+60h。 2.4.2 邏輯運(yùn)算指令邏輯運(yùn)算指令1. 邏輯邏輯“與與”、“或或”、“異或異或”指令邏輯指令邏輯邏輯與指令:邏輯與指令:
18、anl a, rn;a(a)(rn)anl a, ri;a(a)(ri)anl a, direct;a(a)(direct)anl a, #data;a(a)#dataanl direct,a;direct(direct)(a)anl direct,#data ;direct(direct)#data例2-12:計(jì)算立即數(shù)#35h和#78h相與的結(jié)果。邏輯或指令:邏輯或指令:orl a, rn;a(a)(rn)orl a, ri;a(a)(ri)orl a, direct;a(a)(direct)orl a, #data;a(a)(#data)orl direct, a;direct(a)(r
19、n)orl direct, #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”。xrl a, rn;a(a)(rn)xrl a,
20、ri;a(a)(rn)xrl a, direct;a(a)(direct)xrl a, #data;a(a)#dataxrl direct, a;direct(direct)(a)xrl direct, #data ;direct(direct)#data例2-14:計(jì)算立即數(shù)#35h和#78h相異或的結(jié)果。2. 移位指令移位指令rl a ;累加器內(nèi)容循環(huán)左移rlc a ;累加器內(nèi)容帶cy循環(huán)左移rr a ;累加器循環(huán)右移rrc a ;累加器內(nèi)容帶cy循環(huán)右移3. 清零、取反指令清零、取反指令clr a ;a0,累加器a清0,不影響標(biāo)志位cpl a ;a(/a),累加器a的內(nèi)容按位取反,不影響
21、標(biāo)志位2.5 控制轉(zhuǎn)移和位操作指令控制轉(zhuǎn)移和位操作指令1. 無(wú)條件轉(zhuǎn)移指令無(wú)條件轉(zhuǎn)移指令(1)長(zhǎng)轉(zhuǎn)移指令)長(zhǎng)轉(zhuǎn)移指令ljmp addr16 ;pcaddr16 (2)絕對(duì)轉(zhuǎn)移指令)絕對(duì)轉(zhuǎn)移指令ajmp addr11 ;pcaddr11 (3)短轉(zhuǎn)移指令)短轉(zhuǎn)移指令sjmp rel ;pc(pc)+ 2 ;pc(pc)+ rel(4)間接轉(zhuǎn)移指令)間接轉(zhuǎn)移指令jmp a +dptr ;pc(a)+(dptr)2. 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令(1)累加器判零轉(zhuǎn)移指令)累加器判零轉(zhuǎn)移指令jz rel ;累加器a為0轉(zhuǎn)移jnz rel ;累加器a不為0轉(zhuǎn)移(2)比較轉(zhuǎn)移指令)比較轉(zhuǎn)移指令cjne ,re
22、lcjne a, #data, relcjne a, direct, relcjne ri, #data, relcjne rn, #data, rel如果目的操作數(shù)小于源操作數(shù),則cy置1,否則cy清0。本指令執(zhí)行后不影響任何操作數(shù)。 (3)減)減1條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令djnz rn, rel ;(rn)(rn)- 1;若(rn)= 0,則 pc(pc)+2;若(rn)0,則 pc(pc)+2 +reldjnz direct,rel ;direct(direct)-1;若(direct)=0,則 pc(pc)+3;若(direct)0,則 pc(pc)+3 +rel例2-16:設(shè)r0、r
23、1、r2的內(nèi)容分別為 01h、0ah、20h,執(zhí)行下列程序:l1:l2:l3:djnz r0, l1djnz r1, l2djnz r2, l33. 子程序調(diào)用和返回指令子程序調(diào)用和返回指令(1)調(diào)用指令)調(diào)用指令 長(zhǎng)調(diào)用指令長(zhǎng)調(diào)用指令lcall addr16 ;pc(pc)+3;sp(sp)+1,(sp)pc7pc0;sp(sp)+1,(sp)pc15pc8;pcaddr16 絕對(duì)調(diào)用指令絕對(duì)調(diào)用指令acall addr11 ;pc(pc)+2;sp(sp)+1,(sp)pc7pc0;sp(sp)+1,(sp)pc15pc8;pc100 addr11(2)子程序返回指令)子程序返回指令retret;pc15pc8(sp);sp(sp)-1;pc7pc0(sp);sp(sp)-1(3)中斷報(bào)
溫馨提示
- 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ù)升級(jí)項(xiàng)目合同借款協(xié)議
- 合同管理培訓(xùn)與人才培養(yǎng)的建議
- 餐飲業(yè)原料采購(gòu)合同(安全食品專用)
- 勞動(dòng)合同范本:外來(lái)專業(yè)技術(shù)人才
- 商業(yè)地皮交易合同書(shū)
- 蘇州市模范勞動(dòng)合同樣本
- 四人合作創(chuàng)業(yè)股份分配合同范本
- 年度合作合同:速記服務(wù)條款
- 液化氣采購(gòu)框架合同
- 購(gòu)物中心投資合同樣本
- 六年級(jí)下冊(cè)音樂(lè)全冊(cè)教案湖南文藝出版社湘教版
- Tracepro-實(shí)例學(xué)習(xí)教程
- 《中國(guó)潰瘍性結(jié)腸炎診治指南(2023年)》解讀
- 進(jìn)貨單出貨單(Excel表格模板)
- 質(zhì)監(jiān)站對(duì)監(jiān)理工作監(jiān)督的要點(diǎn)
- 2020年英語(yǔ)筆譯二級(jí)綜合能力樣題
- 《20世紀(jì)的藝術(shù)大師——馬蒂斯》參考教案1
- 中 國(guó) 作 家 協(xié) 會(huì) 入 會(huì) 申 請(qǐng) 表
- (完整版)最新人教版小學(xué)三年級(jí)美術(shù)下冊(cè)全冊(cè)教案(最新整理)
- 我的寒假生活快樂(lè)寒假兒童電子相冊(cè)講課PPT演示課件
- 浙江省公路工程施工監(jiān)理統(tǒng)一用表(2018 年修訂版)
評(píng)論
0/150
提交評(píng)論