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

下載本文檔

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

文檔簡(jiǎn)介

第4章80C51單片機(jī)指令系統(tǒng)4.1單片機(jī)指令系統(tǒng)概述4.280C51單片機(jī)指令尋址方式4.380C51單片機(jī)指令分類(lèi)介紹2/14/20251第4章80C51單片機(jī)指令系統(tǒng)4.1

單片機(jī)指令系統(tǒng)概述

第4章80C51單片機(jī)指令系統(tǒng)2/14/20252第4章80C51單片機(jī)指令系統(tǒng)4.1.1

指令概述指令:是CPU根據(jù)人們的意圖來(lái)執(zhí)行某種操作的命令。指令系統(tǒng):是計(jì)算機(jī)所能夠執(zhí)行的全部指令的集合。程序:是按人們的要求所編制的指令操作序列。程序設(shè)計(jì)語(yǔ)言:是編寫(xiě)程序的某種規(guī)則。

三類(lèi)編程語(yǔ)言:機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言2/14/20253第4章80C51單片機(jī)指令系統(tǒng)機(jī)器語(yǔ)言:用二進(jìn)制編碼表示每條指令,是計(jì)算機(jī)能直接識(shí)別和執(zhí)行的語(yǔ)言。匯編語(yǔ)言:是用助記符、符號(hào)和數(shù)字等來(lái)表示指令的程序設(shè)計(jì)語(yǔ)言。它與機(jī)器語(yǔ)言指令是一一對(duì)應(yīng)的。本章主要介紹80C51單片機(jī)的匯編語(yǔ)言指令系統(tǒng)。2/14/20254第4章80C51單片機(jī)指令系統(tǒng)4.1.2

指令格式和指令的表示形式

80C51匯編語(yǔ)言指令格式[標(biāo)號(hào):]操作碼[目的操作數(shù)][,源操作數(shù)][;注釋]例如:標(biāo)號(hào)字段:操作碼操作數(shù);注釋字段START:MOVA,#00H;0→AMOVR1,#10;10→R1MOVR2,#00000011B;3→R2LOOP:ADDA,R2;(A)+(R2)→ADJNZR1,LOOP

;R1內(nèi)容減1不為零,則跳轉(zhuǎn)到

;LOOP一行,循環(huán)NOPHERE:SJMPHERE2/14/20255第4章80C51單片機(jī)指令系統(tǒng)4.1.3

指令中的常用符號(hào)1.Rn(n=0~7)當(dāng)前選中的工作寄存器R0~R72.Ri(i=0,1)當(dāng)前選中的、作地址指針的寄存器R0、R13.#data8位立即數(shù)4.#data1616位立即數(shù)如:MOVDPTR,#data165.direct8位片內(nèi)RAM單元(包括SFR)的直接地址如:MOVdirect,#data;#datadirect6.addr11

11位目的地址,用于ACALL和AJMP指令中7.addr16

16位目的地址,用于LCALL和LJMP指令中2/14/20256第4章80C51單片機(jī)指令系統(tǒng)8.rel

補(bǔ)碼形式的8位地址偏移量9.bit

片內(nèi)RAM或SFR的直接尋址的位地址10.@

間接地址方式中,表示間址寄存器的符號(hào)11./

對(duì)位取反操作如:ANLC,/P1.212.(×)指“×”中的內(nèi)容,其內(nèi)容是數(shù)據(jù);×是地址13.((×))由“×”間接尋址單元中的內(nèi)容,×中的內(nèi)容“(×)”是地址如:設(shè)58H單元的數(shù)據(jù)是36H,R0的內(nèi)容是58HINC58H;(58H)+158HDEC@R0;((R0))-1

(R0)14.

示將箭頭左邊的內(nèi)容傳送到箭頭右邊的單元2/14/20257第4章80C51單片機(jī)指令系統(tǒng)4.1.4

指令的字節(jié)數(shù)和指令周期匯編語(yǔ)言指令對(duì)應(yīng)的二進(jìn)制代碼格式:?jiǎn)巫止?jié)指令雙字節(jié)指令三字節(jié)指令單字節(jié)指令1、指令碼中隱含著對(duì)某一種寄存器的操作如:指令“INCDPTR”的指令代碼格式為:

A3H=101000112、由指令中的rrr三位的不同編碼指定某一寄存器如:指令“MOVA,Rn”的指令代碼格式為:

11101rrr2/14/20258第4章80C51單片機(jī)指令系統(tǒng)雙字節(jié)指令用一個(gè)字節(jié)表示操作碼,另一個(gè)字節(jié)表示操作數(shù)或操作數(shù)所在的地址。格式為:操作碼立即數(shù)或地址三字節(jié)指令一個(gè)字節(jié)操作碼,兩個(gè)字節(jié)操作數(shù)。格式為:操作碼立即數(shù)或地址立即數(shù)或地址2/14/20259第4章80C51單片機(jī)指令系統(tǒng)4.280C51單片機(jī)指令尋址方式第4章80C51單片機(jī)指令系統(tǒng)2/14/202510第4章80C51單片機(jī)指令系統(tǒng)尋址方式概述尋址方式:就是指令中找到操作數(shù)或操作數(shù)地址的方式。

80C51單片機(jī)有七種尋址方式:

1、立即尋址

2、直接尋址

3、寄存器尋址

4、寄存器間接尋址

5、變址尋址

6、相對(duì)尋址

7、位尋址2/14/202511第4章80C51單片機(jī)指令系統(tǒng)4.2.1立即尋址操作數(shù)在指令中,在操作碼后面。用“#”表示。操作數(shù)可以是8位的,也可以是16位的。例如:

MOVA,3AH;(3AH)

AMOVA,#3AH;3AHAMOV DPTR,#23C8H;23C8HDPTR

ADDA,#0D4H;(A)+0D4HA2/14/202512第4章80C51單片機(jī)指令系統(tǒng)4.2.2

直接尋址直接尋址:在指令中直接給出操作數(shù)所在存儲(chǔ)單元的地址。指令中操作數(shù)部分是操作數(shù)所在地址。直接尋址方式可訪問(wèn)片內(nèi)RAM的128個(gè)單元以及所有的SFR。對(duì)于SFR,既可以使用它們的地址,也可以使用它們的名字。例如:

MOVA,3AH;(3A)→AMOVA,P1;(P1口)→A或:MOVA,90H;90H是P1口的地址2/14/202513第4章80C51單片機(jī)指令系統(tǒng)4.2.3

寄存器尋址

操作數(shù)在某一個(gè)寄存器中。所用的寄存器可以是:R0~R7、A、B、DPTR等。例如:

MOVA,R0;(R0)

ADECB;(B)-1BADDA,R1;(A)+(R1)

AINCDPTR;(DPTR)+1DPTR2/14/202514第4章80C51單片機(jī)指令系統(tǒng)4.2.4寄存器間接尋址指令中寄存器中的內(nèi)容給出的是操作數(shù)的地址。80C51規(guī)定:R0、R1和DPTR可以作為間接尋址寄存器。1.R0、R1間址訪問(wèn)片內(nèi)RAM的低128B或片外RAM的低256B空間如:設(shè)(R0)=65H,(65H)=47HMOVA,@R0;(65H)A,A中的值是47HMOV@R0,#3AH;3AH65HMOVXA,@R0;外RAM的(65H)A2/14/202515第4章80C51單片機(jī)指令系統(tǒng)例如:將片內(nèi)RAM30H單元內(nèi)容56H送A,可執(zhí)行指令“MOVA,@R0”。其中R0內(nèi)容為30H。如圖所示:30H56HR0A56H數(shù)據(jù)存儲(chǔ)器地址┋┋30H①②以指令中所指定的R0內(nèi)容(30H)為指針將片內(nèi)RAM30H單元內(nèi)容56H送A2/14/202516第4章80C51單片機(jī)指令系統(tǒng)2、DPTR間址訪問(wèn)片外RAM的64KB空間

如:設(shè)(DPTR)=2000HMOVX@DPTR,A;A

外RAM的2000H單元

MOVXA,@DPTR;外RAM的2000H單元

A2/14/202517第4章80C51單片機(jī)指令系統(tǒng)4.2.5

變址尋址變址尋址:以某個(gè)寄存器的內(nèi)容為基地址,在這個(gè)基地址的基礎(chǔ)上加上地址偏移量形成真正的操作數(shù)地址。80C51中采用DPTR或PC為變址寄存器,A的內(nèi)容為地址偏移量。變址尋址只能訪問(wèn)程序存儲(chǔ)器,訪問(wèn)范圍64KB。2/14/202518第4章80C51單片機(jī)指令系統(tǒng)例如:MOVCA,@A+DPTR;((A)+(DPTR))→A如圖所示56H2020HROMDPTRA執(zhí)行前A執(zhí)行后2000H20H56H+①②DPTR內(nèi)容與A的內(nèi)容之和為程序存儲(chǔ)器地址程序存儲(chǔ)器內(nèi)容送A2/14/202519第4章80C51單片機(jī)指令系統(tǒng)4.2.6

相對(duì)尋址

相對(duì)尋址:是以當(dāng)前的PC值加上指令中規(guī)定的偏移量rel而形成實(shí)際的轉(zhuǎn)移地址。相對(duì)尋址只出現(xiàn)在相對(duì)轉(zhuǎn)移指令中。當(dāng)前的PC值是指執(zhí)行完相對(duì)指令后的PC值;相對(duì)轉(zhuǎn)移指令操作碼所在地址稱(chēng)為源地址;轉(zhuǎn)移后的地址稱(chēng)為目的地址。目的地址=源地址+相對(duì)轉(zhuǎn)移指令字節(jié)數(shù)+relrel為補(bǔ)碼表示的有符號(hào)數(shù)。2/14/202520第4章80C51單片機(jī)指令系統(tǒng)例如:SJMP54H;PC←PC+2+54H2/14/202521第4章80C51單片機(jī)指令系統(tǒng)4.2.7

位尋址位尋址:采用位尋址方式的指令的操作數(shù)是8位二進(jìn)制數(shù)中的某一位,指令中給出的是位地址。位地址在指令中用bit表示。例如:CLRbit

MOVACC.0,11H;ACC.0←(11H)

位地址的兩種表示方法:直接使用位地址,如D3H;直接用寄存器名字加位數(shù),如PSW.3。位尋址區(qū)域:

片內(nèi)RAM的20H-2FH的16個(gè)單元中的128位;字節(jié)地址能被8整除的SFR。2/14/202522第4章80C51單片機(jī)指令系統(tǒng)操作數(shù)尋址方式和有關(guān)空間2/14/202523第4章80C51單片機(jī)指令系統(tǒng)4.380C51單片機(jī)指令分類(lèi)介紹第4章80C51單片機(jī)指令系統(tǒng)2/14/202524第4章80C51單片機(jī)指令系統(tǒng)

指令系統(tǒng)概述(共111條指令)

按字節(jié)數(shù)分:?jiǎn)巫止?jié)指令49條,雙字節(jié)指令46條,三字節(jié)指令16條。

按執(zhí)行時(shí)間分:?jiǎn)螜C(jī)器周期指令64條,雙周期指令45條,四周期指令2條(乘、除指令)

按功能分:

MCS-51指令系統(tǒng)分為五大類(lèi):

數(shù)據(jù)傳送指令(29條)算術(shù)運(yùn)算指令(24條)邏輯運(yùn)算及位移指令(24條)

控制轉(zhuǎn)移指令(17條)位操作或布爾操作(17條)2/14/202525第4章80C51單片機(jī)指令系統(tǒng)外部RAM外部ROM累加器Adirect@RiRn#data數(shù)據(jù)傳送類(lèi)指令的傳送關(guān)系圖4.3.1

數(shù)據(jù)傳送指令不允許的操有:@Ri@Ri

RnRn@RiRn2/14/202526第4章80C51單片機(jī)指令系統(tǒng)1.以A為目的操作數(shù)的指令(4條)MOVA,Rn

;(Rn)

AMOVA,direct

;(direct)

AMOVA,@Ri

;((Ri))

AMOVA,#data

;dataA如:MOVA,R2MOVA,30HMOVA,@R0MOVA,#36H內(nèi)部RAM數(shù)據(jù)傳送指令組

2/14/202527第4章80C51單片機(jī)指令系統(tǒng)2.以Rn為目的操作數(shù)的指令(3條)MOVRn

,A

;(Rn)

Rn

MOVRn

,direct

;(direct)

Rn

MOVRn

,#data

;data

Rn

如:MOVR0,AMOVR3,30HMOVR7,#36HMOVR1,#30MOVR6,#01101100B2/14/202528第4章80C51單片機(jī)指令系統(tǒng)

3.以直接地址為目的操作數(shù)的指令(5條)MOVdirect,A

;(A)

directMOVdirect,Rn

;(Rn)

directMOVdirect,direct

;(源direct)

目的directMOVdirect,@Ri

;((Ri))

directMOVdirect,#data

;data

direct如:MOV30H,AMOVP1,R2MOV38H,60HMOVTL0,@R1MOV58H,#36H2/14/202529第4章80C51單片機(jī)指令系統(tǒng)

4.以間接地址為目的操作數(shù)的指令(3條)MOV@Ri,A

;(A)

(Ri)MOV@Ri,direct

;(direct)

(Ri)MOV@Ri,#data

;data

(Ri)如:MOV@R0,AMOV@R1,36HMOV@R0,SBUFMOV@R1,#48MOV@R0,#0D6H2/14/202530第4章80C51單片機(jī)指令系統(tǒng)

5.十六位數(shù)據(jù)傳送指令(1條)MOVDPTR,#data16

;dataHDPH,dataLDPL如:MOVDPTR,#2368H

MOVDPTR,#353266.查表指令(2條)MOVCA,@A+DPTR

;((A)+(DPTR))A

一般DPTR放表的首地址,A放所查數(shù)據(jù)在表中的偏移;查表范圍為64KB空間,稱(chēng)為遠(yuǎn)程查表。MOVCA,@A+PC

;((A)+(PC))

A

PC的值為下條指令的地址,A放所查數(shù)據(jù)相對(duì)PC值的偏移;查表范圍為最大為256B空間,稱(chēng)為近程查表。2/14/202531第4章80C51單片機(jī)指令系統(tǒng)MOVR0,#70H;(R0)=70HMOVA,@R0;(A)=60HMOVR1,A;(R1)=60HMOVA,@R1;(A)=30HMOV@R0,P1;(70H)=7BHMOV60H,#40H;(60H)=40H例4.1

若(70H)=60H,(60H)=30H,P1口為輸入口(當(dāng)前狀態(tài)為7BH),執(zhí)行下面程序后各有關(guān)存儲(chǔ)器單元、寄存器及端口的內(nèi)容是多少?執(zhí)行結(jié)果為:(70H)=7BH,(60H)=40H,(A)=30H,(R0)=70H,(R1)=60H。2/14/202532第4章80C51單片機(jī)指令系統(tǒng)

7.累加器A與片外RAM的數(shù)據(jù)傳送指令(4條)MOVXA,@Ri

;((Ri))A,且使/RD=0MOVXA,@DPTR

;((DPTR))A,且使/RD=0MOVX@Ri,A

;(A)

(Ri),且使/WR=0MOVX@DPTR,A

;(A)

(DPTR)

,且使/WR=0說(shuō)明:第2、4兩條指令以DPTR為片外RAM16位地址指針,尋址范圍為64KB空間;第1、3兩條指令以R0或R1作低8位地址指針,由P0口送出,尋址范圍為256B空間(P2口仍可作通用I/O口)。2/14/202533第4章80C51單片機(jī)指令系統(tǒng)例4.2試編寫(xiě)一程序段,實(shí)現(xiàn)將內(nèi)部RAM

中30H單元中的內(nèi)容傳送到外部RAM3000H單元中。

解:MOV

A,30HMOV

DPTR,#3000H

MOVX

@DPTR,A

2/14/202534第4章80C51單片機(jī)指令系統(tǒng)

8.堆棧操作指令(2條)PUSHdirect;先(SP)+1SP,后(direct)(SP)POPdirect

;先((SP))direct,后(SP)-1SP如:PUSH0E0H;實(shí)際是(A)(SP)

POP05H;實(shí)際是(

(SP))

R5注意:其操作數(shù)為直接地址,不能用寄存器名。2/14/202535第4章80C51單片機(jī)指令系統(tǒng)例4.5設(shè)(SP)=30H,(DPTR)=0123H,執(zhí)行

執(zhí)行下列程序后各單元中的內(nèi)容。PUSH

DPLPUSH

DPH

執(zhí)行結(jié)果:(31H)=23H

(32H)=01H2/14/202536第4章80C51單片機(jī)指令系統(tǒng)例4.6設(shè)(SP)=32H,(32H)=01H,(31H)=23H,執(zhí)行下列程序后各單元中的內(nèi)容。POP

DPHPOP

DPL說(shuō)明:(1)PUSH與POP操作過(guò)程剛好相反;(2)進(jìn)、出棧規(guī)則:先進(jìn)后出,后進(jìn)先出。應(yīng)注意指令書(shū)寫(xiě)先后順序;(3)可用于“保護(hù)現(xiàn)場(chǎng),恢復(fù)現(xiàn)場(chǎng)”。

執(zhí)行結(jié)果:(DPTR)=0123H(SP)=30H2/14/202537第4章80C51單片機(jī)指令系統(tǒng)

9.交換指令(5條)

(1)字節(jié)交換指令XCHA,Rn

;(A)(Rn)XCHA,direct;(A)(direct)XCHA,@Ri

;(A)((Ri))(2)半字節(jié)交換指令二低半字節(jié)交換指令XCHDA,@Ri

;(A0~3)((Ri)0~3

)如:設(shè)(A)=36H,(R1)=65H,(65H)=42HXCHDA,@R1;執(zhí)行結(jié)果:(A)=32H,(65H)=46H2/14/202538第4章80C51單片機(jī)指令系統(tǒng)累加器A高、低半字節(jié)交換指令SWAPA;(A0~3)(A4~7

)如:設(shè)(A)=36HSWAPA;(A)=63H2/14/202539第4章80C51單片機(jī)指令系統(tǒng)小結(jié)借助英文縮寫(xiě)記憶指令功能例如:MOV是MOVE(傳送)的縮寫(xiě),指令的通用格式是:

MOV〈目的操作數(shù)〉,〈源操作數(shù)〉非法指令不能用來(lái)編程需注意,以下指令是非法指令:

MOV

Rn,Rn

MOV

@Ri,@RiMOV

Rn,@Ri

MOV

#data,A

2/14/202540第4章80C51單片機(jī)指令系統(tǒng)

4.3.2算術(shù)運(yùn)算指令

包括加、減、乘、除運(yùn)算;第一操作數(shù)一般為A;一般影響標(biāo)志位CY、AC、OV和P。共24條指令,分成七個(gè)小類(lèi)。1.不帶進(jìn)位加法指令(4條)ADDA,Rn

;(A)+(Rn)

AADDA,direct

;(A)+(direct)

AADDA,@Ri

;(A)+((Ri))

AADDA,#data

;(A)+#dataA2/14/202541第4章80C51單片機(jī)指令系統(tǒng)加法指令對(duì)PSW的影響

①進(jìn)位標(biāo)志位CY:若位7有進(jìn)位輸出,則CY置1,反之,CY清0。②輔助進(jìn)位標(biāo)志位AC:若位3向位4有進(jìn)位輸出,則

AC置1,反之,AC清0。③溢出標(biāo)志位OV:若位7有進(jìn)位輸出而位6沒(méi)有,或者位6有進(jìn)位輸出而位7沒(méi)有,則OV置1,否則清0。④奇偶標(biāo)志位P:相加后,A中有奇數(shù)個(gè)1,則P置1,否則清0。無(wú)符號(hào)數(shù)相加時(shí):若CY=1,說(shuō)明有溢出(其值>255)。帶符號(hào)數(shù)相加時(shí):若OV=1,說(shuō)明有溢出。2/14/202542第4章80C51單片機(jī)指令系統(tǒng)例4.7若(A)=19H,(R0)=65H,執(zhí)行ADDA,R0執(zhí)行后00011001+0110010101111110(A)=7EH,(CY)=0,(AC)=0,(OV)=0,(P)=02/14/202543第4章80C51單片機(jī)指令系統(tǒng)

2.帶進(jìn)位加法指令(4條)ADDCA,Rn

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

;(A)+((Ri))+CYAADDCA,#data;(A)+#data+CYA

3.帶借位減法指令(4條)SUBBA,Rn

;(A)-CY-(Rn)

ASUBBA,direct;(A)-CY-(direct)

ASUBBA,@Ri

;(A)-CY-((Ri))

ASUBBA,#data;(A)-CY-#dataA2/14/202544第4章80C51單片機(jī)指令系統(tǒng)兩數(shù)相減,對(duì)PSW標(biāo)志位的影響進(jìn)位標(biāo)志位CY:若位7有借位,則CY置1,反之,CY清0。輔助進(jìn)位標(biāo)志位AC:若位3向位4有借位,則AC置1,反之,AC清0。溢出標(biāo)志位OV:若位7有借位而位6沒(méi)有借位,或者位6有借位而位7沒(méi)有借位,則OV置1,否則清0。奇偶標(biāo)志位P:相減后,A中有奇數(shù)個(gè)1,則P置1,否則清0。2/14/202545第4章80C51單片機(jī)指令系統(tǒng)

5.加1指令(5條)INCA;(A)+1AINCRn

;(Rn)+1

Rn

INCdirect;(direct)+1

direct

INC@Ri

;((Ri))+1

(Ri)INCDPTR;(DPTR)+1DPTR說(shuō)明:此類(lèi)指令不影響標(biāo)志CY、AC和OV2/14/202546第4章80C51單片機(jī)指令系統(tǒng)

6.減1指令(4條)DECA;(A)-1ADECRn;(Rn)-1

Rn

DECdirect;(direct)-1

direct

DEC@Ri;((Ri))-1

(Ri)說(shuō)明:此類(lèi)指令不影響標(biāo)志CY、AC和OV

2/14/202547第4章80C51單片機(jī)指令系統(tǒng)例4.9內(nèi)部RAM中30H和31H單元分別存放兩個(gè)加數(shù),相加結(jié)果存放在32H單元中,試編寫(xiě)程序。MOVR0,#30H;設(shè)置數(shù)據(jù)指針MOVA,@R0;取第一個(gè)加數(shù)INCR0;使數(shù)據(jù)指針加1ADDA,@R0;兩數(shù)相加INCR0;使數(shù)據(jù)指針加1MOV@R0,A;存結(jié)果2/14/202548第4章80C51單片機(jī)指令系統(tǒng)

4.乘除法指令(2條)乘法指令

MULAB;(A)×(B)

B15~8,A7~0

說(shuō)明:(1)為無(wú)符號(hào)乘法;(2)若結(jié)果的B≠0,則OV=1,若B=0,則OV=0;CY=0。除法指令

DIVAB;(A)/(B)的商

A,余數(shù)B

說(shuō)明:(1)為無(wú)符號(hào)除法;(2)若除數(shù)B=0,則OV=1,若B≠0,則OV=0;CY=0。2/14/202549第4章80C51單片機(jī)指令系統(tǒng)

7.十進(jìn)制數(shù)調(diào)整指令(1條)DAA;調(diào)整累加器內(nèi)容為BCD碼(壓縮的)說(shuō)明:(1)此指令跟在ADD或ADDC指令之后,將A中的和調(diào)整為BCD碼,并且ADD或ADDC的兩個(gè)操作數(shù)是BCD碼;(2)調(diào)整方法:若(A0~3)>9或AC=1,則(A0~3)+6(A0~3);若(A4~7)>9或CY=1,則(A4~7)+6(A4~7);(3)對(duì)標(biāo)志的影響:若結(jié)果A>99,則CY=1;不影響

OV。2/14/202550第4章80C51單片機(jī)指令系統(tǒng)抓住各類(lèi)指令的相似性,比較學(xué)習(xí)注意指令執(zhí)行時(shí)對(duì)程序狀態(tài)字PSW的影響注意使用指令的限制條件小結(jié)2/14/202551第4章80C51單片機(jī)指令系統(tǒng)

4.3.3

邏輯操作指令

包括與、或、異或、清除、求反、移位等操作。這類(lèi)指令一般不影響標(biāo)志位CY、AC和OV,共24條。

1.累加器A清0與取反指令(2條)(1)累加器A清0指令CLRA

;0A

說(shuō)明:只影響標(biāo)志位P。(2)累加器A取反指令(按位取反)CPLA

;(/A)

A,相當(dāng)于0FFH-AA

說(shuō)明:不影響標(biāo)志位。如:(A)=56HCPLA;結(jié)果為0A9H2/14/202552第4章80C51單片機(jī)指令系統(tǒng)

2.移位指令(4條)1、累加器A循環(huán)左移RLA;2、累加器A循環(huán)右移RRA;3、累加器A帶進(jìn)位位循環(huán)左移RLCA;4、累加器A帶進(jìn)位位循環(huán)右移RRCA;

說(shuō)明:(1)各條指令每次只移動(dòng)一位;(2)左移一位相當(dāng)于乘以2;右移一位相當(dāng)于除以2;(3)帶進(jìn)位位移動(dòng)的影響標(biāo)志位CY和P。2/14/202553第4章80C51單片機(jī)指令系統(tǒng)

3.邏輯“與”指令(6條)ANLA,Rn

;(A)∧(Rn)

AANLA,direct

;(A)∧(direct)

AANLA,@Ri

;(A)∧((Ri))

AANLA,#data

;(A)∧#dataAANLdirect,A

;(direct)∧(A)

directANLdirect,#data

;

(direct)∧#data

direct說(shuō)明:目的操作數(shù)只能是A或者direct;前4條指令僅影響標(biāo)志位P;后兩條不影響標(biāo)志位;邏輯“與”運(yùn)算主要起屏蔽作用,可以把不需要的位和“0”相與,其余位和“1”相與。2/14/202554第4章80C51單片機(jī)指令系統(tǒng)

4.邏輯“或”指令(6條)ORLA,Rn

;(A)∨(Rn)

AORLA,direct

;(A)∨(direct)

AORLA,@Ri

;(A)∨((Ri))

AORLA,#data

;(A)∨#dataAORLdirect,A

;(

direct)∨(A)

directORLdirect,#data

;(

direct)∨#data

direct

說(shuō)明:(1)目的操作數(shù)只能是A或者direct;(2)前4條指令僅影響標(biāo)志位P;后兩條不影響標(biāo)志位。(3)或運(yùn)算常用于使某些位置1,常常起“合并作用”。2/14/202555第4章80C51單片機(jī)指令系統(tǒng)例4.10

已知累加器A中的數(shù)據(jù)為83H,R1中的數(shù)據(jù)為7BH,試編寫(xiě)程序?qū)的高4位和R1的低4位合并成一個(gè)字節(jié)存放在R0中。ANLA,#0F0H;屏蔽A的低4位,(A)=80HMOVR0,A;A的內(nèi)容暫存于R0中MOVA,R1;將R1中的數(shù)據(jù)傳送到A中ANLA,#0FH;屏蔽R1的高4位,(A)=0BHORLA,R0;合并MOVR0,A;存結(jié)果2/14/202556第4章80C51單片機(jī)指令系統(tǒng)

5.邏輯“異或”指令(6條)XRLA,Rn

;(A)∨(Rn)

AXRLA,direct

;(A)∨(direct)

AXRLA,@Ri

;(A)∨((Ri))

AXRLA,#data

;(A)∨#dataAXRLdirect,A

;(

direct)∨(A)

directXRLdirect,#data

;(

direct)∨#data

direct說(shuō)明:(1)目的操作數(shù)只能是A或者direct;(2)前4條指令僅影響標(biāo)志位P;后兩條不影響標(biāo)志位。(3)用1異或使對(duì)應(yīng)位取反,用0異或使對(duì)應(yīng)位不變,異或運(yùn)算常用于使某些位取反。用數(shù)據(jù)0FFH異或一個(gè)寄存器的值,就能實(shí)現(xiàn)對(duì)該寄存器取反的功能。

2/14/202557第4章80C51單片機(jī)指令系統(tǒng)

小結(jié)邏輯操作類(lèi)指令操作圖2/14/202558第4章80C51單片機(jī)指令系統(tǒng)

4.3.4位操作類(lèi)指令

包括位變量傳送、邏輯運(yùn)算、控制轉(zhuǎn)移等指令,共17條,分成4個(gè)小類(lèi)。只有部分指令影響CY標(biāo)志。

位地址的表示方法:直接用位地址如:D4H

用特殊功能寄存器名加位數(shù)如:PSW.4

用位名稱(chēng)

如:RS1

用bit定義的有名字的位地址如:SUBbitRS1,MMbit02H2/14/202559第4章80C51單片機(jī)指令系統(tǒng)

1.位數(shù)據(jù)傳送指令(2條)MOVC,bit;(bit)

CMOVbit,C;(bit)

C如:MOVC,TR0MOV08H,C例4.12將10H位的內(nèi)容傳送至5AHMOV20H,C;暫存CY內(nèi)容MOVC,10H;10H位送CYMOV5AH,C;CY內(nèi)容送5AHMOVC,20H;回復(fù)CY內(nèi)容2/14/202560第4章80C51單片機(jī)指令系統(tǒng)

2.位修正指令(6條)(1)位清0指令CLRC;0CCLRbit;0

(bit)如:CLRTR0(2)位置1指令SETBC;1CSRTBbit;1

(bit)如:SETBTR0SETB06H(3)位取反指令CPLC;(/C)

CCPLbit;(/bit)

bit如:CPLTR0CPLEA2/14/202561第4章80C51單片機(jī)指令系統(tǒng)

3.位邏輯運(yùn)算指令(4條)

(1)位邏輯“與”指令A(yù)NLC,bit

;(C)∧(bit)

CANLC,/bit

;(C)∧(/bit)

C如:ANLC,P1.0ANLC,/P1.2(2)位邏輯“或”指令ORLC,bit

;(C)∨(bit)

CORLC,/bit

;(C)∨(/bit)

C如:ORLC,P1.0ORLC,/P1.22/14/202562第4章80C51單片機(jī)指令系統(tǒng)例4.13編程求邏輯方程

P1.7=P2.7∧(P2.0∨P2.1)∨/P2.3MOVC,P2.0;CY←(P2.0)ORLC,P2.1;CY←(P2.0)∨(P2.1)ANLC,P2.7;CY←P2.7∧(P2.0∨P2.1)ORLC,/P2.3;CY←P2.7∧(P2.0∨P2.1)∨/P2.3MOVP1.7,C;結(jié)果存于P1.72/14/202563第4章80C51單片機(jī)指令系統(tǒng)

4.位條件轉(zhuǎn)移類(lèi)指令(5條)

(1)判斷C值轉(zhuǎn)移指令JCrel

;(PC)+2PC

;(C)=1,則(PC)+relPC

;(C)=0,則順序向下執(zhí)行JNCrel

;(PC)+2PC

;(C)=0,則(PC)+relPC

;(C)=1,則順序向下執(zhí)行如:JCNEXT1JNCFIRST

2/14/202564第4章80C51單片機(jī)指令系統(tǒng)

(2)判斷位值轉(zhuǎn)移指令JBbit,rel

;(PC)+2PC

;若(bit)=1,則(PC)+relPC

;若(bit)=0,則順序向下執(zhí)行JNBbit,rel

;(PC)+2PC

;若(bit)=0,則(PC)+relPC

;若(bit)=1,則順序向下執(zhí)行如:JBBA,NEXT1JNBTI,$2/14/202565第4章80C51單片機(jī)指令系統(tǒng)

(3)判斷位值并清0轉(zhuǎn)移指令JBCbit,rel

;(PC)+2PC

;若(bit)=1,則(PC)+relPC,0bit

;若(bit)=0,則順序向下執(zhí)行

2/14/202566第4章80C51單片機(jī)指令系統(tǒng)包括無(wú)條件轉(zhuǎn)移、條件轉(zhuǎn)移、子程序調(diào)用和返回指等,共17條。只有比較轉(zhuǎn)移指令影響標(biāo)志。1.無(wú)條件轉(zhuǎn)移指令(4條)(1)短轉(zhuǎn)移(絕對(duì)轉(zhuǎn)移)指令A(yù)JMPaddr11;先(PC)+2PC

;addr11PC10~0,(PC15~11)不變

(PC)4.3.5控制程序轉(zhuǎn)移類(lèi)指令說(shuō)明:該指令執(zhí)行前PC值為下一條指令的首地址;轉(zhuǎn)移范圍:含有下一條指令首地址的同一個(gè)2KB范圍,即高5位地址相同;2/14/202567第4章80C51單片機(jī)指令系統(tǒng)例4.14在地址PC=1FFEH處有一條絕對(duì)轉(zhuǎn)移指令A(yù)JMP16BH,則程序轉(zhuǎn)移的目的地址是多少?(PC)=1FFEH(PC)+2=2000H(00100000

00000000H)

11位地址送PC的低11位,即16BH(00101101011H)替換PC的低11位,則轉(zhuǎn)移的目的地址為0010000101101011H,即為216BH2/14/202568第4章80C51單片機(jī)指令系統(tǒng)

(2)長(zhǎng)轉(zhuǎn)移指令LJMPaddr16;addr16PC說(shuō)明:轉(zhuǎn)移范圍:64KB全程序空間任何單元。如:LJMPNEXT(PC)2/14/202569第4章80C51單片機(jī)指令系統(tǒng)

(3)相對(duì)轉(zhuǎn)移(短轉(zhuǎn)移)指令SJMPrel

;先(PC)+2PC,后(PC)+relPC說(shuō)明:該指令執(zhí)行前PC值為下一條指令的首地址;轉(zhuǎn)移范圍:-128~+127;對(duì)應(yīng)rel值為:00H~7FH(0~+127)

80H~FFH(-128~-1)

LOOP:SJMPLOOPLOOP:SJMP$

這兩條語(yǔ)句實(shí)現(xiàn)程序原地踏步的功能,常用在程序等待時(shí),用“$”代表PC的當(dāng)前值。2/14/202570第4章80C51單片機(jī)指令系統(tǒng)256B02/14/202571第4章80C51單片機(jī)指令系統(tǒng)例4.15

376BHSJMP66H

66H是正數(shù),實(shí)現(xiàn)正向轉(zhuǎn)移,目的地址=376BH+0002H+0066H=37D3H

376BHSJMPE7HE7H是負(fù)數(shù),實(shí)現(xiàn)反向轉(zhuǎn)移,E7H是負(fù)數(shù)19的補(bǔ)碼,目的地址=376BH+0002H-19H=3754H2/14/202572第4章80C51單片機(jī)指令系統(tǒng)

(4)間接轉(zhuǎn)移指令JMP@A+DPTR;(A)+(DPTR)

PC說(shuō)明:具有多分枝轉(zhuǎn)移功能,即散轉(zhuǎn)功能,又叫散轉(zhuǎn)指令;轉(zhuǎn)移范圍:是以DPTR為首地址的256B。2/14/202573第4章80C51單片機(jī)指令系統(tǒng)2.條件轉(zhuǎn)移指令(8條)

均為相對(duì)尋址方式。

(1)累加器A為零(非零)轉(zhuǎn)移指令JZrel

;當(dāng)A=0時(shí),(PC)+rel

(PC)轉(zhuǎn)移;

;當(dāng)A≠0時(shí),順序執(zhí)行。JNZrel

;當(dāng)A≠0時(shí),(PC)+rel

(PC)轉(zhuǎn)移;

;當(dāng)A=0時(shí),順序執(zhí)行。2/14/202574第4章80C51單片機(jī)指令系統(tǒng)

(2)比較轉(zhuǎn)移指令(4條)

CJNE(目的操作數(shù)),(源操作數(shù)),relCJNEA,direct,rel

;若A>(direct),則(PC)+relPC,且0CY;

;若A<(direct),則(PC)+relPC,且1CY;

;若A=(direct),則順序執(zhí)行,且0CY。CJNEA,#data,rel

;若A>#data,則(PC)+relPC,且0CY;

;若A<#data,則(PC)+relPC,且1CY;

;若A=#data,則順序執(zhí)行,且0CY。2/14/202575第4章80C51單片機(jī)指令系統(tǒng)CJNERn,#data,rel

;若(Rn)>#data,則(PC)+relPC,且0CY;

;若(Rn)<#data,則(PC)+relPC,且1CY;

;若(Rn)=#data,則順序執(zhí)行,且0CY。CJNE@Ri,#data,rel

;若((Ri))>#data,則(PC)+relPC,且0CY;

;若((Ri))<#data,則(PC)+relPC,且1CY;

;若((Ri))=#data,則順序執(zhí)行,且0CY。2/14/202576第4章80C51單片機(jī)指令系統(tǒng)

說(shuō)明:(1)PC值為下一條指令第一個(gè)字節(jié)的地址,為本條指令PC值加3,即(PC)+3(PC);(2)×CY,實(shí)際是A-(direct)操作的借位值送

CY;

CY可以作為進(jìn)一步操作的依據(jù)。如:CJNEA,38H,F(xiàn)IRSTCJNEA,#56H,LOOP1CJNER2,#32,LOOP2CJNE@R1,#48H,LOOP32/14/202577第4章80C51單片機(jī)指令系統(tǒng)例4.16判斷累加器A與20H單元內(nèi)容(無(wú)符號(hào)數(shù))的大小,若(A)=(20H)則程序轉(zhuǎn)向LOOP1;若(A)>(20H)則程序轉(zhuǎn)向LOOP2,若(A)<(20H)則程序轉(zhuǎn)向LOOP3。CJNEA,20H,NEXT;若(A)≠(20H),轉(zhuǎn)向NEXTSJMPLOOP1;若(A)=(20H),轉(zhuǎn)向LOOP1NEXT:JNCLOOP2;若(A)>(20H),

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論