




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
煙臺南山學院
第三章指令系統
2011-7-14煙臺南山老浣2
第三章指令系統
2011-7-14煙臺南山老浣3
?指令是指計算機能夠識別和執行的操作命令
?指令系統是一臺計算機所具有的全部指令的集
合
?指令系統很大程度上決定了計算機處理問題的
能力和使用的快捷
?每一種CPU都有其獨立的指令系統
?MCS-51系列單片機指令系統共有111條指令
?MCS-51指令系統的功能十分強大,它把體現
單片機的各種功能的寄存器組織在統一的地址
空間中,MCS-51指令系統在其存儲空間、時
間的利用率及工作效率方面都是較高的。
2011-7-14煙臺南山老浣4
單字節49條單周期46條
雙字節45條雙周期45條
三字節17條四周期2條
2011-7-14南山老浣5
?、助記符:(指令助記符)
?由助記符組成的指令系統成為匯編語言
?助記符與二進制碼(機器碼)有對照表
?共42個助記符,組成111條指令,形成33種
功能
數據傳送類指令29條
算術運算類指令24條
邏輯運算類指令24條
控制轉移類指令17條
位操作類指令17條
2011-7-14煙臺南山學悅6
二、指令格式
操作碼操作數
?操作碼表示該指令的操作功能,即指令
做什么操作(又被稱作操作符、功能助
記符)
?操作數是指指令操作所需要的數或數存
放的地址,即對什么數進行操作
2011-7-14煙臺南山老浣7
標號:操作碼操作數L操作數2,操作數3;[注釋]
LOOP:MOVA,R0;將口0的內容送A
?注:白色的內容不是必須的
?標號:該指令的符號地址,有字母一數字串組
成
?注釋:中英文均可
2011-7-14煙臺南山老浣8
?數據操作類指令:(數據傳送、算術運算、
邏輯運算)
操作碼目的,源
例MOVA,10H
?控制轉移類:
操作碼操作數工,操作數2,轉移目的地
址
2011-7-14煙臺南山老浣9
Rn:當前被選中的工作寄存器,
R0?R7,共8個
Ri:當前選定的工作寄存器中能作為間接
尋址的兩個寄存器R0或Ri,i=0,1
#data:8位二進制立即數
#datal6:16位二進制立即數
direct:8位片內RAM的地址(或SFR),
為字節地址
rel:帶符號的8位相對地址偏移量
(128-127)
2011-7-14煙臺南山老浣10
>addr11:工工位二進制數的目的地址
>addr16:16位二進制數的目的地址
>bit:片內RAM或SFR中的位地址
>@:間址寄存器前綴符號
>/:位操作數的前綴,表示對該位取反
>(x):表示寄存器或存儲單元x(地址)
中的內容
>((x)):表示以寄存器或存儲單元x內容作為地
址的存儲單元的內容(即表示X不是我
們要的數據,而是我們所要數據的地址)
?-----:數據傳送方向(左邊的內容被右邊的內
2011-7-14容代替)煙臺南山當浣11
第三章指令系統
2011-7-14煙臺南山老浣12
>尋址方式就是如何尋找操作數或操作數存放的
地址。
>指令的一個重要組成部分是操作數。由尋址
方式指定參與運算的操作數或操作數所在單元
的地址。
A尋址方式越多,計算機尋址能力越強,但指令
系統也越復雜。
2011-7-14煙臺南山老浣13
MCS—51系統七種尋址方式
1.立即尋址方式
2.直接尋址方式
3.寄存器尋址方式
4.寄存器間接尋址方式
5.基址加變址的間接尋址方式
6?相對尋址方式
7.位尋址方式
2011-7-14煙臺南山老浣14
▲、立即尋址
操作數直接出現在指令碼中,即指令的
操作碼后面的就是實際的操作數(立即
數)。
操作數可能是1字節,也可能是2字節。
用#data或#datal6表示立即數
2011-7-14煙臺南山老浣15
例:
MOVDPTR,#2101H;(DPH)-21H,(DPL)-01H
MOVA,#2OH;(A)-20H
2011-7-14煙臺南山老浣16
PC今01110100操作碼
00100000立即數----------r
AcclIEOH
It]3-1MOVA,#20H執行示意圖
2011-7-14
煙臺南山老浣17
方8口與位方式9能儉用孑源播行政。
2011-7-14煙臺南山老浣18
二、直接尋址
指令中直接出現存放操作數的單元地址。
2011-7-14煙臺南山老浣19
例:
ANL70H,#48H;(70H)<-(70H)A48H
MOVA,70H;(A)—(70H)
LJMP1000H
2011-7-14南山老浣20
內RAM
AccEOH
圖3-2MOVA,70H指令執行示意圖
2011-7-14煙臺南山老浣21
這種尋址方式使用的變量是direct,可
訪問片內RAM、ROMo
綢殊功能易存器9能使用右樵與處方式。
PUSHB;PUSHFOH
POPACC;POPEOH
MOVTMOD,A;(89H)<-(A)
注:A(寄存器)RACC(代表A的地址)
2011-7-14煙臺南山老浣22
三、寄存器尋址
指令中出現寄存器的名稱,操作數是寄
存器的內容。
2011-7-14煙臺南山老浣23
例:
MOVA,R6;(A)—(R6)
INCR3;(R3)―(R3)+l
MOVA,B;(A)-(B)
MOVDPTR,#1000H
2011-7-14煙臺南山老浣24
旭豺與位方式逢用孑A、DPTR、
Rn(魚叱為由PSW中的RS1版RSO淼定)
2011-7-14煙臺南山學院25
四、寄存器間接尋址
指令中寄存器中的內容不是操作數本身,
而是操作數的地址,該地址的內容才是真正
的操作數。
用“@寄存器”表示
2011-7-14煙臺南山老浣26
例:
MOVA,@R0;(A)-((R0))
如果(RO)=20H,(20H)=55H
則(A)=55H
MOVXA,@DPTR
如果DPTR=3456H,
片外RAM(3456H)=99H
則(A)=99H
2011-7-14煙臺南山當浣27
寄存器間接尋址適用的存儲空間有:
1.內部RAM,使用的變量為@R0、@R1、@SP;
例:MOV@R0,76H;((RO))—(76H)
PUSHPSW;(SP)—(SP)+L((SP))<-(PSW)
@SP通常隱含
2011-7-14煙臺南山老浣28
2.外部RAM(或I/O口),使用的變量是
@R0、@RL@DPTR;
例:MOVX@RO,A;((RO))—(A)
MOVXA,@DPTR;(A)一((DPTR))
2011-7-14煙臺南山歌浣29
五、基址加變址的間接尋址(變址間接尋址)
以基址寄存器的內容加上變址寄存器的內容作
為操作數的地址。
基址寄存器:PC(16位)、DPTR(16位)
變址寄存器:A
以程序計數器PC或數據指針DPTR中的內容為
基地址,加上累加器A中的內容作為操作數的
地址。
這種尋址方式僅適用于程序存儲器空間ROM
2011-7-14煙臺南山學院30
例:
MOVCA,?A+DPTR;(A)—((A)+(DPTR))
如果DPTR=63A0H,(A)=22H
則63A0H+22H=63C2H
如果片外ROM中(63C2H)=38H
則(A)=38H
2011-7-14煙臺南山老浣31
MOVCA,@A+PC
(A)-((A)+(PC))
注意:PC為當前值(開始執行本條指令時
候PC已經+工)
2011-7-14煙臺南山老浣32
六、相對尋址
作用:確定控制轉移類指令的轉移地址。
(即指定轉移的目標地址,用于改變程序
當前的執行順序,PC值不再順序加1)
以PC內容作為基地址,把指令中提供的偏移
量與PC的當前值相加,得到參與操作的數據
地址(即指定的轉移的目標地址:新的PC
值)。
偏移量rel是單字節帶符號數。
相對尋址方式只能適用于程序存儲器ROM空間。
2011-7-14煙臺南山老浣33
與變址尋址的區別
?變址尋址中的內容是無符號的數。
?相對尋址中偏移量是有符號的數,以補
碼形式給出的。
I取值范圍是80H?7FH即(一工28?
+127)o
故轉移的目標地址在當前PC值的一工28?
+127之間。
2011-7-14煙臺南山老浣34
注:
CPU取指令后,PC會自動增加,具體的增加
量與當前指令的長度(字節數)有關。若
當前指令為2字節,PC值會+2。若當前指
令為3字節,則PC值會+3。
2011-7-14煙臺南山學院35
例:
SJMP38H;程序跳轉指令,2字節
如果當前指令的地址PC=1832H,則PC的
當前值為PC=1832H+2=:L834H
則執行此指令后PC=1834+38H=
186CH
2011-7-14煙臺南山老浣36
例:
JC80H;該指令為2字節指令
C=0,順序執行,即(PC)—(PC)+2
C=l,轉移,(PC)(PC)+2,(PC)(PC)+80H
注意:80H表示向前跳(一128)
如果C=l,此指令的地址為1005H
則PC=PC+2—80H=1007H—128=0F87H
2011-7-14煙臺南山老浣37
七、位尋址
操作對象是存儲單元的一位,而不是一個
字節。指令中直接給出位地址。這種尋址方式
也可以歸并于直接尋址方式,但它提供的是直
接的位地址。
SFR中有11個寄存器可以位尋址,但實際上只
有82個可以位尋址的位。
所以共有128+82=210個位可尋址
2011-7-14煙臺南山老浣38
MOVC,bit
bit-位地址,有四種表示方法:(以PSW
中D5位為例)
工、直接地址法:OD5HMOVC,0D5H
2、點操作符法:PSW.5MOVC,PSW.5
3、位名稱法:FOMOVC,FO
4、點字節地址法:0D0H.5
MOVC,0D0H.5
bo?
2011-7-14煙臺南山老浣39
字節寄存器
D7?D0
地址符號名
F0HF7F6F5F4F3F2FlFOB
E0HE7E6E5E4E3E2ElEOACC■
CYJACFORSIRSOOVP
V-
D0HD7D6D5D4D3D2DIDOPSW
PT2PSPT1PX1PTOPXO
V--
B8H—-BDBCBBBAB9B8IP
一位
B0HB7B6B5B4B3B2BlBOP3
地
EAET2ESET1EX1ETOEXO
、址
A8HAF——ADACABAAA9A8IE
空
間
A0HA7A6A5A4A3A2AlAOP2-80H
SMOSMISM2RENTB8RB8TIRIF8H
98H9F9E9D9C9B9A9998SCON■一
90H9796959493929190PlV--
TF1TRITFO二PROi]ElIT1IEOITO
88H8F8E8D8C8B8A8988TCON—
80H8786858483828180PO一
特殊功能寄存器位地址
2011-7-14煙臺南山老浣40
寸
xIIIII
V?NHO寸
sNNNWN—
I—
I
O
Z
例如:
CPL08H;21H單元DO位取反
CLROOH;20H單元DO位清零?
CLREA;(EA)(0?
2011-7-14煙臺南山老浣42
恁孑處方式9能適用孑念地處空向,
豺對布名處理器中17叁念建仔藍今。
2011-7-14煙臺南山學陶
43
附:程序字節數與尋址方式
?只含有寄存器的為工字節:MOVA,R6
MOVA,@R0
?含有直接地址+1字節:MOVA,70H
?含有8位立即數十工字節:MOVA,#
70H
2011-7-14煙臺南山老浣44
第三章指令系統
2011-7-14煙臺南山老浣45
一、數據傳送指令
按存儲空間及指令功能劃分:
?內部256字節的RAM單元之間的數據傳送
(包括片內RAM和特殊功能寄存器SFR)
?堆棧操作指令
?數據交換指令
?ROM訪問指令
?外部RAM訪問指令
2011-7-14煙臺南山老浣46
1>內部RAM單元之間的數據傳送
1)以累加器為目的操作數的數據傳送指令
MOVA,#data;(A)-#data
MOVA,Rn;n=0?7,(A)-(&)
MOVA,@Ri;i=0,l,(A)一((RJ)
MOVA,direct;(A)-direct
direct為內部RAM或SFR
2011-7-14煙臺南山老浣47
?例:
MOVA,#80H
MOVA,R7
MOVA,@R0
MOVA,80H
MOVRO,#30H
。。MOV30H,#60H
MOVA,@R0
7
2011-7-14煙臺南山老院48
2)以直接地址direct為目的操作數的數據傳送指令
MOVdirect,A;(direct)—(A)
MOVdirect,Rn;(direct)—(Rn),
n=0?7
MOVdirect,@Ri;(direct)-((Ri)),
i=0,l
MOVdirect!,directl;(direct?)—(directl)
MOVdirect,#data;(direct)-#data
2011-7-14煙臺南山老浣49
?例:
MOVPl,A
MOV70H,R3
MOV30H,@R0
MOVOEOH,78H
MOV01H,#50H
2011-7-14煙臺南山老浣50
3)以當前工作寄存器Rn為目的操作數的數據傳送
指令
MOVRn,A;(&)-(A),n=0?7
MOVRn,direct;(Rn)一(direct)
MOVRn,#data;(RJ-#data
2011-7-14煙臺南山老浣51
例:
MOVR6,A
MOVR3,70H
MOVR5,#0FAH
2011-7-14煙臺南山老浣52
MOV@Ri,
A;((Ri))-(A)i=0,l
MOV@Rj,direct;((R))-(direct)
MOV@Ri,
#data;((R))-#data
2011-7-14煙臺南山學院
53
?例:
MOV@R0,A
MOV,70H
MOV@R0,#70H
MOV@R1,Pl
2011-7-14煙臺54
5)16位數據傳送指令
MOVDPTR,#datal6;(DPTR)一
#datal6
2011-7-14煙臺南山老浣55
?例:
MOVDPTR,#1234H
=MOVDPH,#12H
MOVDPL,#34H
2011-7-14煙臺南山老浣56
注:
?A是一個很重要的8位寄存器,可以與
direct,@Ri,Rn任意交換數據;
?立即數#data可以給A,direct,Rn,
@Ri;
?direct直接尋址可以與direct,@Ri,A,
Rn任意交換數據;
?口11與@用不能交換數據。
2011-7-14煙臺南山老浣57
例題:
設(70H)=60H,運行結果:
(60H)=20H,Pl(70H)=0B7H
為輸入口,當前輸入(60H)=20H
狀態為OB7H
(A)=20H
MOVRo,#70H;
(R0)=70H
MOVA,@R
0;(Ri)=60H
MOV%,A;
Pl=0B7H
MOVA,@R1;
MOV@%Pl;
2011-7-14煙臺南山老浣58
2、堆棧操作指令
?必須使用直接地址,只針對片內工28M,所
用的指針是SP
PUSHdirect;
(SP)-(SP)+l,((SP))一(direct)
POPdirect
(direct)-((SP)),(SP)-(SP)-l
2011-7-14煙臺南山老浣59
例:
(SP)=60H,
(A)=30H,
(B)=70H
?PUSHACC;(SP)<-(SP)+1=61H,((SP))-(ACC)
?PUSHB;(SP)-(SP)+1=62H,((SP))-(B)
結果:
(61H)=30H(62H)=70H
(SP)=62H
2011-7-14煙臺南山老浣60
例:
(SP)=62H(62H)=70H(61H)=30H
?POPDPH
POPDPL
?則
(DPTR)=7030H
(SP)=60H
2011-7-14煙臺南山老浣61
注:
?使用堆棧指令前應設SP初值,否則復位
(SP)=07H
例如:MOVSP,#4FH
(4FH單元并未“堆放”數據,可作為它用)
2011-7-14煙臺南山老浣62
例:
將20H單元的數傳送到40H單元中
PUSH20H
POP40H
一般PUSH和POP應成對出現,否則在子程
序返回或中斷時將出錯。
2011-7-14煙臺南山老浣63
3、數據交換指令
1)字節交換指令:
?只用于內部RAM與A之間的數據交換
?XCHA,Rn;(A)—-(Rn)
XCHA,direct(A)一—(direct)
XCHA,@Ri;(A)--(Ri)
?例:(A)=80H,(R7)=97H
執行:XCHA,R7
結果:(A)=97H,(R7)=80H
例:將片內RAM60H單元與61H單元的數據交換。
XCH60H,61H一對嗎?
2011-7-14煙臺南山老浣64
2)半字節交換指令:
?只針對人與@用交換低四位
XCHDA,@Ri;(A)O.3一-((R))。小
(A)低4位與((Ri))低4位—
交換高4位不變一*一L
例:(Ro)=6OH,(60H)=3EH,(A)=59H
執行:XCHDA,@R0
結果:(A)=5EH
(60H)=39H
2011-7-14煙臺南山老浣65
3)累加器高低半字節交換指令
?將A的低4位和高4位相互交換
SWAPA;(A)0?3<=>(A)4?7
例:(A)=3AH
SWAPA
則:(A)=0A3H
煙臺南山名浣66
2011-7-14
4、訪問程序存儲器ROM指令
?即從ROM向A傳送數據,共2條。
?程序存儲器中的數據往往是按表格形式存
放著,因此,程序存儲器中的這類數據是
用查表指令提取。
2011-7-14煙臺南山學院67
MOVCA,@A+PC;(A)-((A)+(PC))
?以PC作為基址寄存器,A作為變址寄存器
?A的內容為無符號數,相加可得到一個16位
地址。將該地址指出的程序存儲單元的內容
送入A,一般用作讀ROM中表格常數。
?寄存器A取值00?OFFH,故本指令尋址范圍
為PC當前值后的256個字節。即表格常數必
須在PC當前值后256個字節內。故也稱為近
程查表指令。
2011-7-14煙臺南山老浣68
?例:
設(A)=30H
1000H:MOVCA,@A+PC
則:
PC當前值為1001H,1001H+30H=
1031H
然后將程序存儲器1031H單元的內容送入累
加器A中。
2011-7-14煙臺南山老浣69
MOVCA,@A+DPTR;(A)-((A)+(DPTR))
?以DPTR為基址寄存器,與A中無符號數相加得到一
個16位地址,將該地址所指的ROM內容送給A。
?由于DPTR范圍為0000H?OFFFFH,所以該指令尋
址范圍是64KROM,即表格可放在64KROM任何地
址空間,故也稱為遠程查表指令。
2011-7-14煙臺南山老浣70
例:(DPTR)=0300H,(A)=02H
ROM中(0302H)=55H
執行:
MOVCA,@A+DPTR
結果:(A)=55H
2011-7-14煙臺南山株院71
?例:編制根據A中數(0-9),查其平方表
的程芹。
?杷平方表用偽指令DB存放在ROM中,把表
的首地址置入DPTR中,把數0?9存放在變
址寄存器A中。
MOVDPTR,#1000H
MOVCA,@A+DPTR
1000H:DBOOH,01H,04H,09H
DB10H,19H,24H,31H,
40H,51H
2011-7-14煙臺南山老澆72
?偽指令:是操作碼,但不譯成機器碼,只影響到
匯編過程。是對匯編過程進行說明和指導的一組
命令。
?如:
?DB:定義字節偽指令,把后面的數值存入本指令
開始的一個單元或者連續的存儲單元中。
?END;匯編結束偽指令,當匯編程序遇到END
就停止匯編。
?ORG:定義起始地址偽指令,指出其后的程序在
程序存儲器中存放的起始位置。
2011-7-14煙臺南山學院73
?采用MOVCA,@A+PC
?地址源程序
M(ORG0000H
0000HMCDVA,#03H
0002HDB)VC00HA,@A+PC
1
0003HDB0—H
0004HDE014W
0005HDB01H
0006HDB1oH
0007HDB1H
0008HDB24H
0009HDB3—H
xd
000AHDB4oH
000BHDB51H
000CH-
2011-7-14煙臺南山老浣74
5、訪問外部RAM(或擴展工/O
口)與A之間的傳送指令
?只采用寄存器間接尋址方式,地址指針可
以是@R0、@R1,@DPTR
?MOVX只與A相互傳遞(雙向),共有4條
指令
2011-7-14煙臺南山老浣75
MOVXA,@Ri;(A)一((Ri))
MOVXA,@DPTR;(A)一((DPTR))
MOVX@Ri,A;((Ri))-(A)
MOVX@DPTR,A;((DPTR))-(A)
?片外擴展的RAM和1/O口統一編址,共同使用
64KBo
?因為DPTR是16位,所以用DPTR間接尋址可以
訪問64KB任意單元。
?因為Ri是8位寄存器,只能尋256B空間。當片
外RAM小于256B時,可直接采用這種方式;當
片外RAM大于256B時,利用P2口輸出高8位地
址(頁地址)作為一頁,有@圖進行頁內尋址。
2011-7-14煙臺南山老浣76
例:
?向外部RAM的2007H單元寫入數據60H
?MOVA,#60H
MOVDPTR,#2007H
MOVX@DPTR,A
或
?MOVA,#60H
MOVP2,#20H
MOVRO,#07H
MOVX@R0,A
2011-7-14煙臺南山老浣77
總結:
1)完成同樣功能,可采用不同的尋址方式的指令
?例:把A的內容送到31H
MOV31H,A
MOV31H,ACC
MOV31H,EOH
2)有些指令看起來相似,但實際不同
?MOV31H,A
MOV31H,ACC
3)所有數據傳送指令都不影響PSW
2011-7-14煙臺南山老浣78
習題
下列指令是否錯誤,如錯請改正:
1.MOVA,#1000H;A-1000H
2.MOVXA,1000H;A-(:LOOOH)片外RAM
3.MOVCA,1000H;A-(1000H)片外ROM
4.MOVX60H,A;片外RAM(60H)-A
5.MOVRO,60H;片內RAM(61H)-(60H)
MOV61H,@R0
6.XCHRI,R2;RI-R2
7.MOVXDPTR,#2000H
DPTR<-2000H
8.MOVX60H,@DPTR;片內RAM一片外RAM
2011-7-14煙臺南山老浣79
第三章指令系統
2011-7-14煙臺南山老浣80
二、算術運算指令
?算術運算指令進行加、減、乘、除四則運
算,以及增量、減量、二一十進制調整操
作
?共24條
?算術運算指令影響PSW標志位
2011-7-14煙臺南山老浣81
?Cy:進位標志位
最高位D7產生進位時,(CY)=1,否則(CY)=0
對于無符號數,結果超出256,則(CY)=1,否則
(CY)=0
?AC:輔助進位標志位
當D3有進位時,(CY)=1,否則(CY)=0
?F0:供用戶使用的標志位
?RSI、RS0:選擇當前工作寄存器
?P:奇偶標志
累加器A中“1”的個數為奇數,貝IJ(P)=1;
素加器A中“1”的個數為偶數,則(P)5
?0V:溢出標志
?有符號數(補碼)作加減法,當結果超出
(—128?+127)時,(OV)=1,此時
運算結果錯誤;否則(OV)=0,此時運
算結果正確。
?另一方面理解:
(OV)=D6'十D7'
D6':D6位向D7位進位或借位
D7J:D7位向CY位進位或借位
2011-7-14煙臺南山老浣83
1、加法指令
?1)不帶進位的加法指令ADD
?源操作數均為累加器A中的內容,將目的操作數與
A中的內容相加,結果也放在A中
;一
ADDA,Rn(A)(A)+(Rn)
ADDA,@Ri(A)■(A)+((R))
ADDA,direct(A)-(A)+(direct)
ADDA,#data(A)-(A)+#data
2011-7-14煙臺南山老浣84
對標志位的影響:
?D7產生進位,貝I](CY)=工,否則(CY)=0
?D3產生進位,則(AC)=1,否則(AC)=0
?作為有符號數,溢出(超出一工28?+127)
則OV=,運算結果出錯,否則OV=0,運算
結果正確。
?結果A中“工”的個數為奇數,貝U(P)=1,否
貝(P)=0
2011-7-14煙臺南山老浣85
?例:
?設(A)=84H,(30H)=8DH
ADDA,30H
?則(A)=11H;(CY)=1;(AC)=1;
(OV)=1;(P)=0
?分析:
?當作為無符號數時:84H=132,8DH=141
84H+8DH=273>256貝U(CY)=1
?當作為有符號數時:84H=—124,8DH=-115
其和為一139,超出一128?+127,故溢出
(OV)=lo
事實上,兩個負數相加,其結果(A)=11H=
17為正數,不合理,必然溢出。
2011-7-14煙臺南山老浣86
?例:
?(A)=53H;(R0)=20H;(20H)=0FCH
ADDA,@R0
?貝U(A)=4FH;(CY)=1;(AC)=O;
(OV)=0;(P)=l
?對于無符號數53H=83;FCH=252,其和
為335>256,故(CY)=1
?對于有符號數:53H=83,FCH=-4,其
和(A)=4FH=79,正確,故(OV)=0
2011-7-14煙臺南山老浣87
?例:
?MOVA,#0B3H;(A)=0B3H
?MOV20H,#10H;(20H)=10H
?MOVRO,#20H;(R0)=20H
?ADDA,@R0;(A)=0B3H+10H=0C3H
?ADDA,RO;(A)=0C3H+20H=0E3H
?ADDA,#10H;(A)=0E3H+10H=0F3H
2011-7-14南山老浣88
2)帶進位加法指令ADDC
?用于多字節加法運算,使在進行高字節加法時
考慮到低字節向高字節的進位。
ADDCA,Rn;(A)-(A)+(Rn)+(Cy)
ADDCA,@Ri;(A)-(A)+((Ri))+(Cy)
ADDCA,direct;(A)-(A)+(direct)+(Cy)
ADDCA,#data;(A)—(A)+#data+(Cy)
對標志位的影響與ADD相同
2011-7-14煙臺南山老浣89
?例:
?(A)=42H,(R3)=68H,(CY)=1
?ADDCA,R3
?結果:
?(A)=0ABH
?(CY)=0
?(AC)=0
?(OV)=1
?(P)=l
2011-7-14煙臺南山老浣90
?例:
?兩個16位數相加,
?低8位分別存于20H、30H中
?高8位分別存于21H、31H中
?求和,和的低8位送40H,高8位送41H;
?MOVA,20H
?ADDA,30H
?MOV40H,A
?MOVA,21H
?ADDCA,31H
?MOV41H,A
2011-7-14煙臺南山當浣91
3)力口1指令
INCA;(A)-(A)+1
INCRn;(Rn)-(Rn)+l
INCdirect;(direct)—(direct)+1
INC@Ri;((R))r(R))+i
INCDPTR;(DPTR)-(DPTR)+1
該指令是唯一的16位運算指令
除工NCA和INCACC影響P標志位外,其他均不影響
PSW標志位
若:(A)=OFFH,(Cy)=O
執行:INCA
結果:(A)=00H,(Cy)=0
2011-7-14煙臺南山當浣92
?比較
?INCA
?ADDA,#01H
?前者不影響標志位CY、OV、AC
?后者影響標志位CY、OV、AC
?前者為1個字節
?后者為2個字節
2011-7-14煙臺南山學浣93
?例:
?(A)=OFFH,(R3)=0FH,(30H)=0F0H,
(R0)=40H,(40H)=00H
?INCA
?INCR3
?INC30H
?INC@R0
2011-7-14煙臺南山學院94
?常用于訪問連續地址和循環程序中循環數的控制
?例:把20H?2FH單元的內容移入40H?4FH單元中
MOVRO,#20H
MOVRL#40H
MOVR2,#10H
LOOP:MOVA,@R0
MOV@R1,A
INCRO
INCRI
DJNZR2,LOOP;(R2)-(R2)-l,若R2)去0
則到LOOP處
RET
2011-7-14煙臺南山老浣95
4)十進制調整指令
?以上是十六進制表示的二進制的加法運算,
其結果都是十六進制。十進制(BCD碼)
加法的結果應該是十進制,但系統沒有專
門的十進制指令,因此只能借助二進制加
法指令(把十進制當作十六進制相加),
但結果可能出現A?F,BCD碼中無A~F,
所以需要進行十進制調整,將十進制加法
結果調整為十進制。
DAA
2011-7-14煙臺南山老浣96
?例:
求69D和59D的和,先看作69H+59H,再調
整
MOVA,#69H
ADDA,#59H;(A)=C2H,并不是128H
DAA;(A)=128H
128H為壓縮BCD碼,表示百位是L十位為2,個位為8
十進制數相加時,在ADD和ADDC后各加上一
條DAA即可
2011-7-14煙臺南山老浣97
2、減法指令
?均為帶借位的減法指令
?1)帶借位的減法指令:
?從A中減去源操作數和借位標志CY,結果留住
A中。
SUBBA,Rn;(A)-(A)-(Rn)-(CY)
SUBBA,;(A)-(A)-((Ri))-(CY)
SUBBA,direct;(A)-(A)-(direct)-(CY)
SUBBA,#data;(A)-(A)-#data-(CY)
2011-7-14煙臺南山老浣98
?D7位有借位(不夠減),貝U(CY)=L
否則(CY)=O;
?D3位有借位,貝i」(AC)=l,否則
(AC)=O;
?D6位有借位而D7位不借位,或D7位有
借位而D6位不借位,貝iJ(OV)=L否則
(OV)=0
?影響奇偶標志P
2011-7-14煙臺南山老浣99
?例:
?(A)=0C9H,(R2)=54H,(CY)=1
?SUBBA,R2
?結果:
?(A)=74H(CY)=O(AC)=O
(OV)=1(P)=0
?若為有符號數OC9H為負數,54H為正數,
74H為正數,負數一正數=正數,明顯錯
誤,故(OV)=1
2011-7-14煙臺南山老浣100
?注:
?若只做單字節減法(8位一8位),即不帶
借位減法,應先將CY清零:CLRC再
執彳亍SUBB指令。
2011-7-14煙臺南山老浣101
2)減1指令
DECA;(A)一(A)—1
DECRn;(Rn)-(Rn)—1
DECdirect;(direct)—(direct)—1
DEC@Ri;((Ri))<-((Ri))-l
除第一條影響p外,其他對標志位不產生影響
若:(A)=00H,(CY)=O
執行:DECA
結果:(A)=OFFH,(CY)=O
2011-7-14煙臺南山老浣102
?注:
?DPTR沒有減工指令,只有加工指令。若需
要DPTR—L貝I」:
?DPTR(DPL、DPH),若(DPL)HO則只
需(DPL)—L若(DPL)=O,貝i」(DPH)—1;
?CJNZDPL,#00H,NEXT
?DECDPH
?NEXT:DECDPL
2011-7-14煙臺南山老浣103
3、乘法指令
MULAB;(A)X(B)低8位一A高8位一B
?均為無符號數
?(A)一被乘數,(B)一乘數;(A)一乘積低
字節,(B)一乘積高字節
?若乘積大于OFFH,則OV=:L,否則OV=0。
?CY總是清零
2011-7-14煙臺南山老浣104
?例:
?(A)=50H,(B)=OAOH
?MULAB
?則(B)=32H,(A)=OOH,乘積為3200H,
(OV)=1
2011-7-14煙臺南山考浣105
例:16位X8位
設被乘數高8位在21H,低8位在20H,乘數在22H;乘積
(24位)高、中、低字節分別在32H、31H、30H中。
?MOVA,20H
?MOVB,22H
?MULAB
?MOV31H,B
?MOV30H,A
?MOVA,21H
?MOVB,22H
?MULAB
?ADDA,31H
?MOV31H,A
?MOVA,B
?ADDCA,#00H
2011-7-14?MOV32y臺,就名浣106
4、除法指令
DIVAB;(A)+(B)商一(A)余數一(B)
?均為無符號數
?(A)-被除數,(B)一除數
?(A)一商,(B)-余數
?CY總是清零;若(B)=0,貝i」(OV)=:L,否
則(OV)=0
?本指令范圍小(0?255),故用處不大
2011-7-14煙臺南山老浣107
三、邏輯運算指令
?邏輯運算
工、“與”運算八
0A0=0OA1=1AO=O1A1=1
2、“或”運算V
0V0=0OV1=1VO=11V1=1
3、“土”運算,取心“A”
T=o6=1
4、“異或”運算十
0十0=1十1=Q1十0=0十1=1
2011-7-14'%臺南山就'±08
1>邏輯“與"指令
ANLA,Rn(A)-(A)A(Rn)
ANLA,direct(A)—(A)A(direct)
ANLA,#data(A)—(A)Adata
ANLA,@Ri;(A)-(A)A((Ri))
ANLdirect,A;(direct)—(direct)A(A)
ANLdirect,#data;(direct)-(direct)八data
除前四條影響到P標志位外,不影響其他PSW標志位。
2011-7-14煙臺南山老浣109
?例:
?(A)=07H(RO)=OFDH
?ANLA,RO
00000111
A)11111101
00000101
?(A)=05H(P)=0
2011-7-14煙臺南山老浣110
2、邏輯“或”指令
ORLA,Rn;(A)-(A)V(Rn)
ORLA,direct;(A)-(A)V(direct)
ORLA,#data;(A)-(A)Vdata
ORLA,@Ri;(A)-(A)V((Ri))
ORLdirect,A;(direct)—(direct)V(A)
ORLdirect,#data;(direct)<-(direct)Vdata
除前四條影響到P標志位外,不影響其他PSW標志位。
2011-7-14煙臺南山老浣111
?例:
(Pl)=05H(A)=33H
ORLPl,A
00000101
V)001C0011
00110111=37H
?(P1)=37H
2011-7-14煙臺南山老浣112
3、邏輯異或指令
XRLA,Rn;(A)一(A)十(Rn)
XRLA,direct;(A)—(A)十(direct)
XRLA,#data;(A)-(A)十data
XRLA,@Ri;(A)一(A)十((Ri))
XRLdirect,A;(direct)—(direct)十(A)
XRLdirect,#data;(direct)—(direct)十data
2011-7-14煙臺南山老浣113
?例:
?設(A)=90H(R3)=73H
XRLA,R3
10010000
十)01110011
11100011=0E3H
(A)=0E3H(P)=l
2011-7-14煙臺南山老浣114
?總結:
?“ANL”常用來屏蔽(清零)某些位,欲清0
的位用“0”去“與”,欲保留的位用“工”去
“與”
?“ORL”常用來使某些位置“工”,欲置“工”
的位用“工”去”或「欲保留的位用“0”去
“或”
?“XRL”常用來對某些位取反,欲取反的位
用“工”去"異或”,欲保留的位用“0”去
“異或”;
?同時“XRL”還可以用來判斷兩數是否相等。
(咫三R1HXR也臺A*境#工工H結果
■?、m?III—t
X表示隨機狀態,為1或0,執
們下述一組指令執行后A的值如何?
XRLA,#0C0H;將累加器A的內容D7、D6取反
0IXXXXXX
ORLA,#03H;將累加器A的內容DI、DO置1
11000000
ANLA,#0E7H;將累加器A的內容D4、D3清0
1oxXXXXX
00000011
10XXXX11
11100111
10X00X11
解:執行上述指令后,(A)=10X00XllB。
2011-7-14煙臺南山老浣
116
?例:
?將累加器A的低4位傳送到Pl口的低4位,P1
口的高4位不變。
?MOVRO,A
?ANLA,#OFH
?ANLPl,#OFOH
?ORLPl,A
?MOVA,RO
2011-7-14煙臺南山老浣117
4、累加器A清零指令
CLRA;(A)-OOH
?只影響P標志位
2011-7-14煙臺南山老浣118
5、累加器A取反指令
CPLA;(A)一(A)
?不影響標志位
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年上海市消防救援總隊政府專職消防員招聘真題
- 2024年貴州貴陽貴安招聘中小學教師真題
- 公園鋪位出租合同樣本
- 辦公花卉采購合同樣本
- 以前臨時用工合同標準文本
- 養殖合股合同范例
- 醫院采購中標合同樣本
- 加盟燈具店合同標準文本
- 個人施工 勞務合同標準文本
- 醫院網絡維保合同樣本
- 冀少 七年級 下冊 生物 第三章 呼吸系統與氣體交換《呼吸的過程(一、肺與外界的氣體交換)》課件
- 2025年上半年浙江杭州錢塘新區管理委員會招聘政府雇員80人易考易錯模擬試題(共500題)試卷后附參考答案
- 《水利工程白蟻防治技術規程SLT 836-2024》知識培訓
- 固定收益投資合同范本
- GB/T 45236-2025化工園區危險品運輸車輛停車場建設規范
- 2024-2025學年歷史統編版七年級下冊期中評估測試卷 (含答案)
- 天車安全教育培訓課件
- 產業研究報告-2025年鋁基中間合金行業發展現狀、市場規模、投資前景分析
- 2025年山東省春季高考模擬考試數學試卷試題(含答案詳解)
- 春夏季疾病預防
- 國家醫保局-2024年醫保支付方式改革培訓班-DRG.DIP2.0版培訓
評論
0/150
提交評論