版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
2023/2/51第3章 指令系統(tǒng)
《單片機原理與應用系統(tǒng)設計》
電子工業(yè)出版社,2009.72023/2/52
本章主要內(nèi)容MCS-51單片機指令概述
7種尋址方式分類介紹89S51單片機的指令系統(tǒng)
2023/2/53
3.1MCS-51單片機指令概述
指令格式
符號說明
2023/2/54
3.1.1指令格式指令的基本格式
:
例如,工作寄存器向累加器傳送數(shù)據(jù)指令
匯編語言指令為:MOVA,Rn;A為目的操作數(shù),Rn為源操作數(shù)
機器碼指令為:11101rrr ;rrr=000~111,分別表示R0~R7
2023/2/55
3.1.2符號說明在編寫匯編語言源程序時,字母符號是不區(qū)分大小寫的。在本書中,匯編語言源程序一般采用大寫字母。匯編語言源程序符號說明
請參見教材第42頁。2023/2/56
3.2尋址方式
尋找操作數(shù)或指令的地址的方式稱為尋址方式。
寄存器尋址方式直接尋址方式寄存器間接尋址方式立即尋址方式變址尋址方式相對尋址方式位尋址方式2023/2/57
3.2.1寄存器尋址方式寄存器尋址時,指令中的操作數(shù)為某一寄存器的內(nèi)容,指定了寄存器,也就指定了操作數(shù)。
寄存器包括:
⑴工作寄存器R0~R7
⑵部分特殊功能寄存器,A、B、DPTR等
例如, MOVA,Rn;A←(Rn),n=0~7
2023/2/58
3.2.2直接尋址方式1.操作數(shù)直接以單元地址的形式給出:
MOVA,30H
;A←(30H)
2.尋址范圍只限于片內(nèi)RAM
:
⑴低128個存儲單元,8-bit二進制數(shù)表示地址。
⑵特殊功能寄存器,用直接地址或稱號表示。
例如:MOVA,80H與MOVA,P0是等價的。2023/2/59
3.2.3寄存器間接尋址方式
寄存器中存放的是操作數(shù)的地址在寄存器的名稱前面加前綴標志“@”
訪問內(nèi)部RAM或外部數(shù)據(jù)存儲器的低256個字節(jié)時,只能采用R0或R1作為間址寄存器。例如:
MOVR1,#40HMOVA,@R1;把內(nèi)部RAM中地址為40H單元內(nèi)容送A。2023/2/510
尋址范圍:(1)訪問內(nèi)部RAM區(qū),51系列128個字節(jié),52系列256個字節(jié),用R0或R1間接尋址,其通用形式為:
MOVA,@Ri(2)訪問片外數(shù)據(jù)存儲器的低256字節(jié),用R0或R1間接尋址,其通用形式為:
MOVXA,@Ri(3)對片外數(shù)據(jù)存儲器的64K字節(jié)的間接尋址,用DPTR作間址寄存器。例如:
MOVXA,@DPTR(4)堆棧區(qū)堆棧操作指令PUSH(壓棧)和POP(出棧)使用堆棧指針(SP)作間址寄存器2023/2/511
3.2.4立即尋址方式
操作數(shù)在指令中直接給出,需在操作數(shù)前面加前綴“#”,若立即數(shù)的首位為A~F,前面還要加零。例如:
MOVA,#40HMOVA,#0FFH
MOVDPTR,#5678H
;DPH←#56H,DPL←#78H2023/2/512
3.2.5變址尋址方式1.變址尋址方式是以程序計數(shù)器PC或數(shù)據(jù)指針DPTR作為基址寄存器,以累加器A作為變址寄存器,它們兩者內(nèi)容之和為有效地址。
數(shù)據(jù)地址=基地址+偏移量。2.尋址范圍:
程序存儲器空間。
3.變址尋址方式的指令只有3條:
⑴MOVCA,@A+DPTR ;查表指令
⑵MOVCA,@A+PC ;查表指令
⑶JMP @A+DPTR ;散轉指令2023/2/513
3.2.6相對尋址方式
在相對尋址的轉移指令中,給出了地址偏移量,以“rel”表示,即把PC的當前值加上偏移量就構成了程序轉移的目的地址:
目的地址=轉移指令所在的地址+轉移指令的字節(jié)數(shù)+rel
偏移量rel是一帶符號的8位二進制數(shù)補碼數(shù)。范圍是:–128~+1272023/2/514
3.2.7位尋址方式
51系列單片機有位處理功能,可以對數(shù)據(jù)位進行操作,例如:MOVC,40H;把位40H的值送到位累加器C。尋址范圍包括:(1)內(nèi)部RAM中的位尋址區(qū)。(2)特殊功能寄存器中的可尋址位。2023/2/515
特殊功能寄存器可尋址位在指令中有如下4種的表示方法:
a.直接使用位地址
SETB0D5Hb.位名稱的表示方法
SETBF0c.特殊功能寄存器符號加位數(shù)的表示方法
SETBPSW.5d.單元地址加位數(shù)的表示方法
SETB(0D0H).52023/2/516
操作數(shù)尋址方式和有關空間2023/2/517
符號注釋Rn(n=0-7):當前選中的工作寄存器組R0-R7。Ri(I=0,1):作為地址指針的兩個工作寄存器R0,R1。#data:8位立即數(shù)。#data16:16位立即數(shù)。direct:8位片內(nèi)RAM單元(包括SFR)的直接地址。addr11:11位目的地址,用于ACALL和AJMP指令中。addr16:16位目的地址。用于LCALL和LJMP指令中。rel:補碼表示的8位地址偏移量。范圍:-128-+127D。bit:片內(nèi)RAM或SFR的直接尋址位地址。@:間接寄存器的符號。/:位操作指令中對該位先取反再參與操作,不影響原值。(×):×中的內(nèi)容。((×)):×指出的地址單元中的內(nèi)容?!褐噶畈僮髁鞒谭较?。2023/2/5183.389S51單片機的指令系統(tǒng)按操作功能分類:
1.數(shù)據(jù)傳送類指令(29條)
2.算術運算類指令(24條)
3.邏輯運算及移位類指令(24條)
4.控制轉移類指令(17條)
5.位操作類指令(17條)按指令字節(jié)分類:
1.單字節(jié)指令(49條)
2.雙字節(jié)指令(45條)
3.三字節(jié)指令(17條)
按指令執(zhí)行時間分類:
1.單周期指令(64條)
2.雙周期指令(45條)
3.四周期指令(2條)
2023/2/519
指令學習要點了解指令的操作了解指令的尋址方式了解指令對程序狀態(tài)字的影響合理使用指令2023/2/520
3.3.1數(shù)據(jù)傳送類指令語句格式:
MOV<目的操作數(shù)>,<源操作數(shù)>
屬“復制”性質(zhì),而不是“搬家”
在傳送指令中,有從右向左傳送數(shù)據(jù)的約定,即指令的右邊操作數(shù)是源操作數(shù),表達的是數(shù)據(jù)的來源,而左邊的操作數(shù)是目的操作數(shù),表達的是傳送數(shù)據(jù)的目的地址。源操作數(shù):累加器A、工作寄存器Rn、直接地址direct、間址寄存器、立即數(shù)。目的操作數(shù):累加器A、工作寄存器Rn、直接地址direct、間址寄存器。
除了奇偶標志位P外,數(shù)據(jù)傳送類指令一般不影響程序狀態(tài)字PSW的其他標志位,當然,直接訪問PSW的指令除外。2023/2/521
8位傳送
#data不能用作目的字節(jié);源字節(jié)與目的字節(jié)不相同(除direct外);寄存器與寄存器、寄存器間址之間不相互傳送。傳送關系目的源操作數(shù)AARnRndirectdirect@Ri@Ri#data一般傳送指令2023/2/522
片內(nèi)數(shù)據(jù)存儲器的數(shù)據(jù)傳送示意圖2023/2/523
以A為目的
例:若(R1)=20H,(20H)=55H
執(zhí)行
MOVA,@R1MOVA,Rndirect@Ri#data結果:(A)=55H。2023/2/524
以Rn
為目的
例:若(50H)=40H
執(zhí)行
MOVR6,50H
MOVRn,Adirect#data結果:(R6)=40H。2023/2/525
以direct
為目的
例:若(R1)=50H,(50H)=18H
執(zhí)行MOV40H,@R1
結果:(40H)=18H。
MOVdirect,Rndirect1@Ri#dataAdirect指的是內(nèi)部RAM或SFR的地址2023/2/526
以@Ri為目的
例:若(R1)=30H,(A)=20H
執(zhí)行MOV@R1,A結果:(30H)=20HMOV@Ri,Adirect#data2023/2/527
16位傳送
將源操作數(shù)data16(通常是地址常數(shù))送入目的操作數(shù)DPTR中。例如:
MOVDPTR,#1234H
結果為:
(DPH)=12H,(DPL)=34H。2023/2/528
例:MOVA,#30H MOV4FH,A MOVR0,#20H MOV@R0,4FH MOV21H,20H習題:用兩種尋址方式實現(xiàn),將片內(nèi)RAM60H單元的數(shù)據(jù)傳送給累加器A。解:MOVA,#60H(×)MOVR0,#60H(√)
MOVA,@R0;A=30H;(4FH)=30H;R0=20H;(20H)=30H;(21H)=30HMOVR0,60HMOVA,@R0
(×)
解:MOVA,60H
(√)
結果A=32H順序執(zhí)行下列指令序列,求每一步執(zhí)行結果。2023/2/529
說明:
只有指令表中的指令才有對應指令代碼,計算機才能執(zhí)行。編程時,不能隨意創(chuàng)造發(fā)明指令。1.一條指令中不能同時出現(xiàn)兩個工作寄存器:
非法指令: MOVR1,R2
MOVR2,@R02.間址寄存器只能使用R0、R1。
非法指令:MOVA,@R23.SFR區(qū)只能直接尋址,不能用寄存器間接尋址。
非法指令:MOVR0,#80H
MOVA,@R04.指令表(P309):B:指令字節(jié)數(shù),M:機器周期數(shù)2023/2/530
ROM查表
2.MOVCA,@A+PC
以PC的當前值與偏移量之和作為程序存儲器地址,將該地址單元的內(nèi)容傳送到A。指令執(zhí)行后PC的內(nèi)容不變。
特殊傳送指令1.MOVCA,@A+DPTR
以DPTR與偏移量之和作為程序存儲器地址,將該地址單元的內(nèi)容傳送到A。指令執(zhí)行后DPTR的內(nèi)容不變。2023/2/531
程序存儲器數(shù)據(jù)傳送示意圖2023/2/532
【例1】:(A)=30H,執(zhí)行地址1000H處的指令1000H:MOVCA,@A+PC
本指令占用一個字節(jié),執(zhí)行結果將程序存儲器中1031H的內(nèi)容送入A。缺點:表格只能存放在該條查表指令后面的256個單元之內(nèi),表格的大小受到限制,且表格只能被一段程序所利用?!纠?】:(DPTR)=8100H(A)=40H執(zhí)行指令MOVCA,@A+DPTR
本指令的執(zhí)行結果只和指針DPTR及累加器A的內(nèi)容有關,與該指令存放的地址及常數(shù)表格存放的地址無關,因此表格的大小和位置可以在64K程序存儲器中任意安排,一個表格可以為各個程序塊公用。2023/2/533
片外數(shù)據(jù)存儲器數(shù)據(jù)傳送示意圖2023/2/534
讀寫片外RAM
1.讀片外RAMMOVXA,@DPTRMOVXA,@Ri2.寫片外RAM
MOVX@DPTR,AMOVX@Ri,A2023/2/535
例:實現(xiàn)片外數(shù)據(jù)存儲器數(shù)據(jù)傳送(2000H)?(2100H)。
MOVDPTR,#2000H MOVXA,@DPTR MOVDPTR,#2100H MOVX@DPTR,A習題:將片外RAM0000H單元的數(shù)據(jù)傳送到片內(nèi)RAM的60H單元。
;DPTR=2000H
;A=X
;DPTR=2100H
;(2100H)=X片外數(shù)據(jù)存儲器不能直接尋址。下列為非法指令:
MOVXA,2000HMOVX2100H,2000HDPTRX2023/2/536
堆棧操作3.操作
PUSHdirectPOPdirect1.原則:向地址高端生長,后進先出2.SP:指向棧頂(活動端),復位值07H例:若(SP)=07H,(40H)=88H
執(zhí)行PUSH40H結果:(SP)=08H,(08H)=88H。2023/2/537
[例1]:當(SP)=60H,(A)=30H,(B)=70H時,執(zhí)行:PUSHACC;(SP)+1=61H→SP,(A)→61HPUSHB;(SP)+1=62H→SP,(B)→62H
結果:(61H)=30H,(62H)=70H,(SP)=62H[例2]:當(SP)=62H,(62H)=70H,(61H)=30H,執(zhí)行:POPDPH;((SP))→DPH,(SP)-1→SPPOPDPL;((SP))→DPL,(SP)-1→SP
結果:(DPTR)=7030H,(SP)=60H2023/2/538
數(shù)據(jù)交換例:若(R0)=80H,(A)=20H。 執(zhí)行XCHA,R0交換類指令,傳送是雙向的1.字節(jié)交換XCHA,Rndirect@Ri結果:(A)=80H,(R0)=20H。2023/2/539
2.半字節(jié)交換
例1:若(R0)=30H,(30H)=67H,(A)=20H。執(zhí)行XCHDA,@R0后,(A)=27H,(30H)=60H。XCHDA,@RiSWAPA例2:若(A)=30H,執(zhí)行SWAPA后,(A)=03H。2023/2/540
3.3.2算術運算類指令89S51指令系統(tǒng)具有較強的加、減、乘、除四則運算功能,但只有8bits數(shù)據(jù)運算指令,沒有16bits數(shù)據(jù)運算指令。共有24條算術運算類指令。2023/2/541
算術運算類指令分類不帶進位加法指令帶進位加法指令帶借位減法指令加1指令減1指令二-十進制調(diào)整指令2023/2/542
與數(shù)據(jù)傳送指令不同,多數(shù)算術運算指令會影響標志位的狀態(tài),即CPU執(zhí)行算術運算指令后,根據(jù)數(shù)據(jù)操作情況自動設置標志位的狀態(tài)。
MCS-51的程序狀態(tài)字寄存器PSW
為標志寄存器。其格式如下:字節(jié)地址為D0H位序B7B6B5B4B3B2B1B0位符號CYACF0RS1RS0OVF1P2023/2/543
1.標志位(自動設置狀態(tài)):1)Cy:進位標志位 保存運算后最高位的進位/借位狀態(tài),當有進位/借位,Cy=1,否則Cy=0。2)AC:輔助進位標志位 保存低半字節(jié)的進位/借位狀態(tài),當D3產(chǎn)生進位/借位,AC=1,否則AC=0。用于十進制調(diào)整。3)OV:溢出標志位
OV=Cy7?Cy6,補碼運算產(chǎn)生溢出OV=1,否則OV=0。4)P:奇偶標志位 反映累加器A中數(shù)據(jù)的奇偶性。當1的個數(shù)為奇數(shù),P=1,否則P=0。2023/2/544
2.用戶選擇位(編程設置狀態(tài))1)F0、F1:用戶自定義標志位。
2)RS1、RS0:
工作寄存器區(qū)選擇位。
復位時,PSW=00H例:復位后,設置使用工作寄存器3區(qū),其余標志位不變。解:MOVPSW,#18H位序B7B6B5B4B3B2B1B0位符號CYACF0RS1RS0OVF1P2023/2/545
1.加法類指令
不帶進位加一個加數(shù)總是來自累加器A,而另一個加數(shù)可由不同的尋址方式得到。結果總是放在A中。影響:PSW的Cy、AC、OV、PADDA,Rndirect@Ri#data2023/2/546
使用加法指令時,要注意累加器A中的運算結果對各個標志位的影響:(1)如果位7有進位,則置“1”進位標志Cy,否則清“0”Cy(2)如果位3有進位,置“1”輔助進位標志Ac,否則清“0”Ac(Ac為PSW寄存器中的一位)(3)如果位6有進位,而位7沒有進位,或者位7有進位,而位6沒有,則溢出標志位OV置“1”,否則清“0”O(jiān)V。2023/2/547
【例1】(A)=53H,(R0)=FCH,執(zhí)行指令ADDA,R0結果:(A)=4FH,Cy=1,Ac=0,OV=0,
P=1(A中結果1的位數(shù)為奇數(shù))注意:上面的運算中,由于位6和位7同時有進位,所以標志位OV=0。2023/2/548
【例2】(A)=85H,(R0)=20H,(20H)=AFH,執(zhí)行指令:ADDA,@R0結果:(A)=34H,Cy=1,Ac=1,OV=1,P=1注意:由于位7有進位,而位6無進位,所以標志位OV=12023/2/549
【例3.2】片內(nèi)RAM單元40H、41H中分別存放被加數(shù)、加數(shù),相加結果存放到41H、40H單元。程序如下:
MOV R0,#40H ;設置地址指針
MOV A,@R0 ;取被加數(shù)
INC R0 ADD A,@R0 ;兩數(shù)相加
DEC R0 MOV @R0,A ;存放和的低8位
INC R0 JC CARRY MOV @R0,#0 ;相加結果無進位
RETCARRY:MOV @R0,#1 ;相加結果有進位
RET2023/2/550
帶進位加
注釋:
1.源操作數(shù)與A的內(nèi)容相加再與Cy相加,結果送入目的操作數(shù)A中。ADDCA,Rndirect@Ri#data2.Cy是在該指令執(zhí)行之前已存在的值。2023/2/551
【例1】(A)=85H,(20H)=FFH,Cy=1執(zhí)行指令:
ADDCA,20H結果:(A)=85H,Cy=1,Ac=1,OV=0,P=1注意:上面的運算中,由于位6和位7同時有進位,所以標志位OV=0。2023/2/552
十進制調(diào)整指令
注釋:
1.當A中低4位數(shù)出現(xiàn)了非BCD碼或低4位產(chǎn)生進位(AC=1),則在低4位加6。2.當A中高4位數(shù)出現(xiàn)了非BCD碼或高4位產(chǎn)生進位(Cy=1),則在高4位加6。
對A中剛進行的2個BCD碼加法的結果調(diào)整。
DAA3.調(diào)整后,Cy表示結果的百位值。
2023/2/553
適應條件:(1)該指令執(zhí)行前,一般有一條加法指令。(2)加法指令中的兩個加數(shù),應該是用壓縮BCD碼表示的十進制數(shù),和存放在A中。(3)執(zhí)行完DA指令后,A中存放的數(shù)是兩個加數(shù)的十進制和,也使用壓縮BCD碼表示。
若(A)=56h(R5)=67hADDA,R5DAA
結果(A)=23;Cy=12023/2/554
十進制加法指令:僅對加法結果進行調(diào)整 ADDA,源操作數(shù)
DAA帶進位十進制加1法指令:
ADDCA,源操作數(shù)
DAA作業(yè):BCD碼加法編程。 設X、Y為4位壓縮BCD碼,求Z=X+Y。BCD調(diào)整指令:BCD:Binary-Coded-Decimal(二進制編碼的十進制)
DAA ;把A中按二進制相加后的結果
調(diào)整成按BCD數(shù)相加的結果調(diào)整原因:1、相加結果大于9,進入無效編碼區(qū);
2、相加結果有進位,跳過無效編碼區(qū)。調(diào)整方法:進行加“6”修正。2023/2/555
【例3.3】試編寫4位BCD碼加法程序。設被加數(shù)存放在片內(nèi)RAM單元40H、41H中,加數(shù)存放在42H、43H單元中,相加后結果存放到分別存放被加數(shù)、加數(shù),相加結果存放到40H、41H單元中(假定數(shù)據(jù)是高位在前,低位在后,且假定相加的結果仍為4位BCD碼)。程序如下:
MOV R0,#41H ;設置地址指針R0 MOV R1,#43H ;設置地址指針R1 MOV A,@R0 ADD A,@R1 ;十位、個位數(shù)相加
DA A ;十進制調(diào)整
MOV @R0,A DEC R0 ;修改地址指針 DEC R1 MOV A,@R0ADDC A,@R1 ;千位、百位數(shù)相加
DA A ;十進制調(diào)整
MOV @R0,A RET2023/2/556
2.減法類指令帶借位減法影響:PSW的Cy、AC、OV、P注:D7、D6位只有一個有借位時,(OV)=1。如要用此組指令完成不帶借位減法,只需先清“0”標志位Cy。SUBBA,Rndirect@Ri#data2023/2/557
【例1】(A)=C9H,(R2)=54H,Cy=1執(zhí)行指令:
SUBBA,R2結果:(A)=74H,Cy=0,Ac=0,OV=1,P=0注意:上面的運算中,由于位6向位7借位,位7沒有借位,所以標志位OV=1。2023/2/558
加1指令
源操作數(shù)的內(nèi)容加1,結果再送回原單元。這些指令中僅INCA影響P標志。若原變量中內(nèi)容為FFH,則程序執(zhí)行后變量變?yōu)?0H。INC
Rndirect@RiDPTRA2023/2/559
減1指令
源操作數(shù)的內(nèi)容減1,結果再送回原單元。這些指令中僅DECA影響P標志。若原變量中內(nèi)容為00H,則程序執(zhí)行后變量變?yōu)镕FH。DEC
Rndirect@RiA2023/2/560
INC單操作數(shù)
如: INCR2
;R2←R2+1DEC單操作數(shù)
如:DECR2
;R2←R2-1
INCDPTR
;DPTR←DPTR+1
不影響標志位狀態(tài)。注意:沒有指令DECDPTR
可用指令DECDPL代替2023/2/561
3.乘法MULAB
例:若(A)=50H,(B)=A0H,執(zhí)行指令MULAB之后,(A)=00H,(B)=32H,(OV)=1,(Cy)=0。
當乘積大于FFH時,溢出標志位(OV)=1。標志Cy總是被清“0”。X
ABAB乘數(shù)被乘數(shù)積2023/2/562
4.除法例:若(A)=FBH(251),(B)=12H(18),執(zhí)行指令DIVAB之后,(A)=0DH,(B)=11H,(OV)=0,(Cy)=0。DIVAB
除數(shù)為0,商的A和B內(nèi)容不確定,且(OV)=1。標志Cy總是被清0。X
ABAB除數(shù)被除數(shù)整數(shù)部分商
余數(shù)部分2023/2/563
3.3.3邏輯運算及移位類指令
邏輯運算:與、或、異或、清“0”和取反
對A循環(huán)移位1.方向:左、右2.Cy:帶、不帶
共24條指令。
2023/2/564
邏輯與
源操作數(shù)與直接地址單元內(nèi)容相與
例:若(A)=C3H,(R0)=AAH,執(zhí)行指令ANLA,R0之后,(A)=82H。ANLdirect,A#dataANLA,Rndirect@Ri#data
源操作數(shù)與累加器A的內(nèi)容相與2023/2/565
邏輯或
源操作數(shù)與直接地址單元內(nèi)容相或
例:若(A)=C3H,(R0)=55H,執(zhí)行指令ORLA,R0之后,(A)=D7H。ORLdirect,A#dataORLA,Rndirect@Ri#data
源操作數(shù)與累加器A的內(nèi)容相或2023/2/566
邏輯異或
源操作數(shù)與直接地址單元內(nèi)容相異或
例若(A)=C3H,(R0)=AAH,執(zhí)行指令XRLA,R0之后,(A)=69H。XRLdirect,A#dataXRLA,Rndirect@Ri#data
源操作數(shù)與累加器A的內(nèi)容相異或2023/2/567
累加器清“0”和取反
把A的內(nèi)容取反,結果仍在A中。CPLACLRA例若(A)=A5H,執(zhí)行指令CLRA之后,(A)=00H。
把A的內(nèi)容清“0”
,結果仍在A中。2023/2/568
累加器循環(huán)移位
2023/2/569
3.3.4控制轉移類指令(17條)
程序執(zhí)行是順序的,改變程序執(zhí)行順序,稱作程序轉移。
控制程序轉移采用轉移指令1.無條件轉移2.條件轉移3.子程序調(diào)用與返回2023/2/570
1.無條件轉移指令
長轉移指令
LJMPaddr16指令第二、三字節(jié)地址碼分別裝入PC的高8位和低8位中??赊D到64KB的ROM空間的任何單元。例:若“NEWADD”表示轉移目標地址1234H。執(zhí)行LJMPNEWADD時,目標地址將裝入PC中,程序轉向地址1234H處運行。2023/2/571
1.無條件轉移指令
絕對轉移指令
AJMPaddr11
注釋:1.PC先指向AJMP的下一條指令,再把11位地址碼傳送到PC10~0,PC15~11不變。2.當前PC值(下條指令地址)高5位,可確定32個2KB段之一。因此,AJMP轉移范圍為包含AJMP下條指令在內(nèi)的2KB區(qū)間。2023/2/572
1.無條件轉移指令
短轉移指令
SJMPrelrel是目標地址的標號,由匯編程序自動計算,并填入指令代碼中。第二字節(jié)為rel,(補碼),00H~7FH為正向轉移,80H~FFH(-128~-1)反向轉移。2023/2/573
1.無條件轉移指令
變址尋址轉移指令JMP@A+DPTR轉移地址由DPTR和A相加形成。例程: MOVDPTR,#TABLE JMP@A+DPTRTABLE: AJMPROUT0;(A)=00H時
AJMPROUT1;(A)=02H時
AJMPROUT2;(A)=04H時
AJMPROUT3;(A)=06H時2023/2/574
2.條件轉移指令累加器判0轉移例: 若A原來為00H,則
JNZL1;程序往下執(zhí)行
INCA;
JNZL2;程序轉向L2處執(zhí)行
JZrelA的內(nèi)容為0轉移JNZrelA的內(nèi)容不為0轉移2023/2/575
2.條件轉移指令
比較不相等轉移
對前面兩個操作數(shù)進行比較,不相等則轉移比較時影響進位標志Cy,不影響操作數(shù)本身。
若左操作數(shù)=右操作數(shù),Cy=0,程序順序執(zhí)行;若左操作數(shù)>右操作數(shù),Cy=0,程序轉移;若左操作數(shù)<右操作數(shù),Cy=1,程序轉移;CJNEA,direct,relCJNE
ARn@Ri,#data,rel2023/2/576
2.條件轉移指令
減1不為0轉移
每執(zhí)行一次,循環(huán)控制單元減1,并判其是否為0
不為0,則轉移到目標地址繼續(xù)循環(huán);為0,則結束循環(huán),程序往下執(zhí)行。DJNZRn,relDJNZdirect,rel2023/2/577
【例3.4】將片外RAM的1100H~11FFH的256個單元清0。程序如下:
MOV R7,#00H ;設置計數(shù)初值
CLR A MOV DPTR,#1100H;設置片外RAM單元首址LOOP:MOVX @DPTR,A INC DPTR DJNZ R7,LOOP RET2023/2/578
3.調(diào)用與返回指令
子程序調(diào)用指令
子程序的短調(diào)用和長調(diào)用目標地址形成方式與AJMP和LJMP相似不影響任何標志
ACALLaddr11LCALLaddr162023/2/579
3.調(diào)用與返回指令
返回指令
RET從堆棧中彈出壓入堆棧保護的斷點地址,并送入指令計數(shù)器PC,返回到斷點處繼續(xù)執(zhí)行。
RETI專用于中斷服務程序返回,除返回中斷斷點處執(zhí)行主程序以外,并有清除內(nèi)部相應的中斷狀態(tài)寄存器(以保證正確的中斷邏輯)的功能。RETRETI
2023/2/580
4.空操作指令NOP1.不產(chǎn)生任何控制操作,但:
PC的內(nèi)容加1
消耗1個機器周期程序空間上占用一個字節(jié)2.常用來實現(xiàn)較短時間的延時。2023/2/581
3.3.5位操作類指令
以位為單位進行的各種操作。位地址形式:(表示PSW中的位5
)直接位地址(如,0D5H)點操作符(如,0D0H.5、PSW.5等)位名稱(如,F(xiàn)0)偽指令定義(如,MYFLAGBITF0)位操作指令中,位累加器要用字符“C”表示。注:在位操作指令中Cy與具體的直接位地址D7H對應。
2023/2/582
位傳送指令
MOVbit,C MOVC,bit
指定位地址中內(nèi)容與Cy的內(nèi)容的相互傳送
例:若(Cy)=1,(P3)=11000101B,(P1)=00110101B。執(zhí)行以下指令:
MOVP1.3,C MOVC,P3.3 MOVP1.2,C
結果:(Cy)=0,P3的內(nèi)容未變,P1的內(nèi)容變?yōu)?0111001B。2023/2/583
位清“0”指令
位累加器Cy清“0”
例:若(P1)=10011101B。執(zhí)行指令CLRP1.3后,結果為:(P1)=10010101B。CLRC
CLRbit
位地址內(nèi)容清“0”2023/2/584
位置“1”指令
例若(P1)=10011100B。執(zhí)行指令SETBP1.0后,(P1)=10011101B。
位累加器Cy置“1”SETBC
SETBbit
位地址內(nèi)容置“1”2023/2/585
位邏輯與指令
例:若(P1)=10011100B,(Cy)=1。執(zhí)行指令ANLC,P1.0后,結果為:P1內(nèi)容不變,而(Cy)=0。位地址單元內(nèi)容與位累加器內(nèi)容“與”ANLC,bit
位地址單元內(nèi)容取反后的值與位累加器內(nèi)容“與”ANLC,/bit2023/2/586
位邏輯或指令
位地址單元內(nèi)容取反后的值與位累加器內(nèi)容“或”
位地址單元內(nèi)容與位累加器內(nèi)容“或”O(jiān)RLC,bitORLC,/bit
位取反CPLCCPLbit2023/2/587
判Cy轉移指令
當(Cy)=1,轉向PC當前值與rel之和的目標地址執(zhí)行,否則程序順序執(zhí)行。
JCrel
JNCrel當(Cy)=0,轉向PC當前值與rel之和的目標地址去執(zhí)行,否則程序順序執(zhí)行。
2023/2/588
判位bit轉移指令
JBbit,rel
JBCbit,relJNBbit,rel當(bit)=1,轉向PC當前值與rel之和的目標地址執(zhí)行,否則程序順序執(zhí)行。
當(bit)=0,轉向PC當前值與rel之和的目標地址執(zhí)行,否則程序順序執(zhí)行。
與上面指令相同,但還有將該位清0功能。
2023/2/589
3.5思考題與習題什么是尋址方式?89S51指令系統(tǒng)有哪些尋址方式?相應的尋址空間在何處?訪問片外數(shù)據(jù)存儲器、程序存儲器,可以使用哪些指令來實現(xiàn)?請舉例說明。要訪問特殊功能寄存器和片內(nèi)數(shù)據(jù)存儲器,應采用哪些尋址方式?說明下列指令中源操作數(shù)采用的尋址方式。
MOV55H,R7
MOVA,55H
MOVA,#55H
JMP@A+DPTR
MOV30H,C MOVA,@R0 MOVXA,@R02023/2/590
3.5思考題與習題請判斷下列的單片機指令的書寫格式是否有錯,若有,請說明錯誤原因。 MOVR0,R3 MOVR0,@R3 MOVC A,@R0+DPTR ADDR0,R1 MULAR0試編寫一個子程序,其功能是將PSW中的用戶標志位F0、F1中的內(nèi)容進行“異或”邏輯運算,將運算結果存放到進位標志Cy。2023/2/591
3.5思考題與習題寫出實現(xiàn)下列要求的指令或程序片段。 ⑴將R0的內(nèi)容傳送到R1; ⑵片內(nèi)RAM20H單元的內(nèi)容傳送到寄存器R1; ⑶片內(nèi)RAM20H單元的位D7和D3清0,其他位保持不變; ⑷片外RAM1000H單元的內(nèi)容傳送到片內(nèi)RAM60H單元中; ⑸片外RAM1080H單元的內(nèi)容傳送到寄存器R7中。 ⑹累加器A的高4位清0,其他位保持
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年河源市連平縣人民代表大會常務委員會辦公室公開招聘編外人員備考題庫及答案詳解1套
- 4K神經(jīng)內(nèi)鏡在鞍結節(jié)手術中優(yōu)勢
- 3D打印生物支架在神經(jīng)再生中的安全評估策略
- 3D打印植入物在復雜骨缺損修復中的優(yōu)勢
- 3D打印引導下宮頸癌放療劑量梯度與腎保護策略
- 2025年內(nèi)蒙古交通集團有限公司社會化公開招聘備考題庫有答案詳解
- 3D打印人工晶狀體的光學性能測試
- 2025年嘉峪關市教育系統(tǒng)公開招聘公費師范畢業(yè)生和小學全科型教師37人備考題庫及一套答案詳解
- 2025年江西省贛房投資集團有限公司社會招聘備考題庫帶答案詳解
- 小學信息技術課程微型垂直農(nóng)場系統(tǒng)中的編程與控制教學研究課題報告
- 暖通設備運行調(diào)試方案
- 綜合管理部經(jīng)理述職報告
- 數(shù)智化實驗課程教學模式探索
- 年產(chǎn)50萬噸碳酸鈣項目可行性研究報告
- 施工現(xiàn)場的安全溝通與應急響應方案
- 扎蘭屯護理單招題庫及答案解析
- 實施指南(2025)《AQ 4272-2016鋁鎂制品機械加工粉塵防爆安全技術規(guī)范》
- 君子蘭養(yǎng)花知識培訓班課件
- 技術交易創(chuàng)新創(chuàng)業(yè)項目商業(yè)計劃書
- 述職報告?zhèn)€人優(yōu)勢劣勢
- 初一競賽試題及答案
評論
0/150
提交評論