第5講 單片機(jī)指令系統(tǒng)2_第1頁(yè)
第5講 單片機(jī)指令系統(tǒng)2_第2頁(yè)
第5講 單片機(jī)指令系統(tǒng)2_第3頁(yè)
第5講 單片機(jī)指令系統(tǒng)2_第4頁(yè)
第5講 單片機(jī)指令系統(tǒng)2_第5頁(yè)
已閱讀5頁(yè),還剩29頁(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)介

第5講(2012-4-17)11-12第2學(xué)期第8周汽車單片機(jī)1.指令系統(tǒng)簡(jiǎn)介;2.尋址方式;3.指令系統(tǒng);4.匯編語(yǔ)言程序設(shè)計(jì);5.程序設(shè)計(jì)實(shí)例;第3章MCS-51指令系統(tǒng)及匯編語(yǔ)言MCS-51的基本指令共111條,按指令所占的字節(jié)來(lái)分:

(1)單字節(jié)指令49條;

(2)雙字節(jié)指令45條;

(3)三字節(jié)指令17條。按指令的執(zhí)行時(shí)間來(lái)分:

(1)1個(gè)機(jī)器周期(12個(gè)時(shí)鐘振蕩周期)指令64條

(2)2個(gè)機(jī)器周期(24個(gè)時(shí)鐘振蕩周期)指令45條(3)只有乘、除兩條指令的執(zhí)行時(shí)間為4個(gè)機(jī)器周期(48個(gè)時(shí)鐘振蕩周期)。復(fù)習(xí)指令系統(tǒng)分類占用哪里的字節(jié)?該時(shí)間由誰(shuí)來(lái)決定?復(fù)習(xí)指令格式

指令格式——指令的表達(dá)方式稱為指令格式

[標(biāo)號(hào):]操作碼[目的操作數(shù)][,源操作數(shù)][;注釋]LP1:MOV@R0,A;先清R0INCR0;R0里數(shù)據(jù)自加1DJNZR7,LP1;先(R7)-1→R7,判斷R7復(fù)習(xí)

尋址方式

MCS-51單片機(jī)有7種尋址方式,見(jiàn)表1。序號(hào)尋址方式范例1立即尋址MOVA,#20H2直接尋址MOVA,20H3寄存器尋址MOVA,Rn

4寄存器間接尋址MOVA,@Ri

5變址尋址MOVCA,@A+DPTRMOVCA,@A+PC6相對(duì)尋址JZrel;PC<-(PC)+2+relJCLOOP7位尋址MOVC,40H有五大類指令,共111條:(1)數(shù)據(jù)傳送類(28條)

:RAM、ROM、堆棧,傳送、交換數(shù)據(jù)。(2)算術(shù)運(yùn)算類(24條)

:字節(jié)。其中操作數(shù)既可能是數(shù)據(jù),也可能是地址。加、減、乘、除,自加(減)1;(3)邏輯運(yùn)算類(25條)

:與、或、異或、移位。(4)控制轉(zhuǎn)移類(17條)

:(無(wú))條件轉(zhuǎn)移、空操作。(5)布爾變量操作類(17條)

:位數(shù)據(jù)傳送、與、或、轉(zhuǎn)移。3.3指令系統(tǒng)

3.3.1數(shù)據(jù)傳送類指令(賦值指令)

使用最頻繁的一類指令,共29條,通用格式:

MOV<目的操作數(shù)>,<源操作數(shù)>屬“復(fù)制”性質(zhì),而不是“搬家”數(shù)據(jù)傳送類指令不影響標(biāo)志位,Cy、Ac和OV,但不包括奇偶標(biāo)志位P。片內(nèi)數(shù)據(jù)傳送指令;片外數(shù)據(jù)傳送指令;程序存儲(chǔ)器數(shù)據(jù)傳送指令;數(shù)據(jù)交換指令;堆棧操作指令;1.以累加器A為目的操作數(shù)的指令

MOVA,direct;(direct)→A

MOVA,Rn;(Rn)→A,n=0~7 MOVA,@Ri;((Ri))→A,i=0,1 MOVA,#data;#data→A功能:是把源操作數(shù)的內(nèi)容送入累加器A。一、片內(nèi)數(shù)據(jù)傳送指令指令助記符及功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式MOVA,direct;(A)←(direct)直接尋址MOVA,@Ri;(A)←((Ri))寄存器間接尋址MOVA,Rn;(A)←(Rn)寄存器尋址MOVA,#data;(A)←data立即尋址例1

若(50H)=10H,則執(zhí)行指令MOVA,50H之后,(A)=10H。例2

若(R0)=20H,(20H)=39H,則執(zhí)行指令MOVA,@R0后,(A)=39H。例3

若(R5)=55H,則執(zhí)行指令MOVA,R5后,(A)=55H。2.以Rn為目的操作數(shù)的指令

MOVRn,A;(A)→Rn,n=0~7 MOVRn,direct;(direct)→Rn,n=0~7MOVRn,#dat;#data→Rn,n=0~7功能:是把源操作數(shù)的內(nèi)容送入當(dāng)前一組工作寄存器區(qū)的R0~R7中的某一個(gè)寄存器。例1

若(A)=20H,則執(zhí)行指令MOVR3,A后,(R3)=20H。例2

若(30H)=01H,則執(zhí)行指令MOVR7,30H后,(R7)=01H。指令助記符及功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式MOVRn,A;(Rn)←(A)寄存器尋址MOVRn,direct;(Rn)←(direct)直接尋址MOVRn,#data;(Rn)←data立即尋址3.以直接地址direct為目的操作數(shù)的指令

MOVdirect,A;(A)→directMOV direct,Rn;(Rn)→direct,n=0~7MOVdirect1,direct2; MOVdirect,@Ri;((Ri))→direct MOV direct,#data;#data→direct功能:把源操作數(shù)送入直接地址指出的存儲(chǔ)單元。direct指的是內(nèi)部RAM或SFR的地址。例1

若(30H)=20H,(R0)=30H,則執(zhí)行指令MOV90H,@R0的結(jié)果為(90H)=20H。例2

若例1中的條件不變,而執(zhí)行指令MOVP1,@R0,則(P1)=20H。指令助記符及功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式MOVdirectX,A;(directX)←(A)寄存器尋址MOVdirectX,Rn;(directX)←(Rn)寄存器尋址MOVdirectX,directY;(directX)←(directY)直接尋址MOVdirectX,@Ri;(directX)←((Ri))寄存器間接尋址MOVdirectX,#data;(directX)←data立即尋址若(30H)=20H,(R0)=30H,則執(zhí)行指令MOV90H,@R0的結(jié)果為(90H)=20H。執(zhí)行指令MOVP1,@R0,則(P1)=20H=00100000B

MCS-51P1.0P1.7000001005V0V0V4.以寄存器間接地址為目的操作數(shù)的指令

MOV@Ri,A;(A)→((Ri)),i=0,1MOV@Ri,direct;(direct)→((Ri))MOV@Ri,#data;#data→((Ri))例1若(R0)=50H,(50H)=20H,(A)=10H,則執(zhí)行指令“MOV@R0,A”后,50H單元的內(nèi)容由原來(lái)的20H變?yōu)?0H。目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式MOV@Ri,A;((Ri))←(A)寄存器尋址MOV@Ri,direct;((Ri))←(direct)直接尋址MOV@Ri,#data;((Ri))←data立即尋址

MOVA,#00H;00H→(A)MOVR0,#20H;20H→(R0)第一個(gè)單元MOVR7,#20H;20H→(R7)個(gè)數(shù)LP1:MOV@R0,A;先清R0INCR0;R0里數(shù)據(jù)自加1DJNZR7,LP1;先(R7)-1→R7,判斷R7

是否為0,不為0則返回

例3-7P52

將20H開(kāi)始的32個(gè)單元全部清05.16位數(shù)傳送指令

MOVDPTR,#data16;#data16→DPTR唯一的16位數(shù)據(jù)的傳送指令,立即數(shù)的高8位送入DPH,立即數(shù)的低8位送入DPL。目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式MOVDPTR,#data16;(DPTR)←data16立即尋址這條指令的功能是:把16位立即數(shù)送入DPTR中。而16位的數(shù)據(jù)指針DPTR由DPH與DPL組成,該指令執(zhí)行后,16位立即數(shù)的高8位送入DPH中,低8位送入DPL中。該指令的執(zhí)行,不影響程序狀態(tài)寄存器PSW。指累加器A與外部數(shù)據(jù)存儲(chǔ)器傳送指令

MOVXA,@DPTR;((DPTR))→A,讀外部RAM/IOMOVXA,@Ri;((Ri))→A,讀外部RAM/IOMOVX@DPTR,A;(A)→((DPTR)),寫(xiě)外部RAM/IOMOVX@Ri,A;(A)→((Ri)),寫(xiě)外部RAM/IO功能:讀外部RAM存儲(chǔ)器或I/O中的一個(gè)字節(jié),或把A中一個(gè)字節(jié)的數(shù)據(jù)寫(xiě)到外部RAM存儲(chǔ)器或I/O中。

注意:RD*或WR*信號(hào)有效。二、片外數(shù)據(jù)存儲(chǔ)器傳送指令外部數(shù)據(jù)存儲(chǔ)器(或I/O口)與累加器A傳送指令指令助記符與功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式MOVXA,@DPTR;(A)←((DPTR))寄存器間接尋址MOVXA,@Ri;(A)←((Ri))寄存器間接尋址MOVX@DPTR,A;((DPTR))←(A)寄存器尋址MOVX@Ri,A;((Ri))←(A)寄存器尋址注意:1)采用DPTR間接尋址,高8位地址(DPH)由P2口輸出,低8位地址(DPL)由P0口輸出。最多64K。2)采用Ri(i=0,1)間接尋址,可尋址片外256個(gè)單元的數(shù)據(jù)存儲(chǔ)器。Ri內(nèi)容由P0口輸出。3)片外RAM存儲(chǔ)器數(shù)據(jù)只能與A進(jìn)行交換。例1將外部數(shù)據(jù)存儲(chǔ)器7FF0H單元中的數(shù)據(jù)取出,存放到外部數(shù)據(jù)存儲(chǔ)器2000H單元中去。MOVDPTR,#7FF0HMOVXA,@DPTRMOVDPTR,#2000HMOVX@DPTR,A自學(xué)例題3-9,3-10,3-11程序存儲(chǔ)器向累加器A傳送數(shù)據(jù)指令指令助記符與功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式MOVCA,@A+PC;(A)←((A)+(PC)+1)變址尋址MOVCA,@A+DPTR;(A)←((A)+(DPTR))變址尋址三、程序存儲(chǔ)器數(shù)據(jù)傳送指令用于讀程序存儲(chǔ)器中的數(shù)據(jù)表格的指令,均采用基址寄存器加變址寄存器間接尋址方式。

(1)MOVCA,@A+PC

以PC作基址寄存器,A的內(nèi)容作為無(wú)符號(hào)整數(shù)和PC中的內(nèi)容(下一條指令的起始地址)相加后得到一個(gè)16位的地址,該地址指出的程序存儲(chǔ)單元的內(nèi)容送到累加器A。注意:PSEN信號(hào)有效。例如:(A)=30H,執(zhí)行地址1000H處的指令

1000H:MOVCA,@A+PC

本指令占用一個(gè)字節(jié),執(zhí)行結(jié)果將程序存儲(chǔ)器中1031H的內(nèi)容送入A。優(yōu)點(diǎn):不改變特殊功能寄存器及PC的狀態(tài),根據(jù)A的內(nèi)容就可以取出表格中的常數(shù)。缺點(diǎn):表格只能存放在該條查表指令后面的256個(gè)單元之內(nèi),表格的大小受到限制,且表格只能被一段程序所利用。

(2)MOVCA,@A+DPTR以DPTR作為基址寄存器,A的內(nèi)容作為無(wú)符號(hào)數(shù)和DPTR的內(nèi)容相加得到一個(gè)16位的地址,把由該地址指出的程序存儲(chǔ)器單元的內(nèi)容送到累加器A.例如(DPTR)=8100H(A)=40H執(zhí)行指令

MOVCA,@A+DPTR

本指令的執(zhí)行結(jié)果只和指針DPTR及累加器A的內(nèi)容有關(guān),與該指令存放的地址及常數(shù)表格存放的地址無(wú)關(guān),因此表格的大小和位置可以在64K程序存儲(chǔ)器中任意安排,一個(gè)表格可以為各個(gè)程序塊公用。兩條指令是在MOV的后面加C,“C”是CODE的第一個(gè)字母,即代碼的意思。教材例3-12、3-13

1.字節(jié)交換指令例1設(shè)(R1)=30H,(30H)=45H,(A)=7FH,則執(zhí)行指令:XCHA,@R1結(jié)果:(A)=45H,而(30H)=7FH,從而實(shí)現(xiàn)了累加器A與內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM中30H單元的數(shù)據(jù)交換。指令助記符與功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式XCHA,direct(direct)直接尋址XCHA,@Ri((Ri))間接尋址XCHA,Rn(Rn)寄存器尋址四、數(shù)據(jù)交換指令2.半字節(jié)交換指令例1設(shè)(30H)=6FH,(R0)=30H,(A)=0F6H,則執(zhí)行指令:XCHDA,@Ri結(jié)果:(A)=0FFH,(30H)=66H數(shù)據(jù)交換指令除了影響始終跟蹤A中數(shù)據(jù)奇偶性的P標(biāo)志外,對(duì)PSW中其他標(biāo)志位均無(wú)影響。指令助記符與功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式XCHDA,@Ri(A)←((Ri))間接尋址3.累加器A中高四位與低四位交換指令SWAPA該指令所執(zhí)行的操作是累加器A中的高4位與低4位的內(nèi)容互換,其結(jié)果仍存放在累加器A中。例1

設(shè)(A)=0A5H(10100101B),則執(zhí)行指令:SWAPA結(jié)果:(A)=5AH(01011010B)指令SWAP交換了A中高、低半字節(jié)(3~0和7~4),結(jié)果不影響標(biāo)志寄存器PSW。MCS-51內(nèi)部RAM中可以設(shè)定一個(gè)后進(jìn)先出(LIFO-LastInFirstOut)的區(qū)域稱作堆棧.堆棧指針SP指出堆棧的棧頂位置。堆棧操作指令只有2條,即:壓入(PUSH)和彈出(POP)。壓入指令:PUSHdirect ;SP←SP+1,((SP))←(direct)彈出指令:POPdirect ;((SP))←(direct),SP←SP-1五、堆棧操作指令形式1 PUSHA ;保護(hù)A中數(shù)據(jù)

PUSHPSW;保護(hù)標(biāo)志寄存器中數(shù)據(jù)

… ;

溫馨提示

  • 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)論