版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章指令系統(tǒng)本章主要內(nèi)容8086尋址方式8086指令系統(tǒng)什么是指令系統(tǒng)指令是指揮計(jì)算機(jī)進(jìn)行操作的命令計(jì)算機(jī)的指令系統(tǒng)就是指該計(jì)算機(jī)能夠執(zhí)行的全部指令的集合不同的微處理器有不同的指令系統(tǒng),其中每一條指令對(duì)應(yīng)著微處理器的一種基本操作,這在設(shè)計(jì)微處理器時(shí)確定。微處理器的主要功能由它的指令系統(tǒng)來(lái)體現(xiàn)程序是一系列按一定順序排列的指令,執(zhí)行程序的過(guò)程就是計(jì)算機(jī)的工作過(guò)程。16位8086指令系統(tǒng)是Intel80x86系列微處理器指令系統(tǒng)的基礎(chǔ)指令的組成指令由操作碼和操作數(shù)兩部分組成操作碼說(shuō)明計(jì)算機(jī)要執(zhí)行哪種操作,如傳送、運(yùn)算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分操作數(shù)是指令執(zhí)行的參與者,即各種操作的對(duì)象有些指令不需要操作數(shù),通常的指令都有一個(gè)或兩個(gè)操作數(shù),也有個(gè)別指令有3個(gè)甚至4個(gè)操作數(shù)操作碼操作數(shù)指令的操作碼和操作數(shù)每種指令的操作碼:用一個(gè)唯一的助記符表示(指令功能的英文縮寫)對(duì)應(yīng)著機(jī)器指令的一個(gè)二進(jìn)制編碼指令中的操作數(shù):可以是一個(gè)具體的數(shù)值可以是存放數(shù)據(jù)的寄存器或指明數(shù)據(jù)在主存位置的存儲(chǔ)器地址尋址方式尋址方式:指令中用于說(shuō)明操作數(shù)所在地址的方法指令系統(tǒng)設(shè)計(jì)了多種操作數(shù)的來(lái)源。操作數(shù)采取哪一種尋址方式,會(huì)影響機(jī)器運(yùn)行的速度和效率如何尋址一個(gè)操作數(shù)對(duì)程序設(shè)計(jì)很重要指令的助記符格式
操作碼操作數(shù)1,操作數(shù)2
;注釋操作數(shù)2,稱為源操作數(shù)src,它表示參與指令操作的一個(gè)對(duì)象操作數(shù)1,稱為目的操作數(shù)dest,它不僅可以作為指令操作的一個(gè)對(duì)象,還可以用來(lái)存放指令操作的結(jié)果分號(hào)后的內(nèi)容是對(duì)指令的解釋例:傳送指令MOV的格式MOV
dest,src
;dest←src
MOV指令的功能是將源操作數(shù)src傳送至目的操作數(shù)dest,例如:MOVAL,05H ;AL←05HMOVBX,AX ;BX←AXMOVAX,[SI] ;AX←DS:[SI]MOVAX,[BP+06H] ;AX←SS:[BP+06H]MOVAX,[BX+SI] ;AX←DS:[BX+SI]3.1.1與數(shù)據(jù)有關(guān)的尋址方式立即尋址MOVAX,3069H寄存器尋址MOVAL,BH直接尋址MOVAX,[2000H]寄存器間接尋址MOVAX,[BX]
寄存器相對(duì)尋址MOVAX,COUNT[SI]
基址變址尋址MOVAX,[BP][DI]相對(duì)基址變址尋址MOVAX,MASK[BX][SI]3.1.8086的尋址方式存儲(chǔ)器尋址操作數(shù)在指令中直接給出。立即數(shù)緊跟在操作碼后面,一起存放在代碼段中
指令格式舉例:MOVAL,5MOVAX,3064HMOVAL,‘A’*
只能用于
SRC字段
MOV40H,AL
*SRC和DST的長(zhǎng)度(數(shù)據(jù)類型)要一致:
MOVAH,3064H
(1)立即尋址方式MOVAX,3064H的執(zhí)行情況如圖:執(zhí)行結(jié)果:(AX)=3064H(1)立即尋址方式(1)立即尋址方式操作數(shù)在指定的寄存器中
MOVAX,BXMOVAL,BHMOVAX,3064H(2)寄存器尋址方式(2)寄存器尋址方式例:假設(shè)MOVAX,BX指令執(zhí)行前(AX)=3064H,(BX)=1234H,則指令執(zhí)行后:(AX)=1234H,(BX)保持不變。注:*可用通用寄存器(16位或8位)*SRC和DST的長(zhǎng)度(數(shù)據(jù)類型)要一致:
MOVAH,BXMOVBX,AH*CS不能用
MOV指令改變
MOVCS,AX(2)寄存器尋址方式存儲(chǔ)器尋址方式除上述兩種尋址方式外,下面五種尋址方式的操作數(shù)都在除代碼段以外的存儲(chǔ)區(qū)中,因此可以統(tǒng)稱為存儲(chǔ)器尋址方式。雙操作數(shù)指令的兩個(gè)操作數(shù)中,只能有一個(gè)使用存儲(chǔ)器尋址方式(即兩個(gè)操作數(shù)不能同時(shí)用存儲(chǔ)器尋址方式)
這里先引入有效地址EA(EffectiveAddress)的概念:在8086里,把操作數(shù)的偏移地址稱為有效地址,下面五種計(jì)算EA的方法體現(xiàn)了五種尋址方式。有效地址EA由指令直接給出
例:MOVAX,[2000H]
在這種尋址方式中,操作數(shù)存放在存儲(chǔ)單元中,而這個(gè)存儲(chǔ)單元的有效地址就在指令的操作碼之后,如操作數(shù)在數(shù)據(jù)段中,則:物理地址=(DS)×10H+EA。如操作數(shù)存放在數(shù)據(jù)段以外的其他段中,則:物理地址=(指定的段寄存器)×10H+EA
。
例:MOVAX,ES:[2000H]
(3)直接尋址方式MOVAX,[2000H]EA=2000H,假設(shè)(DS)=3000H,那么PA=32000H直接尋址方式舉例:結(jié)果:(AX)=3050H直接尋址方式直接尋址方式總結(jié):*
隱含的段為數(shù)據(jù)段DS*可使用段跨越前綴
MOVAX,ES:[2000H]*SRC和DST的長(zhǎng)度(數(shù)據(jù)類型)要一致:例:MOVAL,[3000H];[3000H]指示一個(gè)字節(jié)單元
MOVAX,[3000H];[3000H]指示一個(gè)字單元*s,d不能同時(shí)用存儲(chǔ)器尋址方式例:MOV[3000H],[2000H]*操作數(shù)地址可由變量(符號(hào)地址)表示,例如:MOVAX,[VALUE]
通常寫成如下形式:
MOVAX,VALUE比較:MOVAX,2000H
MOVAX,[2000H](4)寄存器間接尋址EA在基址寄存器(BX/BP)或變址寄存器(SI/DI)中如果指令中使用的寄存器是SI、DI和BX,則操作數(shù)在數(shù)據(jù)段中,則:物理地址=(DS)×10H+(BX)或物理地址=(DS)×10H+(SI)或物理地址=(DS)×10H+(DI);如指令中指定BP寄存器,則操作數(shù)在堆棧段中,段地址在SS中,所以操作數(shù)的物理地址為:物理地址=(SS)×10H+(BP)寄存器間接尋址舉例:例3.5:MOVAX,[BX]
如果(DS)=2000H,(BX)=1000H,則物理地址=20000H+1000H=21000H
執(zhí)行情況如圖所示,最后的執(zhí)行結(jié)果為(AX)=50A0H。指令中也可以指定段跨越前綴來(lái)取得其他段中的數(shù)據(jù)。如:
MOVAX,ES:[BX]寄存器間接尋址寄存器間接尋址總結(jié):*存放EA的寄存器只能是BX,SI,DI,BP(指16位尋址的情況)例:MOVAX,[CX]
*SRC和DST的長(zhǎng)度(數(shù)據(jù)類型)一致
例:MOVDL,[BX];[BX]指示一個(gè)字節(jié)單元
MOVDX,[BX];[BX]指示一個(gè)字單元*s,d不能同時(shí)用存儲(chǔ)器尋址方式例:MOV[SI],[BX]
MOV[2000H],[BX]
比較:MOVAX,
BX
MOVAX,
[BX]
有效地址=(BX)(BP)8位(SI)16位(DI)+位移量 物理地理=段地址×10H+有效地址 如果指令中使用的寄存器是SI、DI和BX,則操作數(shù)在數(shù)據(jù)段中,段地址在DS寄存器中: 物理地理=(DS)×10H+有效地址 如指令中指定BP寄存器,則操作數(shù)在堆棧段中,段地址在SS中: 物理地理=(SS)×10H+有效地址(5)寄存器相對(duì)尋址方式操作數(shù)的有效地址是一個(gè)基址或變址寄存器的內(nèi)容和指令中指定的8位或16位位移量(displacement)之和。即指令格式:MOVAX,COUNT[SI]
或
MOVAX,[COUNT+SI]
假設(shè)(DS)=3000H,(SI)=2000H,COUNT=3000H,
則:PA=35000H
指令的執(zhí)行情況如圖,執(zhí)行結(jié)果是:
(AX)=1234H(5)寄存器相對(duì)尋址方式(5)寄存器相對(duì)尋址方式*存放EA的寄存器只能是BX,SI,DI,BP(指16位尋址的情況)
MOVAX,COUNT[CX]
*
SRC和DST的長(zhǎng)度(數(shù)據(jù)類型)要一致
例:MOVDL,AADR[BX];ADDR[BX]指示一個(gè)字節(jié)單元
MOVDX,AADR[BX];ADDR[BX]指示一個(gè)字單元*
s,d不能同時(shí)用存儲(chǔ)器尋址方式例:MOV[SI],COUNT[BX]
MOV[2000H],COUNT[BX]
MOV[2000H+SI],COUNT[BX]
(5)寄存器相對(duì)尋址方式總結(jié)(6)基址變址尋址方式操作數(shù)的有效地址是一個(gè)基址寄存器和一個(gè)變址寄存器的內(nèi)容之和。兩個(gè)寄存器均由指令指定。如基址寄存器為BX時(shí),段寄存器使用DS;
物理地址=(DS)×10H+(BX)+(SI)
或物理地址=(DS)×10H+(BX)+(DI)如基址寄存器為BP時(shí),段寄存器則用SS。
物理地址=(SS)×10H+(BP)+(SI)
或物理地址=(SS)×10H+(BP)+(DI)例:MOVAX,[BX][DI]
(或?qū)憺镸OVAX,[BX+DI])
如(DS)=2100H,(BX)=0158H,(DI)=10A5H
則EA=0158H+10A5H=11FDH
物理地址=21000H+11FDH=221FDH
指令執(zhí)行情況如圖所示,最后的執(zhí)行結(jié)果是(AX)=1234H。
(6)基址變址尋址方式(6)基址變址尋址方式*可以指定段跨越前綴,例:
MOVAX,ES:[BX][SI]*存放EA的寄存器只能是BX,SI,DI,BP(指16位尋址的情況),并且必須是一個(gè)基址寄存器和一個(gè)變址寄存器的組合。即:
(BX)+(SI) (BX)+(DI) (BP)+(SI) (BP)+(DI)以下是錯(cuò)誤的:MOVAX,[BX][BP]
MOVAX,[SI][DI]
MOVAX,[BX][CX]
(6)基址變址尋址方式總結(jié)*SRC和DST的字長(zhǎng)應(yīng)該一致
MOVDL,[BX][SI];[BX][SI]指示一個(gè)字節(jié)單元
MOVDX,[BX][SI];ADDR[BX]指示一個(gè)字單元*s,d不能同時(shí)用存儲(chǔ)器尋址方式例: MOV[SI],COUNT[BX]
MOV[2000H],COUNT[BX]
MOV[2000H+SI],COUNT[BX]
MOV[2000H],[BX][SI]
(6)基址變址尋址方式總結(jié)(7)相對(duì)基址變址尋址方式操作數(shù)的有效地址是一個(gè)基址寄存器和一個(gè)變址寄存器的內(nèi)容和8位或16位位移量之和。同樣,當(dāng)基址寄存器為BX時(shí),使用DS為段寄存器
物理地址=(DS)×10H+(BX)+(SI)+8位位移量
16位位移量物理地址=(DS)×10H+(BX)+(DI)+8位位移量
16位位移量
而當(dāng)基址寄存器為BP時(shí),則使用SS為段寄存器。
物理地址=(SS)×10H+(BP)+(SI)+8位位移量
16位位移量物理地址=(SS)×10H+(BP)+(DI)+8位位移量
16位位移量
MOVAX,MASK[BX][SI]
或
MOVAX,MASK[BX+SI]
或MOVAX,[MASK+BX+SI](7)相對(duì)基址變址尋址方式例:
MOVAX,MASK[BX][SI]
(或MOVAX,MASK[BX+SI], 或MOVAX,[MASK+BX+SI])
假設(shè)(DS)=3000H,(BX)=2000H,(SI)=1000H,MASK=0250H,
則物理地址=30000H+2000H+1000H+0250H=33250H
相對(duì)基址變址尋址方式舉例指令執(zhí)行情況如圖所示,最后的執(zhí)行結(jié)果是:(AX)=1234H。
(7)相對(duì)基址變址尋址方式(7)相對(duì)基址變址尋址方式(7)相對(duì)基址變址尋址方式總結(jié)可以指定段跨越前綴存放EA的寄存器只能是BX,SI,DI,BP(指16位尋址的情況),并且必須是一個(gè)基址寄存器和一個(gè)變址寄存器的組合。SRC和DST的長(zhǎng)度應(yīng)該一致
s,d不能同時(shí)用存儲(chǔ)器尋址方式通常用于二維數(shù)組的尋址訪問(wèn)存儲(chǔ)器的方式默認(rèn)的段寄存器可跨越的段寄存器偏移地址取指令CS無(wú)IP堆棧操作SS無(wú)SP一般數(shù)據(jù)訪問(wèn)DSCSESSS有效地址EABP作為基址的尋址SSCSDSESBP串操作的源操作數(shù)DSCSESSSSI串操作的目的操作數(shù)ES無(wú)DI段寄存器的使用規(guī)定3.28086的指令系統(tǒng)數(shù)據(jù)傳送指令
算術(shù)指令
邏輯指令
串處理指令
控制轉(zhuǎn)移指令
處理機(jī)控制與雜項(xiàng)操作指令
(1)指令功能--該指令能實(shí)現(xiàn)何種操作,通常指令助記符就是指令功能的英文縮寫詞。
(2)指令支持的尋址方式--指令中的源操作數(shù)和目的操作數(shù)字段允許采用的尋址方式。
(3)指令對(duì)標(biāo)志位的影響--該指令執(zhí)行后對(duì)各個(gè)標(biāo)志位的影響。
(4)指令的特殊要求--該指令隱含使用或限定使用的寄存器以及需要預(yù)置的參數(shù)。學(xué)習(xí)一條指令時(shí),要注意以下幾個(gè)方面:數(shù)據(jù)傳送指令:數(shù)據(jù)傳送指令的功能是把數(shù)據(jù)、地址傳送到寄存器或存儲(chǔ)器單元中
通用數(shù)據(jù)傳送指令
MOV、PUSH、POP、XCHG累加器專用傳送指令
IN、OUT、XLAT地址傳送指令
LEA、LDS、LES標(biāo)志寄存器傳送指令
LAHF、SAHF、PUSHF、POPF類型轉(zhuǎn)換指令
CBW、CWD通用數(shù)據(jù)傳送指令MOV傳送指令:MOVDST,SRC執(zhí)行操作:(DST)(SRC)功能:將源操作數(shù)(字節(jié)或字)傳送到目的地址支持的尋址方式:src可用data,mem,reg
Dst可用mem,reg例:MOVAX,DATA_SEG MOVDS,AX例:
MOVAL,’E’例:
MOVBX,OFFSETTABLE
MOV指令總結(jié)注意:*DST不能是立即數(shù)和CS*DST、SRC不能同時(shí)為存儲(chǔ)器尋址*DST、SRC不能同時(shí)為段寄存器
MOVDS,ES*立即數(shù)不能直接送段寄存器
MOVDS,2000H*不影響標(biāo)志位
通用寄存器AX、BX、CX、DXBP、SP、SI、DIDSESSS
存儲(chǔ)器
CS
立即數(shù)MOV指令數(shù)據(jù)傳送方向示意圖:堆棧操作指令堆棧是一個(gè)“后進(jìn)先出FILO”(或說(shuō)“先進(jìn)后出FILO”)的主存區(qū)域,位于堆棧段中;SS段寄存器記錄其段地址堆棧只有一個(gè)出口,即當(dāng)前棧頂;用堆棧指針寄存器SP指定堆棧只有兩種基本操作:進(jìn)棧和出棧,對(duì)應(yīng)兩條指令PUSH和POP圖示例:假設(shè)(AX)=2107H,執(zhí)行
PUSHAX********(SP)PUSHAX執(zhí)行前(SP)********07H21H低地址
高地址PUSHAX執(zhí)行后進(jìn)棧方向執(zhí)行操作:(SP)(SP)–2((SP)+1,(SP))(SRC)
進(jìn)棧指令:PUSHSRC進(jìn)棧指令:PUSHSRC(SP)********07H21HPOPAX執(zhí)行前(SP)********07H21H低地址
高地址
POPAX執(zhí)行后
(AX)=2107H例:POPAX出棧方向執(zhí)行操作: (DST)((SP)+1,(SP)) (SP)(SP)+2出棧指令:POPDST出棧指令:POPDST堆棧:‘先進(jìn)后出’的存儲(chǔ)區(qū),段地址存放在SS中,
SP在任何時(shí)候都指向棧頂,進(jìn)出棧后自動(dòng)修改SP。注意:
●PUSH和POP指令只能是字操作,因此存取字?jǐn)?shù)據(jù)后,SP的修改必須是+2或-2;
●PUSH和POP指令不能使用立即數(shù)方式(單操作數(shù)指令一般不能使用立即數(shù)方式);
PUSH1234H
●POP指令的dst不允許是CS寄存器;POPCS
●PUSH和POP指令都不影響標(biāo)志位。堆棧操作指令總結(jié)例:PUSHAXPUSHBXPUSHCX……;其間用到AX、BX、CXPOPCX;后進(jìn)先出
POPBXPOPAXPUSH指令在程序中常用來(lái)暫存某些數(shù)據(jù),而POP指令又可將這些數(shù)據(jù)恢復(fù)。注意恢復(fù)數(shù)據(jù)時(shí)寄存器的操作順序(出棧和進(jìn)棧的順序相反)。堆棧操作指令常見(jiàn)用途(4)換碼指令XLAT(translate)將BX指定的緩沖區(qū)中、AL指定的位移處的一個(gè)字節(jié)數(shù)據(jù)取出賦給AL格式:XLAT
;al←ds:[bx+al]換碼指令執(zhí)行前:在主存建立一個(gè)字節(jié)量表格,內(nèi)含要轉(zhuǎn)換成的目的代碼表格首地址存放于BX,AL存放相對(duì)表格首地址的位移量換碼指令執(zhí)行后:將AL寄存器的內(nèi)容轉(zhuǎn)換為目標(biāo)代碼演示IN/OUT累加器專用傳送指令(只限使用AX或AL)輸入指令I(lǐng)N(I/OCPU)
長(zhǎng)格式:INAL,PORT(字節(jié))
INAX,PORT(字)執(zhí)行操作:(AL)(PORT)(字節(jié))
(AX)(PORT+1,PORT)(字)短格式:INAL,DX(字節(jié))
INAX,DX(字)執(zhí)行操作:(AL)((DX))(字節(jié))
(AX)((DX)+1,(DX))(字)例:INAX,28H MOVDATA_WORD,AX例:MOVDX,3FCHINAX,DXINAL,DX累加器專用傳送指令(只限使用AX或AL)累加器專用傳送指令(只限使用AX或AL)輸出指令OUT(CPUI/O)長(zhǎng)格式:OUTPORT,AL(字節(jié))
OUTPORT,AX(字)執(zhí)行操作:(PORT)(AL)(字節(jié))
(PORT+1,PORT)(AX)(字)短格式:OUTDX,AL(字節(jié))
OUTDX,AX(字)執(zhí)行操作:((DX))(AL)(字節(jié))
((DX)+1,(DX))(AX)(字)例:OUT5,ALOUT5,AX例:MOVDX,3FCHMOVAL,80HOUTDX,ALOUTDX,AX累加器專用傳送指令(只限使用AX或AL)IN/OUT注意:*不影響標(biāo)志位*前256個(gè)端口號(hào)00H~FFH可直接在指令中指定(長(zhǎng)格式)*如果端口號(hào)256,端口號(hào)
DX(短格式)
有效地址送寄存器指令:LEAREG,SRC
指針?biāo)图拇嫫骱虳S指令:LDSREG,SRC
指針?biāo)图拇嫫骱虴S指令:LESREG,SRC
注意:
*不影響標(biāo)志位*REG必須是通用寄存器*SRC必須為存儲(chǔ)器尋址方式地址傳送指令有效地址送寄存器指令LEA格式為:LEAREG,SRC執(zhí)行的操作:(REG)←SRC指令把源操作數(shù)的有效地址送到指定的寄存中。
例:LEABX,[BX+SI+0F62H]如指令執(zhí)行前(BX)=0400H,(SI)=003CH則指令執(zhí)行后(BX)=0400+003C+0F62=139EH必須注意,在這里BX寄存器得到的是偏移地址而不是該存儲(chǔ)單元的內(nèi)容。LEA40H00H00H30HTABLE(DS):1000HMOVBX,TABLE;(BX)=0040HMOVBX,OFFSETTABLE;(BX)=1000HLEABX,TABLE;(BX)=1000HLEA舉例
CBWALAX
執(zhí)行操作:若(AL)的最高有效位為0,則(AH)=00H
若(AL)的最高有效位為1,則(AH)=FFH
CWDAX(DX,AX)
執(zhí)行操作:若(AX)的最高有效位為0,則(DX)=0000H
若(AX)的最高有效位為1,則(DX)=FFFFH
例:(AX)=0BA45HCBW;(AX)=0045HCWD;(DX)=0FFFFH(AX)=0BA45H注意:*無(wú)操作數(shù)指令*隱含對(duì)AL或AX進(jìn)行符號(hào)擴(kuò)展*不影響條件標(biāo)志位類型轉(zhuǎn)換指令
加法指令
ADD、ADC、INC
減法指令
SUB、SBB、DEC、NEG、CMP
乘法指令
MUL、IMUL
除法指令
DIV、IDIV算術(shù)指令:算術(shù)運(yùn)算指令包括二進(jìn)制運(yùn)算及十進(jìn)制運(yùn)算指令。算術(shù)指令用來(lái)執(zhí)行算術(shù)運(yùn)算,它們中有雙操作數(shù)指令,也有單操作數(shù)指令。如前所述,雙操作數(shù)指令的兩個(gè)操作數(shù)不允許同時(shí)使用存儲(chǔ)器尋址方式。單操作數(shù)指令不允許使用立即數(shù)方式。算術(shù)指令的尋址方式,均遵循這一規(guī)則。加法指令:ADDDST,SRC
執(zhí)行操作:(DST)(SRC)+(DST)
帶進(jìn)位加法指令:ADCDST,SRC
執(zhí)行操作:(DST)(SRC)+(DST)+CF
加1指令:INCOPR
執(zhí)行操作:(OPR)(OPR)+1注意:*除INC指令不影響CF標(biāo)志外,均對(duì)條件標(biāo)志位有影響。
*ADD和ADC指令是雙操作數(shù)指令,它們的兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址方式,并且兩個(gè)操作數(shù)的類型要一致,目的操作數(shù)不能為立即數(shù)。*INC指令是單操作數(shù)指令,它的操作數(shù)不能使用立即數(shù)方式。ADD加法指令加法指令正確格式舉例ADDAX,BXADDAX,12ADDAL,BHADDAX,[BX]ADD[SI],BXADD[BX],ALADDBYTEPTR[BX],34H1運(yùn)算結(jié)果為負(fù)0運(yùn)算結(jié)果非負(fù)SF=1運(yùn)算結(jié)果為00運(yùn)算結(jié)果非0ZF=加法指令對(duì)條件標(biāo)志位的影響1結(jié)果操作數(shù)中有偶數(shù)個(gè)10結(jié)果操作數(shù)中有奇數(shù)個(gè)1PF=1運(yùn)算時(shí)有第三位向第四位的進(jìn)位時(shí)0運(yùn)算時(shí)無(wú)第三位向第四位的進(jìn)位時(shí)AF=加法指令錯(cuò)誤格式舉例ADD5,AL ×ADDAL,1234H ×ADD[BX],[2000H] ×ADD[BX],5 ×INC3 ×INC[SI] ×減法指令減法指令:SUBDST,SRC執(zhí)行操作:(DST)(DST)-(SRC)帶借位減法指令:SBBDST,SRC執(zhí)行操作:(DST)(DST)-(SRC)-CF減1指令:DECOPR執(zhí)行操作:(OPR)(OPR)-1求補(bǔ)指令:NEGOPR執(zhí)行操作:(OPR)-(OPR)或者表示為:(OPR)←0FFFFH-(OPR)+1
或者表示為:(OPR)←0-(OPR)比較指令:CMPOPR1,OPR2執(zhí)行操作:(OPR1)-(OPR2)SUB減法指令正確格式舉例SUBAX,BXSUBAX,12SUBAL,BHSUBAX,[BX]SUB[SI],BXSUB[BX],ALSUBBYTEPTR[BX],34H減法指令注意:*除DEC指令不影響CF標(biāo)志外,均對(duì)條件標(biāo)志位有影響。*SUB、SBB和CMP指令是雙操作數(shù)指令,它們的兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址方式,并且兩個(gè)操作數(shù)的類型要一致。*DEC和NEG指令是單操作數(shù)指令,它們的操作數(shù)不能使用立即數(shù)方式。減法指令錯(cuò)誤格式舉例SUB5,AL ×SUBAL,1234H ×SUB[BX],[2000H] ×SUB[BX],5 ×DEC3 ×NEG4 ×DEC[SI] ×NEG[DI] ×乘法指令
無(wú)符號(hào)數(shù)乘法指令:MULSRC
帶符號(hào)數(shù)乘法指令:IMULSRC執(zhí)行操作:字節(jié)操作數(shù)(AX)(AL)*(SRC)
字操作數(shù)(DX,AX)(AX)*(SRC)注意:
*AL(AX)為隱含的乘數(shù)寄存器。*AX(DX,AX)為隱含的乘積寄存器。*SRC不能為立即數(shù)。*除CF和OF外,對(duì)條件標(biāo)志位無(wú)定義。乘法指令正確格式舉例:MULBL MULBXIMULCLIMULBX乘法指令錯(cuò)誤格式舉例:MULAL,BL ×MUL3 ×IMULBX,CX ×IMUL6 ×無(wú)符號(hào)數(shù)除法指令:DIVSRC帶符號(hào)數(shù)除法指令:IDIVSRC
執(zhí)行操作:字節(jié)操作(AL)(AX)/(SRC)的商
(AH)(AX)/(SRC)的余數(shù)字操作
(AX)(DX,AX)/(SRC)的商
(DX)(DX,AX)/(SRC)的余數(shù)注意:
*AX(DX,AX)為隱含的被除數(shù)寄存器。*AL(AX)為隱含的商寄存器。*AH(DX)為隱含的余數(shù)寄存器。*SRC不能為立即數(shù)。*對(duì)所有條件標(biāo)志位均無(wú)定義。除法指令DIVBL DIVBXIDIVCLIDIVBX除法指令正確格式舉例:DIVAX,BL ×DIV3 ×IDIVBX,CL ×IDIV6 ×DIV[BX] ×IDIV[SI] ×除法指令錯(cuò)誤格式舉例:邏輯運(yùn)算指令
AND、OR、NOT、XOR、TEST移位指令
SHL、SHR、SAL、SAR、
ROL、ROR、RCL、RCR3.2.3邏輯運(yùn)算和移位指令:邏輯非指令:NOTOPR*OPR不能為立即數(shù)執(zhí)行操作:(OPR)
*不影響標(biāo)志位
邏輯與指令:ANDDST,SRC執(zhí)行操作:(DST)(DST)(SRC)邏輯或指令:ORDST,SRC執(zhí)行操作:(DST)(DST)(SRC)異或指令:XORDST,SRC執(zhí)行操作:(DST)(DST)(SRC)測(cè)試指令:TESTOPR1,OPR2
執(zhí)行操作:(OPR1)(OPR2)CFOFSFZFPFAF00***無(wú)定義
根據(jù)運(yùn)算結(jié)果設(shè)置邏輯運(yùn)算指令演示例:屏蔽AL的第0、1兩位
ANDAL,0FCH例:置AL的第5位為1
ORAL,20H
例:使AL的第0、1位變反
XORAL,3例:測(cè)試某些位是0是1
TESTAL,1JZEVEN
********
OR00100000**1*****
******01XOR00000011
******10
********
AND11111100******00********
AND000000010000000*邏輯運(yùn)算指令的應(yīng)用邏輯運(yùn)算指令的錯(cuò)誤格式舉例:NOT[BX] ×NOT3 ×AND[SI],[2000H+BX] ×OR1234H,AX ×XORAX,BL ×
1.邏輯左移SHL(ShiftLogicalLeft)2.算術(shù)左移SAL(ShiftArithmeticLeft)3.邏輯右移SHR(ShiftlogicalRight)4.算術(shù)右移SAR(ShiftArithmeticRight)5.循環(huán)左移ROL(RotateLeft)6.循環(huán)右移ROR(RotateRight)7.帶進(jìn)位循環(huán)左移RCL(RotateLeftthroughCarry)
8.帶進(jìn)位循環(huán)右移RCR(RotateRightthroughCarry)2移位指令移位指令的格式及操作數(shù)移位指令的第一個(gè)操作數(shù)是指定的被移位的操作數(shù),可以是寄存器或存儲(chǔ)單元(字節(jié)或者字)。后一個(gè)操作數(shù)表示移位位數(shù),該操作數(shù)為1,表示移動(dòng)一位;當(dāng)移位位數(shù)大于1時(shí),則用CL寄存器值表示,該操作數(shù)表達(dá)為CL。允許OPR和CL的長(zhǎng)度不一致。格式:移位指令操作碼OPR,1或者:移位指令操作碼OPR,CL
;移位次數(shù)大于1時(shí)1.邏輯左移指令SHL2.算術(shù)左移指令SAL語(yǔ)句格式: SALOPR,1 或:SALOPR,CL
SHLOPR,1 或:SHLOPR,CL功能:將(OPR)向左移動(dòng)CL指定的次數(shù),最低位補(bǔ)入相應(yīng)的0,CF的內(nèi)容為最后移入位的值。演示
CF0語(yǔ)句格式:SHROPR,1或SHROPR,CL功能:將(OPR)向右移動(dòng)CL規(guī)定的次數(shù),最高位補(bǔ)入相應(yīng)個(gè)數(shù)的0,CF的內(nèi)容為最后移入位的值。演示
0CF3.邏輯右移指令SHR語(yǔ)句格式:SAROPR,1 或:SAROPR,CL功能:將(OPR)向右移動(dòng)CL指定的次數(shù)且最高位保持不變;CF的內(nèi)容為最后移入位的值。演示CF4.算術(shù)右移指令SAR移位指令的用途算術(shù)移位適于帶符號(hào)數(shù)的移位處理。一個(gè)數(shù)左移n位相當(dāng)于乘以2n,右移n位相當(dāng)于除以2n,所以,當(dāng)一個(gè)帶符號(hào)數(shù)需要乘(或除)2n時(shí),可使用算術(shù)移位指令SAL(或SAR)。當(dāng)一個(gè)無(wú)符號(hào)數(shù)需要乘(或除)2n時(shí),可使用邏輯移位指令SHL(或SHR)。使用移位指令將一個(gè)數(shù)擴(kuò)大或縮小2n倍,比使用乘法或除法指令的速度快。
循環(huán)移位: 將操作數(shù)從一端移出的位返回到另一端形成循環(huán),分成不帶進(jìn)位和帶進(jìn)位,分別具有左移或右移操作語(yǔ)句格式:ROLOPR,1
或:ROLOPR,CL功能:將目的操作數(shù)的最高位與最低位連成一個(gè)環(huán),將環(huán)中的所有位一起向左移動(dòng)CL規(guī)定的次數(shù)。CF的內(nèi)容為最后移入位的值。演示CF
5.循環(huán)左移指令ROL語(yǔ)句格式:ROROPR,1
或:ROROPR,CL功能:將目的操作數(shù)的最高位與最低位連成一個(gè)環(huán),將環(huán)中的所有位一起向右移動(dòng)CL規(guī)定的次數(shù),CF的內(nèi)容為最后移入位的值。演示CF6.循環(huán)右移指令ROR語(yǔ)句格式:RCLOPR,1或RCLOPR,CL功能:將目的操作數(shù)連同CF標(biāo)志一起向左循環(huán)移動(dòng)CL規(guī)定的次數(shù)。演示
CF7.帶進(jìn)位的循環(huán)左移指令RCL語(yǔ)句格式:RCROPR,1或RCROPR,CL功能:將目的操作數(shù)連同CF標(biāo)志一起向右循環(huán)移動(dòng)所規(guī)定的次數(shù)。演示CF8.帶進(jìn)位的循環(huán)右移指令RCR*
OPR可用除立即數(shù)以外的任何尋址方式*CNT=1,SHLOPR,1CNT>1,MOVCL,CNTSHLOPR,CL;以SHL為例*條件標(biāo)志位:
CF=移入的數(shù)值
1CNT=1時(shí),最高有效位的值發(fā)生變化0CNT=1時(shí),最高有效位的值不變移位指令:
SF、ZF、PF根據(jù)移位結(jié)果設(shè)置,AF無(wú)定義循環(huán)移位指令:
不影響SF、ZF、PF、AFOF=注意:(移位和循環(huán)移位指令)例: (AX)=0012H,(BX)=0034H要求把它們裝配在一起形成(AX)=1234H,可編制程序如下:
MOVCL,8
ROLAX.CL
ADDAX,BX
移位指令允許源操作數(shù)和目的操作數(shù)的長(zhǎng)度不一致:SHLAL,1SHRAX,1RORAL,CLRCLAX,CLROLWORDPTR[BX],CLSARBYTEPTR[BX],CL移位指令的正確格式舉例SHLAL,3 ×SHRAX,4 ×RORAL,BL ×RCLAX,BX ×RCR[BX],CL ×RCL12H,CL ×移位指令的錯(cuò)誤格式舉例:3.2.5控制轉(zhuǎn)移指令8086程序的執(zhí)行順序由代碼段寄存器CS和指令指針寄存器IP的值決定。程序可以按順序執(zhí)行,也可以根據(jù)情況改變程序的執(zhí)行順序??刂妻D(zhuǎn)移指令就是通過(guò)改變CS和IP的值來(lái)實(shí)現(xiàn)程序的轉(zhuǎn)移??刂妻D(zhuǎn)移指令根據(jù)程序轉(zhuǎn)移地址的不同,分為段內(nèi)轉(zhuǎn)移和段間轉(zhuǎn)移。段內(nèi)轉(zhuǎn)移是指程序在同一代碼段內(nèi)轉(zhuǎn)移,這時(shí)只要改變IP的值。段間轉(zhuǎn)移指程序?qū)⑥D(zhuǎn)移到其他段,此時(shí)CS和IP的值同時(shí)改變。1.無(wú)條件轉(zhuǎn)移指令無(wú)條件轉(zhuǎn)移指令執(zhí)行后,程序無(wú)條件轉(zhuǎn)移到由指令中給出的目標(biāo)地址處。(1)段內(nèi)直接轉(zhuǎn)移指令格式一:JMP標(biāo)號(hào)指令完成的操作:IP←(IP)+以標(biāo)號(hào)給出的偏移量,(CS)不變。例:JMP SHORTLABEL1 ;(IP)←(IP)+8位偏移量,轉(zhuǎn)向符號(hào)地址LABEL1處2.JMP NEARPTRLABEL2 ;(IP)←(IP)+16位偏移量,轉(zhuǎn)向符號(hào)地址LABEL2處2.過(guò)程調(diào)用與返回指令需要反復(fù)被調(diào)用的具有一定功能的程序段可以被設(shè)計(jì)成過(guò)程(也稱為子程序),以供需要時(shí)調(diào)用。在過(guò)程中需要安排返回指令,使得過(guò)程結(jié)束時(shí),返回到調(diào)用處。過(guò)程與調(diào)用程序在同一段內(nèi),稱“段內(nèi)調(diào)用”;過(guò)程與調(diào)用程序不在同一段內(nèi),稱“段間調(diào)用”。過(guò)程調(diào)用指令CALL和返回指令RET均不影響標(biāo)志位,但影響堆棧內(nèi)容。(1)過(guò)程調(diào)用指令段內(nèi)直接調(diào)用指令格式:CALL過(guò)程名指令完成的操作:①(SP)←(SP)-2;②(SS:SP)←(IP);③(IP)←(IP)+16位偏移量。(2)過(guò)程返回指令無(wú)參數(shù)段內(nèi)返回格式:RET指令完成的操作:①(IP)←(SS:SP);
②(SP)←(SP)+2。有參數(shù)段內(nèi)返回格式:RETn指令完成的操作:①(IP)←(SS:SP);
②(SP)←(SP)+2+n。3.條件轉(zhuǎn)移指令格式:Jcc
標(biāo)號(hào)功能:以標(biāo)志位的狀態(tài)作為轉(zhuǎn)移依據(jù)。如果滿足轉(zhuǎn)移條件,則轉(zhuǎn)移到標(biāo)號(hào)指示的指令處;否則,順序執(zhí)行下一條指令。說(shuō)明:cc代表跳轉(zhuǎn)條件,short-label表明該指令只能實(shí)現(xiàn)段內(nèi)短轉(zhuǎn)移,參數(shù)形式通常為符號(hào)地址。(1)根據(jù)單個(gè)標(biāo)志位的狀態(tài)判斷的轉(zhuǎn)移指令指
令轉(zhuǎn)移條件說(shuō)
明JCdestCF=1有進(jìn)位/借位時(shí),轉(zhuǎn)移JNCdestCF=0無(wú)進(jìn)位/借位時(shí),轉(zhuǎn)移JZ/JEdestZF=1相等或等于0時(shí),轉(zhuǎn)移JNZ/JNEdestZF=0不相等或不等于0時(shí),轉(zhuǎn)移JSdestSF=1為負(fù)數(shù)時(shí),轉(zhuǎn)移JNSdestSF=0為正數(shù)時(shí),轉(zhuǎn)移JOdestOF=1有溢出時(shí),轉(zhuǎn)移JNOdestOF=0無(wú)溢出時(shí),轉(zhuǎn)移JPdestPF=11的個(gè)數(shù)為偶數(shù)時(shí),轉(zhuǎn)移JNPdestPF=01的個(gè)數(shù)為奇數(shù)時(shí),轉(zhuǎn)移JZ指令用法舉例例如:OR AX,AXJZ LY ;若AX的內(nèi)容為0,則轉(zhuǎn)到LY或:TESTAX,0FFFFHJZ LY(2)根據(jù)兩個(gè)無(wú)符號(hào)數(shù)的比較結(jié)果判斷的轉(zhuǎn)移指令指
令轉(zhuǎn)移條件說(shuō)
明JA/JNBEdestCF=0且ZF=0X>Y時(shí),轉(zhuǎn)移J
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年智能車輛托管及保養(yǎng)合作協(xié)議4篇
- 二零二五年度離婚協(xié)議書下載與婚姻法律事務(wù)處理服務(wù)協(xié)議4篇
- 二零二五年度存量房買賣合同房屋附屬設(shè)施轉(zhuǎn)讓協(xié)議4篇
- 2025年度生態(tài)補(bǔ)償機(jī)制下樹木種植與生態(tài)效益合同4篇
- 二零二五年度金融科技產(chǎn)品代理銷售合同范本8篇
- 二零二五年度殯儀館花卉產(chǎn)業(yè)人才培養(yǎng)與戰(zhàn)略合作合同3篇
- 二零二五版貿(mào)促會(huì)棉花行業(yè)風(fēng)險(xiǎn)評(píng)估與保險(xiǎn)合同4篇
- 二零二五年度瓷磚鋪設(shè)工程設(shè)計(jì)與施工合同范本3篇
- 二零二五版二手車買賣合同范本:二手車交易合同樣本與車輛信息核實(shí)
- 二零二五年度鋼管腳手架工程驗(yàn)收與保修合同4篇
- 國(guó)家自然科學(xué)基金項(xiàng)目申請(qǐng)書
- 電力電纜故障分析報(bào)告
- 中國(guó)電信網(wǎng)絡(luò)資源管理系統(tǒng)介紹
- 2024年浙江首考高考選考技術(shù)試卷試題真題(答案詳解)
- 《品牌形象設(shè)計(jì)》課件
- 倉(cāng)庫(kù)管理基礎(chǔ)知識(shí)培訓(xùn)課件1
- 藥品的收貨與驗(yàn)收培訓(xùn)課件
- GH-T 1388-2022 脫水大蒜標(biāo)準(zhǔn)規(guī)范
- 高中英語(yǔ)人教版必修第一二冊(cè)語(yǔ)境記單詞清單
- 政府機(jī)關(guān)保潔服務(wù)投標(biāo)方案(技術(shù)方案)
- HIV感染者合并慢性腎病的治療指南
評(píng)論
0/150
提交評(píng)論