版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章51單片機(jī)的指令系統(tǒng)
單片機(jī)原理及應(yīng)用2第3章
目錄內(nèi)容簡介3.151單片機(jī)的匯編指令
3.1.1一個簡單的程序示例
3.1.2指令格式
3.1.3指令類型
3.1.4常用符號說明3.251單片機(jī)指令的尋址方式3.351單片機(jī)的指令集
3.3.1數(shù)據(jù)傳送類指令
3.3.2算術(shù)運(yùn)算指令
3.3.3邏輯運(yùn)算及移位類指令
3.3.4控制轉(zhuǎn)移類指令
3.3.5位操作類指令習(xí)題內(nèi)容簡介
本節(jié)介紹51單片機(jī)的指令系統(tǒng)。重點(diǎn)介紹指令格式,常用符號,尋址方式,指令的分類,每條指令的功能。要求掌握指令的功能分類,每條指令屬于何種指令功能的類別,每條指令操作數(shù)的尋址方式。能夠區(qū)分字節(jié)指令和位指令。43.151單片機(jī)的匯編指令例3–1
將內(nèi)部RAM中的20H和30H單元的無符號數(shù)相加,結(jié)果存入R0(高位)和R1(低位)中。圖3–1程序流程圖3.1.1一個簡單的程序示例5
按照圖3–1編寫匯編程序源代碼如下:
ORG 0000H;ORG為偽指令,程序從0000H開始執(zhí)行 LJMP MAIN;長跳轉(zhuǎn)指令,跳到標(biāo)號MAIN處執(zhí)行ORG0030H;主程序起始地址0030HMAIN: MOV A,20H;20H單元中的內(nèi)容送至累加器A中 CLR C;清進(jìn)位位CyADD A,30H;30H中的內(nèi)容與累加器A的內(nèi)容相加,;結(jié)果存放在累加器A中 MOV R1,A;將累加器A中的內(nèi)容傳送給寄存器R1 CLR A;清累加器A ADDCA,#00;帶進(jìn)位加法指令 MOV R0,A;將累加器A的內(nèi)容傳送給R0 SJMP $;相對轉(zhuǎn)移指令,$是當(dāng)前行指令的地址 END;結(jié)束,偽指令6指令的表示方法就是指令格式。51單片機(jī)指令主要由操作碼(指令助記符)字段和操作數(shù)字段組成。
指令格式:操作碼[操作數(shù)1][,操作數(shù)2][,操作數(shù)3]
程序是指令的有序結(jié)合,指令在匯編程序中可以增加標(biāo)號字段和注釋字段,其格式如下:[標(biāo)號:]操作碼[操作數(shù)1][,操作數(shù)2][,操作數(shù)3][;注釋]3.1.2指令格式73.1.3指令類型51單片機(jī)匯編語言有42種操作碼(參見附錄A),用來描述33種操作功能。操作碼與尋址方式組合可得到111條指令。(1)
按指令所占字節(jié)數(shù)分類,共有單字節(jié)指令(49條)、雙字
節(jié)指令(45條)和三字節(jié)指令(17條)。(2)
按指令執(zhí)行時間分類,共有單周期指令(64條)、雙周期指令(45條)和四周期指令(2條:乘法指令和除法指令)。(3)
按功能分類,51單片機(jī)指令系統(tǒng)可分為:數(shù)據(jù)傳送類指令(29條)、算術(shù)運(yùn)算類指令(24條)、邏輯運(yùn)算類指令(24條)、控制轉(zhuǎn)移類指令(17條)、位操作類指令(17條)。83.1.4常用符號說明符號含義Rn當(dāng)前選定寄存器組的寄存器Rn,n=0~7Ri作為間接尋址的地址指針Ri,i=0或1#data8位立即數(shù),8位立即數(shù)的數(shù)據(jù)范圍:00H~FFH#data1616位立即數(shù),16位立即數(shù)的數(shù)據(jù)范圍:0000H~FFFFHaddr1616位地址,可表示64KB范圍內(nèi)的地址單元的尋址,用于LCALL和LJMP指令中addr1111位地址,2KB范圍尋址,用于ACALL和AJMP指令,16位地址指針寄存器DPTR的數(shù)據(jù)傳輸指令中direct8位直接地址,可以是片內(nèi)RAM區(qū)的某一單元或某一特殊功能寄存器的地址rel帶符號的8位地址偏移量,rel地址偏移量的范圍:–128~+127,用于SJMP和條件轉(zhuǎn)移指令中bit位單元的8位地址,位尋址區(qū)的直接尋址位,表示片內(nèi)RAM中可尋址位和SFR中可尋址位的位單元的內(nèi)容只有“0”和“1”兩種狀態(tài),作為源操作數(shù)在注釋和說明時不加括號(X)X是一個地址,(X)是X地址單元中的內(nèi)容。(X)只用于對指令的注釋和說明((X))X是一個地址,X地址單元中的內(nèi)容作為地址指針,即(X)仍然是一個地址,((X))是(X)地址指針?biāo)赶虻牡刂穯卧械膬?nèi)容。((X))只用于對指令的注釋和說明→按箭頭指示方向傳送內(nèi)容,主要用于對指令的注釋和說明$當(dāng)前指令所在地址,用于無條件轉(zhuǎn)移指令中/在位單元之前,表示該位狀態(tài)取反參與操作,但位單元本身狀態(tài)不變,用于位操作指令中@間接尋址寄存器或基址寄存器的前綴,用于寄存器間接尋址和基址+變址尋址方式的指令中951單片機(jī)指令的操作數(shù)尋址方式主要有7種,分別為直接尋址、立即尋址、寄存器尋址、寄存器間接尋址、基址+變址尋址、位尋址、相對尋址。3.251單片機(jī)指令的尋址方式
1.直接尋址
直接尋址方式:指令中的源操作數(shù)是操作數(shù)的單元地址,該單元地址指出了參與運(yùn)算或傳送的數(shù)據(jù)所在的字節(jié)單元地址或位單元地址。
例如,已知(30H)=FFH,執(zhí)行指令:MOVA,30H ;A←(30H),執(zhí)行結(jié)果:(A)=FFH10
2.立即尋址
立即尋址方式:指令中含有立即數(shù),立即數(shù)作為源操作數(shù),即指令中的立即數(shù)以指令操作數(shù)的形式存放于程序存儲器中,為了與直接尋址指令中的直接地址相區(qū)別,需要在操作數(shù)前面加前綴標(biāo)志“#”;當(dāng)立即數(shù)是以字母開頭的數(shù)時,前面必須加0,如#0FEH。
例如,執(zhí)行指令:MOV A,#0FEH;A←FEH,A為目的操作數(shù),A中的內(nèi)容為FEHMOV DPTR,#8000H;DPTR←8000H,DPTR中的內(nèi)容為8000H11
3.寄存器尋址
寄存器尋址方式:指令中的源操作數(shù)是寄存器,源操作數(shù)的內(nèi)容存放在寄存器內(nèi)。寄存器尋址一般用于訪問選定的通用寄存器R0~R7,以及A、B和DPTR。源操作數(shù)和目的操作數(shù)均為寄存器尋址方式的指令都是單字節(jié)指令。
例如,執(zhí)行指令:MOVA,R0 ;A←(R0),指令中的R0為源操作數(shù),A為目的操作數(shù)INCR0;(R0)+1→R0,指令中的R0是源操作數(shù),也是目的操作數(shù)MOVA,30H;A←(30H),指令中的30H為源操作數(shù),A為目的操作數(shù)12
4.寄存器間接尋址
寄存器間接尋址:指令中的某一個寄存器的內(nèi)容作為操作數(shù)地址的尋址方式,即寄存器的內(nèi)容作為地址指針,操作數(shù)的單元地址是通過寄存器間接得到。
寄存器間接尋址方式中,必須在寄存器的名稱前面加前綴標(biāo)志“@”。訪問內(nèi)部RAM或外部數(shù)據(jù)存儲器和其它擴(kuò)展部件的低256個字節(jié)時,只能采用R0或R1作為間接尋址寄存器;訪問外部擴(kuò)展的64K單元地址空間和程序存儲器采用DPTR作為間接尋址寄存器。
例3–2
已知R0中存放片內(nèi)RAM地址65H,數(shù)據(jù)指針DPTR中存放片外RAM地址8000H,地址65H單元中的數(shù)據(jù)為30H,8000H單元中的數(shù)據(jù)為59H,執(zhí)行指令:MOVA,@R0;A←((R0)),執(zhí)行指令:(A)=30H,@R0為源操作數(shù)MOVXA,@DPTR;A←((DPTR)),執(zhí)行指令:(A)=59H13寄存器間接尋址的尋址范圍如下:51單片機(jī)片內(nèi)RAM的低128B單元,52單片機(jī)片內(nèi)RAM的256B單元,應(yīng)
用R0和R1作為間接尋址寄存器。(2)
片外擴(kuò)展的64KB單元地址空間:使用DPTR作為間接尋址寄存器。如果P2口輸出的高8位地址值是一個確定地址值,也可以使用R0和R1作為間接尋址寄存器。例3–3
已知片外RAM的0118H中的內(nèi)容為58H,執(zhí)行指令:MOVP2,#01H;設(shè)置51單片機(jī)地址總線的高8位地址為01HMOVR0,#18H;設(shè)置51單片機(jī)地址總線的低8位地址為18HMOVXA,@R0;A←((R0)+0100H)=(0118H),(A)=58H(3)
程序存儲器:使用DPTR作為間接尋址寄存器。(4)
片外擴(kuò)展的低256B單元地址空間:可以使用DPTR、R0和R1作為間接尋址寄存器;或只擴(kuò)展256B單元,使用R0和R1作為間接尋址寄存器。(5)
堆棧區(qū):以堆棧指針SP作為間接尋址寄存器。14
5.基址+變址尋址方式
基址+變址尋址方式:指令中有操作數(shù)@A+PC或@A+DPTR,程序計數(shù)器PC或數(shù)據(jù)指針DPTR作為基址寄存器,累加器A作為變址寄存器,基址寄存器和變址寄存器的內(nèi)容相加形成讀取程序存儲器數(shù)據(jù)的16位地址,用于訪問程序存儲器中的數(shù)據(jù)表格。
例3–4
執(zhí)行指令:MOVCA,@A+PC ;((A)+(PC))→A,@A+PC為源操作數(shù)MOVCA,@A+DPTR ;((A)+(DPTR))→A,@A+DPTR為源操作數(shù)15
6.位尋址51單片機(jī)有一個布爾處理機(jī),可以對8位字節(jié)中的位單元進(jìn)行操作。位尋址方式:對位單元的尋址。
除了位判斷轉(zhuǎn)移指令外,位操作指令的源操作數(shù)和目的操作數(shù)都是位單元。
例3–5
執(zhí)行指令:MOVC,40H;該指令的功能是把40H位單元中的狀態(tài)送進(jìn)位位CySETBTR0;該指令的功能是把TR0位單元中的狀態(tài)置為“1”狀態(tài)
位尋址的尋址范圍如下。
(1)
片內(nèi)RAM中的位尋址區(qū)。位單元地址范圍:00H~7FH(2)
可位尋址的特殊功能寄存器??梢灾苯邮褂梦粏卧姆?,比如第2條
指令中的TR0,參見第2章表2–7的特殊功能寄存器中的位單元地址分
布。167.相對尋址
相對尋址用于訪問程序存儲器,只出現(xiàn)在轉(zhuǎn)移指令中。以PC的當(dāng)前值加上指令中給出的相對偏移量(rel)形成轉(zhuǎn)移地址。其中,rel是一個帶符號的8位二進(jìn)制數(shù),以補(bǔ)碼形式置于操作碼之后存放。程序的轉(zhuǎn)移范圍以PC當(dāng)前值為中心,介于–128~+127之間。
例如,執(zhí)行指令: JCrel
設(shè)rel=85H,Cy=1,這是一條以Cy狀態(tài)為條件的轉(zhuǎn)移指令,指令為兩字節(jié)指令,CPU取出第二個字節(jié)時,PC當(dāng)前值為原PC值加2。由于Cy=1,程序轉(zhuǎn)向(PC)+2+rel程序存儲器的目的地址單元去執(zhí)行。注意,此時rel=85H為負(fù)值。17
按照指令的功能分類,51單片機(jī)指令系統(tǒng)的111條指令分為數(shù)據(jù)傳送類指令、算術(shù)運(yùn)算類指令、邏輯運(yùn)算類指令、控制轉(zhuǎn)移類指令、位操作類指令。3.351單片機(jī)的指令集3.3.1數(shù)據(jù)傳送類指令
數(shù)據(jù)傳輸類指令又可分為:單片機(jī)內(nèi)部數(shù)據(jù)的傳送指令;
累加器A與片外RAM或外部擴(kuò)展接口部件的數(shù)據(jù)傳送指令;
查表指令。
18
1.內(nèi)部數(shù)據(jù)的傳送指令
(1)
以累加器A為目的操作數(shù)的指令,即累加器A為目的地址單元3.3.1數(shù)據(jù)傳送類指令例3–6
將立即數(shù)35H送入片內(nèi)30H單元,可執(zhí)行以下指令:MOVA,#35H;累加器A為目的地址單元,35H→AMOVR0,#30H;R0為目的地址單元,30H→R0MOV@R0,A;@R0為目的地址單元,(R0)=30H,(30H)→A
也可執(zhí)行以下這一條指令達(dá)到目的:MOV30H,#35H;35H→30H
(2)
以寄存器Rn為目的操作數(shù)的指令
例3–7若(A)=20H,(20H)=F0H,執(zhí)行以下指令:MOVR0,A ;(R0)=20HMOVR0,20H ;(R0)=F0HMOVR6,#0A5H ;(R6)=A5H19(3)
以直接地址為目的操作數(shù)的指令例3–8設(shè)66H單元中的內(nèi)容為EAH,執(zhí)行下面指令:MOV36H,#66H ;66H→36H,(36H)=66HMOVR1,36H;(36H)→R1,(R1)=66HMOV7EH,@R1 ;((R1))→7EH,(7EH)=(66H)=EAHMOV38H,7EH ;(7EH)→38H,(38H)=(7EH)=EAH(4)以寄存器間接地址為目的操作數(shù)的指令例3–9若(A)=20H,(R0)=42H,(32H)=46H,(42H)=52H,執(zhí)行以下指令:MOV@R0,A ;((R0))=(42H)=(A)=20H,42H單元的內(nèi)容被刷新MOV@R0,32H;((R0))=(42H)=(32H)=46H,42H單元的內(nèi)容被刷新MOV@R0,#0D5H ;((R0))=(42H)=D5H,42H單元的內(nèi)容被刷新3.3.1數(shù)據(jù)傳送類指令20
(5)
16位數(shù)據(jù)傳送指令MOVDPTR,#data16;立即尋址,16位地址值data16→DPTR ;16位地址值高8位送DPH,低8位送DPL這是51單片機(jī)中唯一的一條16位數(shù)據(jù)傳送指令。例3–10執(zhí)行指令: MOVDPTR,#1234H;DPH←12H,DPL←34H,(DPTR)=1234H
(6)堆棧操作指令PUSH、POP
堆棧操作:通過堆棧指針SP來實(shí)現(xiàn),分為入棧操作和出棧操作,先進(jìn)后出。51單片機(jī)開機(jī)或復(fù)位后(SP)=07,一般需要重新設(shè)定SP的初始值,
SP的內(nèi)容:棧頂?shù)奈恢?地址)。
兩條堆棧指令:進(jìn)棧指令;出棧指令。21
例3–11
已知(A)=10H,(B)=40H,執(zhí)行指令: MOVSP,#30H ;設(shè)置堆棧指針初值:(SP)=30H, PUSHACC;①SP←(SP)+1,(SP)=31H;②((SP))=(31H)=(A)=10H PUSHB ;①SP←(SP)+1,(SP)=32H;②((SP))=(32H)=(B)=40H POP ACC ;①(SP)=(32H)=40H→A;②(SP)=(SP)–1,(SP)=31HPOP B ;①(SP)=(31H)=10H→B;②(SP)=(SP)–1,(SP)=30H
22(7)
字節(jié)交換指令和半字節(jié)交換指令例3–12已知(A)=80H,(R0)=28H,(28H)=36H,執(zhí)行指令: XCHA,@R0;((R0))?(A),(R0)=28H,28H單元和A互相交換數(shù)據(jù);使得(A)=36H,((Ri))=(28H)=80H SWAPA;(A[D3~D0])?(A[D7~D4]),使得(A)=63H例3–13已知(A)=80H,(R0)=08H,(08H)=36H,執(zhí)行指令:XCHDA,@R0;((R0))=(08H)=36H的低4位與(A)=80H的低4位交換,;使得(08H)=30H,(A)=86HSWAPA ;(A)=86H的高半字節(jié)8和低半字節(jié)6交換,使得(A)=68H23
51單片機(jī)應(yīng)用系統(tǒng)擴(kuò)展的片外RAM和外部接口部件只能夠通過累加器A進(jìn)行數(shù)據(jù)傳輸,而不能夠與51單片機(jī)內(nèi)部RAM、其它特殊功能寄存器直接進(jìn)行數(shù)據(jù)傳輸。例3–14已知(DPTR)=2000H,(2000H)=10H,執(zhí)行指令:MOVXA,@DPTR;A←((DPTR))=(2000H),(A)=10H例3–15已知(P2)=20H,(R1)=48H,(A)=60H,執(zhí)行指令:MOVX@R1,A ;(R1)+2000H←(A),則片外(2048H)=60H2.累加器A與片外RAM或外部擴(kuò)展接口部件的數(shù)據(jù)傳送指令24只有兩條查表指令,均采用基址+變址尋址方式,單字節(jié)指令,用于讀取程序存儲器中的數(shù)據(jù)。
例3–16
設(shè)(A)=30H,執(zhí)行指令:
MOVCA,@A+PC
若該指令的單元地址為1000H,則下一條指令單元的地址為1001H,執(zhí)行該條指令將(A)+(PC)=1031H作為地址指向程序存儲器,將程序存儲器1031H單元的內(nèi)容→累加器A。
例3–17
設(shè)(DPTR)=8200H,(A)=30H,執(zhí)行指令:
MOVCA,@A+DPTR
;(A)+(DPTR)=8230H,將程序存儲器的(8230H)→A
建議同學(xué)們首選查表指令:MOVCA,@A+DPTR;
DPTR:表格的首地址;
累加器A:變址3.查表指令
25
算術(shù)運(yùn)算指令:加、減、乘、除法指令,以及加1和減1指令,共有24條指令。大多數(shù)指令都以累加器A作為一個源操作數(shù)和目的操作數(shù),另一個源操作數(shù)可以存放于任何一個工作寄存器Rn或片內(nèi)RAM單元中,也可以是一個立即數(shù),運(yùn)算結(jié)果存放在目的操作數(shù)累加器A中。3.3.2算術(shù)運(yùn)算指令
261.加法指令(1)不帶進(jìn)位的加法指令例3–18設(shè)(A)=45H,(R0)=20H,(20H)=ADH,執(zhí)行指令: ADDA,@R0;,結(jié)果:(A)=F2H,Cy=0,AC=1,OV=0,P=1(2)
帶進(jìn)位的加法指令例3–19設(shè)(A)=85H,(20H)=FFH,Cy=1,執(zhí)行指令: ADDCA,20H;10000101+11111111+1=[1]10000101,產(chǎn)生進(jìn)位1結(jié)果:(A)=85H,Cy=1,AC=1,OV=0,P=127
(3)
加1指令
例3–20設(shè)(A)=FFH,(R3)=0FH,(30H)=E2H,(R0)=40H,(40H)=AAH,
執(zhí)行指令:
INC A;FFH+1→A,(A)=00H,PSW的P狀態(tài)設(shè)置為0
INC R3;0FH+1→R3,(R3)=10H,PSW狀態(tài)不變
INC@R0;((R0))=(40H),AAH+1→40H,(40H)=ABH,PSW狀態(tài)不變
(4)十進(jìn)制調(diào)整指令
計算機(jī)的運(yùn)算以二進(jìn)制為基礎(chǔ),對于十進(jìn)制BCD碼相加應(yīng)用ADD和ADDC指令的運(yùn)算結(jié)果都是二進(jìn)制數(shù),要得到正確的十進(jìn)制數(shù)運(yùn)算結(jié)果,就必須應(yīng)用十進(jìn)制調(diào)整指令。
DA A;十進(jìn)制調(diào)整指令,必須應(yīng)用在ADD或ADDC指令的后面
十進(jìn)制調(diào)整指令執(zhí)行后,程序狀態(tài)字(PSW)中的進(jìn)位標(biāo)志位(Cy)表示結(jié)果的百位值。28
例3–21(A)=56H,(30H)=77H,編程實(shí)現(xiàn)BCD碼56+77的運(yùn)算。執(zhí)行指令:
ADDA,30H;(A)+(30H)=56H+77H=CDH
DAA;個位數(shù)為DH,DH+6=3,進(jìn)位1
;十位數(shù)為CH,CH+6+1=3,進(jìn)位1→Cy
MOVR0,A ;把和的低字節(jié)的十位數(shù)和個位數(shù)存入R0
CLRA;0→A
ADDCA,#00 ;百位數(shù):0+Cy→A
MOVR1,A ;和的高字節(jié)的百位數(shù)存入R1
運(yùn)算結(jié)果為133,并將其十進(jìn)制BCD碼存放在R1R0中,R1為01H,R0為33H29
(1)
減法指令
減法指令:只有帶借位的減法指令。在進(jìn)行減法操作時,如果運(yùn)算結(jié)果產(chǎn)生借位,Cy置1,無借位清0;如果D3位需借位,則將輔助進(jìn)位標(biāo)志位AC置1,否則將AC清0;如果D7需借位而D6位不借位或D6位借位而D7位不借位,則將溢出標(biāo)志位OV置1,否則清0;奇偶標(biāo)志位P隨著累加器A中1的個數(shù)而變化。
例3–22
設(shè)(A)=76H,立即數(shù)為C5H,Cy=0,執(zhí)行指令:
SUBB A,#0C5H;
結(jié)果:(A)=B1H,Cy=1,AC=0,OV=1,P=02.減法指令30(2)
減1指令例3–23
設(shè)(A)=0EH,(30H)=00H,(R1)=70H,(70H)=FFH。執(zhí)行指令:
DECA ;A←(A)–1,(A)=0DH,P=1,不影響其它標(biāo)志
DEC30H;30H←(30H)–1,(30H)=FFH,PSW狀態(tài)不變
DEC@R1;(R1)←((R1))–1,(70H)=FEH,PSW狀態(tài)不變31
乘法和除法指令:只能夠?qū)蓚€8位無符號數(shù)進(jìn)行乘法和除法運(yùn)算。MULAB這條指令對Cy、OV和P三個標(biāo)志位產(chǎn)生影響。如果乘積大于255(FFH),溢出標(biāo)志OV置1,否則OV清0。進(jìn)位標(biāo)志Cy總是清0,P隨著A中1的個數(shù)而變化。例3–24設(shè)(A)=4EH,(B)=5DH,執(zhí)行指令:MULAB;運(yùn)算結(jié)果:(B)=1CH,(A)=56H,即乘積結(jié)果(BA)=1C56H執(zhí)行DIVAB這條指令之前,如果原來B中的內(nèi)容為0,即除數(shù)為0,執(zhí)行結(jié)果A和B中的內(nèi)容不定,并將溢出標(biāo)志OV置1,在其它情況下,OV被復(fù)位為0,表示除法操作是合理的。進(jìn)位標(biāo)志Cy總是清0。
例3–25設(shè)(A)=BFH,(B)=32H,執(zhí)行指令:DIVAB;運(yùn)算結(jié)果:(A)=03H,(B)=29H,Cy=0,OV=03.乘法和除法指令32
邏輯運(yùn)算指令:兩個8位二進(jìn)制數(shù)按位進(jìn)行與、或、異或的邏輯運(yùn)算,以及對累加器A的內(nèi)容清0和按位取反操作。
移位類指令:累加器A的循環(huán)移位操作,包括左移一位、右移一位,以及帶進(jìn)位標(biāo)志位與不帶進(jìn)位標(biāo)志位移位的方式。兩類指令共有24條。3.3.3邏輯運(yùn)算及移位類指令331.邏輯與指令A(yù)NL指令助記符操作說明指令助記符操作說明指令助記符操作說明ANLA,RnA←(A)∧(Rn)ANLA,directA←(A)∧(direct)ANLA,@RiA←(A)∧((Ri))ANLA,#dataA←(A)∧dataANLdirect,Adirect←(direct)∧(A)ANLdirect,#datadirect←(direct)∧data2.邏輯或指令ORL指令助記符操作說明指令助記符操作說明指令助記符操作說明ORLA,RnA←(A)∨(Rn)ORLA,directA←(A)∨(direct)ORLA,@RiA←(A)∨((Ri))ORLA,#dataA←(A)∨dataORLdirect,Adirect←(direct)∨(A)ORLdirect,#datadirect←(direct)∨data3.邏輯異或指令XRL指令助記符操作說明指令助記符操作說明指令助記符操作說明XRLA,RnA←(A)⊕(Rn)XRLA,directA←(A)⊕(direct)XRLA,@RiA←(A)⊕((Ri))XRLA,#dataA←(A)⊕dataXRLdirect,Adirect←(direct)⊕(A)XRLdirect,#datadirect←(direct)⊕data34
在使用中,邏輯與:實(shí)現(xiàn)對指定位清0,其余位不變;
邏輯或:實(shí)現(xiàn)對指定位置1,其余位不變;
邏輯異或:實(shí)現(xiàn)指定位取反,其余位不變。
例3–29
根據(jù)要求寫指令(1)
對累加器A的D1、D3、D5位清0,其余位不變:ANLA,#0D5H;D5H=11010101,D1、D3、D5位為0(2)
對累加器A中的D2、D4、D6位置1,其余位不變:ORA,#54H;54H=01010100,D2、D4、D6位為1(3)
對累加器A中的D0、D1位取反,其余位不變:XRLA,#03H;03H=00000011,D0、D1位為1354.清零和求反指令
51單片機(jī)只有清零指令CLRA和求反指令CPLA是字節(jié)指令,其它清零和求反指令都是位操作指令。
例3–30
對R0中的內(nèi)容取反:
MOVA,R0CPL AMOVR0,A5.循環(huán)移位指令(a)RLA(b)RRA(c)RLCA(d)RRCA36
控制轉(zhuǎn)移類指令:主要用于循環(huán)結(jié)構(gòu)和分支結(jié)構(gòu)程序,共有17條指令,包括無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、子程序調(diào)用和返回指令,以及空操作指令。
執(zhí)行控制轉(zhuǎn)移類指令將修改程序計數(shù)器PC的值,使程序從PC新指向的程序存儲器地址存儲單元開始執(zhí)行程序,即實(shí)現(xiàn)了程序的轉(zhuǎn)移。3.3.4控制轉(zhuǎn)移類指令1.無條件轉(zhuǎn)移指令指令助記符操作說明指令助記符操作說明LJMPaddr16PC←addr16AJMPaddr11PC[D10~D0]←addr11SJMPrelPC←PC+2+relJMP@A+DPTRPC←(A)+(DPTR)2.條件轉(zhuǎn)移指令
條件轉(zhuǎn)移指令是指當(dāng)條件滿足時,程序轉(zhuǎn)移到指定的目的地址;條件不滿足時,程序?qū)㈨樞驁?zhí)行。在51單片機(jī)中,條件轉(zhuǎn)移指令有3種:對累加器A判0或判非0條件轉(zhuǎn)移指令、比較轉(zhuǎn)移指令,以及減1不為0轉(zhuǎn)移指令。37(1)對累加器A判0和判非0條件轉(zhuǎn)移指令指令助記符操作說明指令助記符操作說明JZrel若A=0,則轉(zhuǎn)移,否則,順序執(zhí)行JNZrel若A≠0,則轉(zhuǎn)移,否則,順序執(zhí)行(2)比較不相等轉(zhuǎn)移指令指令助記符操作說明CJNEA,direct,rel若(A)=(direct),順序執(zhí)行,否則轉(zhuǎn)移;如果(A)>(direct),Cy←0;否則,Cy←1CJNEA,#data,rel若(A)=data,順序執(zhí)行,否則轉(zhuǎn)移;如果(A)>data,Cy←0;如果(A)<data,Cy←1CJNERn,#data,rel若(Rn)=data,順序執(zhí)行,否則轉(zhuǎn)移;如果(Rn)>data,Cy←0;如果(Rn)<data,Cy←1CJNE@Ri,#data,rel若((Ri))=data,順序執(zhí)行,否則轉(zhuǎn)移;如果((Ri))>data,Cy←0;否則,Cy←1(3)減1不為0轉(zhuǎn)移指令指令助記符操作說明DJNZRn,rel若(Rn)–1=0,則順序執(zhí)行;如果(Rn)–1≠0,則轉(zhuǎn)移DJNZdirect,rel若(direct)–1=0,則順序執(zhí)行;如果(direct)–1≠0,則轉(zhuǎn)移383.子程序調(diào)用與返回指令指令助記符操作說明LCALLaddr16將該指令的下一條指令地址壓入堆棧,然后PC←addr16,addr16為子程序人口地址ACALLaddr11將該指令的下一條指令地址壓入堆棧,然后PC←addr11,PC的高5位(D15~D11)不變RET執(zhí)行LCALLaddr16或ACALLaddr11指令壓入堆棧的16位指令地址出?!鶳CRETI將響應(yīng)中斷時壓入堆棧的16位指令地址出?!鶳C,清內(nèi)部中斷優(yōu)先級標(biāo)志4.空操作指令
NOP
該指令經(jīng)取指、譯碼后不進(jìn)行任何操作(空操作),占用一個機(jī)器周期的時間。39
位操作指令:進(jìn)位標(biāo)志位Cy作為位累加器,位地址可用以下方式表示。(1)
直接用位地址表示方式,如20H、D4H。(2)
采用字節(jié)地址加位的方式表示,兩者之間用“.
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國城市公共汽車客運(yùn)行業(yè)發(fā)展前景及投資規(guī)劃研究報告版
- 2024-2030年中國地毯行業(yè)競爭格局及未來投資趨勢分析報告
- 2024-2030年中國國際貨代行業(yè)未來發(fā)展趨勢及投資風(fēng)險分析報告
- 2024年度物聯(lián)網(wǎng)(IoT)設(shè)備控制系統(tǒng)軟件開發(fā)合同技術(shù)集成與擴(kuò)展2篇
- 茂名職業(yè)技術(shù)學(xué)院《國學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年深圳子女撫養(yǎng)權(quán)協(xié)議書樣本3篇
- 中國日報2019年9月25日
- 馬鞍山職業(yè)技術(shù)學(xué)院《美術(shù)基礎(chǔ)與欣賞》2023-2024學(xué)年第一學(xué)期期末試卷
- 呂梁學(xué)院《信息安全綜合》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年度醫(yī)院護(hù)工工作環(huán)境與職業(yè)健康保護(hù)協(xié)議下載3篇
- 《高效能人士的七個習(xí)慣》PPT演講模板
- 布雷頓森林體系課件
- 滬教版三年級下冊課件銀色的樺樹林 (共17張PPT)
- 讀書分享-《傾聽幼兒-馬賽克方法》
- 六年級上冊數(shù)學(xué)期末總復(fù)習(xí)課件
- 人美版高中美術(shù)必修“美術(shù)鑒賞”第二單元主題三《現(xiàn)實(shí)與理想-西方古典繪畫》說課稿
- 采用新工藝新技術(shù)新設(shè)備新材料BIM等的程度
- 獨(dú)領(lǐng)風(fēng)騷的古代技術(shù)創(chuàng)造
- 國開2023春幼兒文學(xué)形考任務(wù)1~4參考答案
- 2023年湖南長沙仲裁委員會招考聘用筆試題庫含答案詳解
- 實(shí)用俄語會話知到章節(jié)答案智慧樹2023年山東交通學(xué)院
評論
0/150
提交評論