第3章 80C51 單片機(jī)指令系統(tǒng)_第1頁
第3章 80C51 單片機(jī)指令系統(tǒng)_第2頁
第3章 80C51 單片機(jī)指令系統(tǒng)_第3頁
第3章 80C51 單片機(jī)指令系統(tǒng)_第4頁
第3章 80C51 單片機(jī)指令系統(tǒng)_第5頁
已閱讀5頁,還剩62頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章80C51單片機(jī)指令系統(tǒng)3.1單片機(jī)指令系統(tǒng)概述3.280C51單片機(jī)指令尋址方式3.380C51單片機(jī)指令分類介紹3.1單片機(jī)指令系統(tǒng)概述指令:規(guī)定計(jì)算機(jī)基本操作的語句或命令。指令通常有兩個組成部分:操作碼和操作數(shù)。操作碼:用于規(guī)定指令進(jìn)行什么操作。操作數(shù):指令操作的對象,可以是具體的數(shù)據(jù)、數(shù)據(jù)的地址或符號。例如:MOVA,#20H,

指令系統(tǒng):一個單片機(jī)所能執(zhí)行的指令集合。指令系統(tǒng)由單片機(jī)生產(chǎn)廠商定義的,由CPU

的內(nèi)部結(jié)構(gòu)決定的。不同的單片機(jī),其指令系統(tǒng)不盡相同。 80c51指令中使用的符號的意義作簡要說明:Rn(n=0~7):表示當(dāng)前工作寄存器R0~R7中的任一個寄存器。Ri:可用作間接尋址的寄存器,只能是R0,R1兩個寄存器,

i=0,1。

direct:8位直接地址,在指令中表示直接尋址方式,尋址范圍

256個單元。

#data:8位立即數(shù)。

#data16:16位立即數(shù)。

addr16:表示16位目的地址,主要用于LCALL和LJMP指令中。

addr11:表示11位目的地址,主要用于ACALL和AJMP指令中。3.1單片機(jī)指令系統(tǒng)概述rel:相對轉(zhuǎn)移指令中的偏移量,為8位帶符號補(bǔ)碼。

DPTR:數(shù)據(jù)指針。

bit:內(nèi)部RAM(包括專用寄存器)中的直接尋址位。

A:累加器

ACC:直接尋址方式的累加器。

B:寄存器BC:進(jìn)位標(biāo)志位。也稱為累加位。

/:加在位地址的前面,表示對該位狀態(tài)取反。

@:間接尋址寄存器的前綴標(biāo)志。(X):某寄存器或某單元中的內(nèi)容。

((X)):由“X”間接尋址單元中的內(nèi)容。←:箭頭左邊的內(nèi)容被箭頭右邊的內(nèi)容所取代。3.1單片機(jī)指令系統(tǒng)概述3.280C51單片機(jī)指令尋址方式

尋址方式,通常是指某一個CPU指令系統(tǒng)中規(guī)定的尋找操作數(shù)所在地址的方式,或者說通過什么樣的方式找到操作數(shù)。尋址方式的方便與快捷是衡量CPU性能的一個重要方面,MCS—51單片機(jī)有七種尋址方式。1.寄存器尋址方式定義:操作數(shù)在寄存器中,只要指定了寄存器就能得到操作數(shù)。例:MOVA,R0特點(diǎn):由指令指出某一個寄存器的內(nèi)容作為操作數(shù)。存放操作數(shù)的寄存器在指令代碼中不占據(jù)單獨(dú)的一個字節(jié),而是嵌入(隱含)到操作碼字節(jié)中。尋址范圍:四組通用寄存器Rn(R0~R7)、部分專用寄存器(A,B,DPTR,Cy)。MOVA,Rn;A

(Rn)其中n為0~7之一,Rn是工作寄存器。MOVRn,A;Rn

(A)MOVB,A;B

(A)3.280C51單片機(jī)指令尋址方式2.直接尋址方式定義:指令中操作數(shù)直接以存儲單元地址的形式給出。例如:MOVA,3AH特點(diǎn):指令中含有操作數(shù)的地址。該地址指出了參與操作的數(shù)據(jù)所在的字節(jié)單元地址或位地址。計(jì)算機(jī)執(zhí)行它們時便可根據(jù)直接地址找到所需要的操作數(shù)。只能使用8位二進(jìn)制數(shù)表示的地址。尋址范圍:片內(nèi)RAM區(qū)(低128字節(jié))、專用寄存器。3.280C51單片機(jī)指令尋址方式常見形式:MOVA,52H;把片內(nèi)RAM字節(jié)地址52H單元的內(nèi) 容送累加器A中。MOV52H,A;把A的內(nèi)容傳送給片內(nèi)RAM的52H 單元中。MOV50H,60H;把片內(nèi)RAM字節(jié)地址60H單元的內(nèi) 容送到50H單元中。MOVIE,#40H;把立即數(shù)40H送到中斷允許寄存器

IE。IE為專用功能寄存器,其字節(jié) 地址為0A8H。該指令等價于MOV 0A8H,#40H。INC60H;將地址60H單元中的內(nèi)容自加1。3.280C51單片機(jī)指令尋址方式直接尋址方式示意圖

3.280C51單片機(jī)指令尋址方式3.寄存器間接尋址方式定義:指令給出的寄存器中存放的是操作數(shù)據(jù)的單元地址。這種尋址方式稱為寄存器間接尋址。如:MOVA,@R0特點(diǎn):指令給出的寄存器中存放的是操作數(shù)地址。寄存器間接尋址是一種二次(間接)尋找操作數(shù)的尋址方式,寄存器前邊必須加前綴符號“@”。不能用于尋址特殊功能寄存器SFR。3.280C51單片機(jī)指令尋址方式例如:MOVA,@R0例如:MOVDPTR,#3456H;DPTR

3456HMOVXA,@DPTR;A

((DPTR))

寄存器間接尋址方式示意圖

3.280C51單片機(jī)指令尋址方式尋址范圍:內(nèi)部RAM低128B(只能使用R0或R1作間址寄存器)外部RAM(使用DPTR作間址寄存器)對于外部低256單元RAM的訪問,除可以使用DPTR外,還可以使用R0或R1作間址寄存器。堆棧操作指令(PUSH和POP)為SP作間址寄存器的間址尋址方式。3.280C51單片機(jī)指令尋址方式4.立即尋址方式定義:將立即參與操作的數(shù)據(jù)直接寫在指令中,這種尋址方式稱為立即尋址。立即數(shù)只能作為源操作數(shù),不能當(dāng)作目的操作數(shù)。例如MOVA,#3AH

MOVDPTR,#data16特點(diǎn):指令中直接含有所需的操作數(shù)。該操作數(shù)可以是8位的,也可以是16位的,常常處在指令的第二字節(jié)和第三字節(jié)的位置上。立即數(shù)通常使用#data或#data16表示,在立即數(shù)前面加“#”標(biāo)志,用以和直接尋址中的直接地址(direc或bit)相區(qū)別。

3.280C51單片機(jī)指令尋址方式例如:MOVA,#52H;A

52HMOVDPTR,#5678H;DPTR

5678H

立即尋址示意圖

3.280C51單片機(jī)指令尋址方式

5.變址尋址方式

定義:這種尋址方式用于訪問程序存儲器中的數(shù)據(jù)表格,以基址寄存器(DPTR或PC)的內(nèi)容為基本地址,加上變址寄存器A的內(nèi)容形成16位的地址,訪問程序存儲器中的數(shù)據(jù)表格。這種尋址方式稱為基址加變址寄存器間接尋址,簡稱為變址尋址。例如:MOVCA,@A+DPTR;A←(A)+(DPTR)

MOVCA,@A+PCJMP@A+DPTR

僅有3條變址尋址指令。3.280C51單片機(jī)指令尋址方式

特點(diǎn):指令操作碼中隱含作為基址寄存器用的DPTR(或PC)和作為變址用的累加器A。在執(zhí)行變址尋址指令時,80c51單片機(jī)先把基地址(DPTR或PC的內(nèi)容)和地址偏移量(A的內(nèi)容)相加,以形成操作數(shù)地址,再由操作數(shù)地址找到操作數(shù),并完成相應(yīng)的操作。變址尋址方式是單字節(jié)指令。3.280C51單片機(jī)指令尋址方式尋址范圍:只能對程序存儲器ROM進(jìn)行尋址,主要用于查表性質(zhì)的訪問。3.280C51單片機(jī)指令尋址方式

6.位尋址方式

MCS-51單片機(jī)中設(shè)有獨(dú)立的位處理器。位操作指令能對內(nèi)部RAM中的位尋址區(qū)(20H~2FH)和某些有位地址的特殊功能寄存器進(jìn)行位操作。定義:指令中給出的操作數(shù)是一個可單獨(dú)尋址的位地址,這種尋址方式稱為位尋址方式。

MOVC,3AH特點(diǎn):位尋址是直接尋址方式的一種,其特點(diǎn)是對8位二進(jìn)制數(shù)中的某一位的地址進(jìn)行操作。例如:SETBTR0;TR0

1CLR00H;(00H)

0MOVC,57H;將57H位地址的內(nèi)容傳送到C中

ANLC,5FH;將5FH位與進(jìn)位位C相與,結(jié)果在C中3.280C51單片機(jī)指令尋址方式尋址范圍:內(nèi)部RAM中的位尋址區(qū)單元地址為20H~2FH,共16個單元128位,位地址是00H~

7FH。兩種表示方法:一種是位地址;另一種是單元地址加位。專用寄存器的可尋址位(4種表示方法)直接使用位地址。例如PSW寄存器位5地址為0D5H。位名稱表示方法。例如PSW寄存器位5是F0標(biāo)志位,則可使用F0表示該位。單元地址加位數(shù)的表示方法。例如PSW寄存器位5,表示為

0D0H.5。專用寄存器符號加位數(shù)的表示方法。例如PSW寄存器的位5,表示為PSW.53.280C51單片機(jī)指令尋址方式7.相對尋址方式(解決程序轉(zhuǎn)移)定義:將程序計(jì)數(shù)器PC的當(dāng)前值(取出本條指令后的PC值)與指令第二個字節(jié)給出的偏移量(rel)相加,形成新的轉(zhuǎn)移目標(biāo)地址。稱為相對尋址方式。例如:

SJMPrel;(PC)←(PC)+2+rel特點(diǎn):目的地址=指令地址+指令字節(jié)數(shù)+偏移量相對尋址方式是為實(shí)現(xiàn)程序的相對轉(zhuǎn)移而設(shè)計(jì)的,為相對轉(zhuǎn)移指令所使用,其指令碼中含有相對地址偏移量,能生成浮動代碼。尋址范圍:只能對程序存儲器ROM進(jìn)行尋址。相對地址偏移量(rel)是一個帶符號的8位二進(jìn)制補(bǔ)碼,其取值范圍為

128~+127(以PC為中間的256個字節(jié)范圍)。rel可以是標(biāo)號。3.280C51單片機(jī)指令尋址方式3.380C51單片機(jī)指令分類介紹

MCS-51指令系統(tǒng)有42種助記符,代表了33種功能,指令助記符與各種可能的尋址方式相結(jié)合,構(gòu)成80C51單片機(jī)的111條指令。這些指令按功能分成5大類:

——數(shù)據(jù)傳送類(29條)

——算術(shù)運(yùn)算類(24條)

——邏輯運(yùn)算及移位類(24條)

——控制轉(zhuǎn)移類(17條)

——位操作類(17條)3.3.1數(shù)據(jù)傳送類指令

數(shù)據(jù)傳送類指令一般的操作是把源操作數(shù)傳送到指令所指定的目標(biāo)地址。指令執(zhí)行后,源操作數(shù)保持不變,目的操作數(shù)為原操作數(shù)所替代。數(shù)據(jù)傳送類指令用到的助記符有:MOV,MOVX,MOVC,XCH,XCHD,PUSH,POP,SWAP。

數(shù)據(jù)一般傳送指令的助記符“MOV”表示:

格式:MOV[目的操作數(shù)],[源操作數(shù)]

功能:目的操作數(shù)

(源操作數(shù)中的數(shù)據(jù))源操作數(shù)可以是:A、Rn、direct、@Ri、#data

目的操作數(shù)可以是:A、Rn、direct、@Ri

數(shù)據(jù)傳送指令一般不影響標(biāo)志。3.380C51單片機(jī)指令分類介紹1.以累加器為目的操作數(shù)的內(nèi)部數(shù)據(jù)傳送指令

MOVA,Rn;A

(Rn)MOVA,direct;A

(direct)MOVA,@Ri;A

((Ri))MOVA,#data;A

data3.380C51單片機(jī)指令分類介紹2.?dāng)?shù)據(jù)傳送到工作寄存器Rn的指令

MOVRn,A;Rn

(A)MOVRn,direct

;Rn

(direct)MOVRn,#data;Rn

data3.380C51單片機(jī)指令分類介紹3.?dāng)?shù)據(jù)傳送到內(nèi)部RAM單元或特殊功能寄存器SFR的指令MOVdirect,A;direct

(A)MOVdirect,Rn

;direct

(Rn)MOVdirect1,direct2 ;direct1

(direct2)MOVdirect,@Ri;direct

((Ri))MOVdirect,#data

;direct

#dataMOV@Ri,A ;(Ri

(A)MOV@Ri,direct

;(Ri)

(direct)MOV@Ri,#data

;(Ri)

dataMOVDPTR,#data16

;DPTR

data163.380C51單片機(jī)指令分類介紹

片內(nèi)數(shù)據(jù)RAM及寄存器的數(shù)據(jù)傳送指令MOV、PUSH和POP共18條,如圖所示。3.380C51單片機(jī)指令分類介紹例1:若(30H)=35H,(R1)=70H,說明指令

MOV@R1,30H的結(jié)果解:執(zhí)行后,直接地址70H(即寄存器R1的內(nèi)容)的內(nèi)容為35H,30H與R1的內(nèi)容不變。例2:已知(70H)=60H,(60H)=20H,P1=0B7H,執(zhí)行下面指令,說明結(jié)果。

MOVR0,#70H ;R0<-70HMOVA,@R0 ;A<-60HMOVR1,A ;R1<-60HMOVB,@R1 ;B<-20HMOV@R0,P1 ;70H<-0B7H

解:結(jié)果是:(70H)=0B7H,(60H)=20H,B=20H(R1)=60H,(R0)=70H3.380C51單片機(jī)指令分類介紹例3指出下面指令的錯誤:

MovR1,R3 MovRn,@RiMovA,@R3解:MovR1,R3無寄存器之間直接傳送指令

MovRn,@Ri,無寄存器間接尋址指令

MovA,@R3,間接尋址只能是R1或R03.380C51單片機(jī)指令分類介紹2.外部數(shù)據(jù)存儲器讀/寫指令(1)Ri作間址寄存器的外部RAM單元讀/寫指令

MOVXA,@Ri(Ri間接尋址的外部RAM單元讀)

MOVX@Ri

,A(Ri間接尋址的外部RAM單元寫)(2)DPTR作間址寄存器的外部RAM單元讀/寫指令

MOVXA,@DPTR(DPTR間接尋址的外部RAM單元讀)

MOVX@DPTR

,A(DPTR間接尋址的外部RAM單元寫)

3.程序存儲器讀指令組(只能讀不能寫,單字節(jié)指令)

MOVCA,@A+DPTR(程序存儲器讀)

MOVCA,@A+PC(程序存儲器讀)注意:讀寫程序存儲器時,只能通過A3.380C51單片機(jī)指令分類介紹

片外數(shù)據(jù)存儲器數(shù)據(jù)傳送指令MOVX共4條,如圖:

程序存儲器查表指令MOVC共2條,如圖所示。3.380C51單片機(jī)指令分類介紹HBA:INCAMOVCA,@A+PCRETDB30HDB31H200CDB39H200DDB41H200EDB42H200FDB43H2010DB44H2011DB45H2012DB46H例:假定A=00H。程序執(zhí)行情況:4.數(shù)據(jù)交換指令組(1)整字節(jié)交換指令

XCHA,Rn(寄存器尋址字節(jié)交換)

XCHA,direct(直接尋址字節(jié)交換)

XCHA,@Ri

(Ri間接尋址字節(jié)交換)(2)半字節(jié)交換指令

XCHDA,@Ri

(Ri間接尋址半字節(jié)交換)(3)累加器高低半字節(jié)交換指令

SWAPA(累加器內(nèi)容高低半字節(jié)交換)3.380C51單片機(jī)指令分類介紹數(shù)據(jù)交換指令XCH、XCHD、和SWAP共5條,如圖所示。

【例】(R0)=30H,(A)=65H,(30H)=8FH執(zhí)行指令:

XCH

A,@R0;(R0)=30H,(A)=8FH,(30H)=65HXCHDA,@R0;(R0)=30H,(A)=6FH,(30H)=85HSWAP

A;(A)=56H3.380C51單片機(jī)指令分類介紹5.堆棧操作指令組

PUSHdirect(進(jìn)棧)

POPdirect(出棧)例5:設(shè)(SP)=30H,ACC=60H,B=70H執(zhí)行PUSHACCPUSHB后的結(jié)果如何?解:PUSHACC ;(SP)<-31H,(31H)<-60HPUSHB ;(SP)<-32H,(32H)<-70H

結(jié)果為:(SP)=32H,(31H)=60H

(32H)=70H3.380C51單片機(jī)指令分類介紹【練習(xí)1】指出下列程序段的每條指令的源操作數(shù)是什么尋址方式,并寫出每步運(yùn)算的結(jié)果。(相關(guān)單元的內(nèi)容)設(shè)程序存儲器(1050H)=5AH:MOV

A,#0FH;A=0FH,立即尋址MOV

30H,#0F0H;(30H)=F0H,立即尋址MOV

R2,A;R2=0FH,寄存器尋址MOV

R1,#30H;R1=30H,立即尋址MOV

A,@R1;A=F0H,寄存器間接尋址MOV

DPTR,#1000H;DPTR=1000H,立即尋址MOV

A,#50H;A=50H,立即尋址MOVC

A,@A+DPTR;A=5AH,基址變址尋址JMP

@A+DPTR;PC目標(biāo)=105AH,基址變址尋址CLR

C;C=0,寄存器尋址MOV

20H,C;(20H)=0,寄存器尋址【練習(xí)2】用數(shù)據(jù)傳送指令實(shí)現(xiàn)下列要求的數(shù)據(jù)傳送。 (1)R0的內(nèi)容輸出到R1。 (2)內(nèi)部RAM20H單元的內(nèi)容傳送到A中。 (3)外部RAM30H單元的內(nèi)容送到R0。 (4)外部RAM30H單元的內(nèi)容送內(nèi)部RAM20H單元。 (5)外部RAM1000H單元的內(nèi)容送內(nèi)部RAM20H單元。 (6)程序存儲器ROM2000H單元的內(nèi)容送R1。 (7)ROM2000H單元的內(nèi)容送內(nèi)部RAM20H單元。 (8)ROM2000H單元的內(nèi)容送外部RAM30H單元。 (9)ROM2000H單元的內(nèi)容送外部RAM1000H單元。解

(1)MOV

A,R0MOV

R1,A (2)

MOV

A,20H (3)

MOV

R0,#30H或MOVR1,#30HMOVX

A,@R0MOVXA,@R1MOV

R0,AMOVR1,A (4)

MOV

R0,#30H或MOVR1,#30HMOVX

A,@R0MOVXA,@R1MOV20H,AMOV

20H,A

(5)MOV

DPTR,#1000HMOVX

A,@DPTRMOV

20H,A(8)MOVDPTR,#2000HCLRAMOVC

A,@A+DPTRMOV

R0,#30HMOVX

@R0,A(9)MOV

DPTR,#2000HCLRAMOVC

A,@A+DPTRMOV

DPTR,#1000HMOVX

@DPTR,A(6)MOV

DPTR,#2000HCLRAMOVC

A,@A+DPTRMOV

R1,A(7)MOV

DPTR,#2000HCLRAMOVC

A,@A+DPTRMOV

20H,A

例如:進(jìn)入中斷服務(wù)程序時,把程序狀態(tài)寄存器PSW、累加器A、數(shù)據(jù)指針DPTR進(jìn)棧保護(hù)。設(shè)當(dāng)前SP為60H。

則程序段執(zhí)行后,SP內(nèi)容修改為64H,而61H、62H、63H、64H單元中依次壓入PSW、A、DPL、DPH的內(nèi)容,當(dāng)中斷服務(wù)程序結(jié)束之前,如下程序段(SP保持64H不變)

指令執(zhí)行之后,SP內(nèi)容修改為60H,而64H、63H、62、61H單元的內(nèi)容依次彈出到DPH、DPL、A、PSW中。PUSHPSWPUSHACCPUSHDPLPUSHDPHPOPDPHPOPDPLPOPACCPOPPSW3.380C51單片機(jī)指令分類介紹3.3.2算術(shù)運(yùn)算類指令1.加法指令加法指令分為普通加法指令、帶進(jìn)位加法指令和加1指令。(1)普通加法指令

ADDA,Rn;A

(A)+(Rn)ADDA,direct;A(A)+(direct)ADDA,@Ri;A

(A)+((

Ri))ADDA,#data;A

(A)+data算術(shù)運(yùn)算指令都是按8位二進(jìn)制無符號數(shù)執(zhí)行的。【例】(A)=85H,R0=20H,(20H)=0AFH,執(zhí)行指令:ADDA,@R010000101+10101111

100110100結(jié)果:(A)=34H;Cy=1;AC=1;OV=1。

對于加法,溢出只能發(fā)生在兩個加數(shù)符號相同的情況。3.3.2算術(shù)運(yùn)算類指令(2)帶進(jìn)位加法指令

【例如】(A)=85H,(20H)=0FFH,Cy=1執(zhí)行指令:ADDCA,20H

結(jié)果:(A)=85H;Cy=1;AC=1;OV=0。ADDCA,Rn;A

(A)+(Rn)+(Cy)ADDCA,direct;A

(A)+(direct)+(Cy)ADDCA,@Ri;A

(A)+((Ri))+(Cy)ADDCA,#data;A

(A)+data+(Cy)3.3.2算術(shù)運(yùn)算類指令(3)加1指令【例如】(A)=12H,(R3)=0FH,(35H)=4AH,(R0)=56H,(56H)=00H執(zhí)行如下指令:

INC

A;執(zhí)行后(A)=13H

INC

R3;執(zhí)行后(R3)=10H

INC

35H;執(zhí)行后(35H)=4BH

INC@R0;執(zhí)行后(56H)=01HINCA;A

(A)+1INCRn;Rn

(Rn)+1INCdirect;direct

(direct)+1INC@Ri;(Ri)

((Ri))+1INCDPTR;DPTR

(DPTR)+13.3.2算術(shù)運(yùn)算類指令2.減法指令(1)帶借位減法指令(2)減1指令SUBBA,Rn;A

(A)-(Rn)-(Cy)SUBBA,direct;A

(A)-(direct)-(Cy)SUBBA,@Ri;A

(A)-(Ri)-(Cy)SUBBA,#data;A

(A)-data-(Cy)DECA;A

(A)-1DECRn;Rn

(Rn)-1DECdirect;direct

(direct)-1DEC@Ri;(Ri)

((Ri))-13.3.2算術(shù)運(yùn)算類指令3.乘法指令乘法指令完成單字節(jié)的乘法,只有一條指令:

MULAB;AB(A)×(B)【例如】(A)=50H,(B)=0A0H,執(zhí)行指令:

MUL

AB

結(jié)果:(B)=32H,(A)=00H(即乘積為3200H), Cy=0,OV=1。

4.除法指令除法指令完成單字節(jié)的除法,只有一條指令:

DIVAB;A(A)/(B)的商

B(A)/(B)的余數(shù)3.3.2算術(shù)運(yùn)算類指令說明:MUL指令實(shí)現(xiàn)8位無符號數(shù)的乘法操作,兩個乘數(shù)分別放在累加器A和寄存器B中,乘積為16位,低8位放在A中,高8位放在B中;

DIV指令實(shí)現(xiàn)8位無符號數(shù)除法,被除數(shù)放在A中,除數(shù)放在B中,指令執(zhí)行后,商放在A中而余數(shù)放在B中。3.3.2算術(shù)運(yùn)算類指令5.十進(jìn)制調(diào)整指令

DAA

執(zhí)行該指令時,判斷A中的低4位是否大于9,若滿足大于則低4位做加6操作; 同樣,A中的高4位大于9則高4位加6操作。 例如:有兩個BCD數(shù)36與45相加,結(jié)果應(yīng)為BCD碼81,程序如下:

MOVA,#36H ADDA,#45H DAA

得結(jié)果7BH;第三條指令對累加器A進(jìn)行十進(jìn)制調(diào)整,低4位(為0BH)大于9,因此要加6,最后得到調(diào)整的BCD碼81。3.3.2算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令包括:ADD、ADDC、SUBB、MUL、DIV、INC、DEC和DA,如圖3.9所示。圖3.9算術(shù)運(yùn)算類指令3.3.2算術(shù)運(yùn)算類指令1.邏輯與指令

【例如】(A)=37H,(R0)=0A9H執(zhí)行指令:ANL

A,R0

結(jié)果:(A)=21HANLA,Rn;A

(A)(Rn)ANLA,direct;A

(A)(direct)ANLA,@Ri;A

(A)((Ri))ANLA,#data;A

(A)

dataANLdirect,A;direct

(direct)(A)ANLdirect,#data;direct

(direct)

data3.3.3邏輯運(yùn)算及移位類指令2.邏輯或指令

【例如】(A)=37H,(P1)=09H執(zhí)行指令:

ORL

P1,A

結(jié)果:(A)=3FHORLA,Rn;A

(A)(Rn)ORLA,direct;A

(A)(direct)ORLA,@Ri;A

(A)((Ri))ORLA,#data;A

(A)

dataORLdirect,A;direct

(direct)(A)ORLdirect,#data;direct

(direct)data3.3.3邏輯運(yùn)算及移位類指令3.邏輯異或指令

XRLA,Rn;A

(A)(Rn)XRLA,direct;A

(A)(direct)XRLA,@Ri;A

(A)((Ri))XRLA,#data;A

(A)

dataXRLdirect,A;direct

(direct)(A)XRLdirect,#data;direct

(direct)data4.累加器清0和取反指令

CLRA;對累加器A清“0”CPLA;對累加器A按位取反3.3.3邏輯運(yùn)算及移位類指令ClearConversePositionLogical

當(dāng)需要只改變字節(jié)數(shù)據(jù)的個別位而其余位不變時,只能通過邏輯運(yùn)算完成。應(yīng)用舉例將累加器A的低4位傳送到P1口的低4位,但P1口的高4位保持不變。MOVR0,AANLA,#0FHANLP1,#0F0HORLP1,AMOVA,R03.3.3邏輯運(yùn)算及移位類指令5.移位指令

RLA;累加器A的內(nèi)容向左循環(huán)移1位RLCA;累加器A的內(nèi)容帶進(jìn)位標(biāo)志向左循環(huán)移1位RRA;累加器A的內(nèi)容向右循環(huán)移1位RRCA;累加器A的內(nèi)容帶進(jìn)位標(biāo)志向右循環(huán)移1位3.3.3邏輯運(yùn)算及移位類指令RecycleLeftRecycleLeftCarry

循環(huán)左移指令示意圖:RLA循環(huán)右移指令示意圖:RRA帶進(jìn)位的循環(huán)左移指令示意圖:RLCA帶進(jìn)位的循環(huán)右移指令示意圖:RRCA3.3.3邏輯運(yùn)算及移位類指令3.3.3邏輯運(yùn)算及移位類指令圖3.10邏輯運(yùn)算類指令3.3.4控制轉(zhuǎn)移類指令

1.無條件轉(zhuǎn)移指令(1)絕對轉(zhuǎn)移指令

AJMP

addr11

這是2KB范圍內(nèi)的無條件跳轉(zhuǎn)指令,執(zhí)行該指令時,先將PC+2,然后將addr11送入PC10~PC0,而PC15~PC11保持不變。

操作過程可表示為:PC

(PC)+2

PC10~0

addr11(2)短轉(zhuǎn)移指令

SJMPrel

操作過程可表示為:

PC

(PC)+2PC

(PC)+rel

執(zhí)行指令時,先將PC+2,再把指令中帶符號的偏移量加到PC上,得到跳轉(zhuǎn)的目的地址送入PC。

目標(biāo)地址=源地址+2+relAbsoluteJumpShortJump(3)長轉(zhuǎn)移指令

LJMP

addr16;PC

addr16

執(zhí)行該指令時,將16位目標(biāo)地址addr16裝入PC,程序無條件轉(zhuǎn)向指定的目標(biāo)地址。轉(zhuǎn)移指令的目標(biāo)地址可在64KB程序存儲器地址空間的任何地方,不影響任何標(biāo)志。(4)變址尋址轉(zhuǎn)移指令(散轉(zhuǎn)指令)

JMP

@A+DPTR ;PC

(A)+(DPTR)2.條件轉(zhuǎn)移指令(1)累加器判零轉(zhuǎn)移指令JZrel;(A)=0轉(zhuǎn)移JNZrel;(A)≠0轉(zhuǎn)移3.3.4控制轉(zhuǎn)移類指令

LongJumpJumpJumpZeroJumpNotZero(2)數(shù)值比較轉(zhuǎn)移指令在MCS-51中沒有專門的比較指令,但提供了下面4條比較不相等轉(zhuǎn)移指令;

(3)減1不為0轉(zhuǎn)移指令

DJNZRn,rel ;Rn

(Rn)-1

0轉(zhuǎn)移

DJNZdirect,rel;direct

(direct)-1

0轉(zhuǎn)移CJNEA,direct,rel ;(A)

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論