版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
3、邏輯運算與移位指令⑴
邏輯與/或/異或/測試指令⑵
邏輯非指令⑶
算術(shù)/邏輯左移指令⑷
算術(shù)/邏輯右移指令⑸
循環(huán)移位指令⑹
雙精度左移/右移指令第二章
指令系統(tǒng)
整數(shù)指令
邏輯/移位
提要1第二章
指令系統(tǒng)
整數(shù)指令
邏輯/移位
邏輯運算_12⑴ 邏輯與/或/異或/測試指令
AND/OR/XOR/TEST指令格式:AND/OR/XOR/TESTDST,SRCreg,reg/mem/immmem,reg/imm0———XX—U—X—0功能:AND/OR/XOR分別對DST和SRC按位進行邏輯與/或/異或操作,結(jié)果存入DST中。即:DST
(DST)與/或/異或(SRC)TEST只對DST和SRC按位進行邏輯與操作,不存結(jié)果。注意:操作數(shù)DST、SRC的寬度必須相等。四條指令對標(biāo)志位的影響相同:OF
DF
IF
TF
SF
ZF
AF
PF
CF第二章
指令系統(tǒng)
整數(shù)指令
邏輯/移位
邏輯運算_2例5:TEST
AL,80H
;僅測試(AL)的最高位JZ
BUSY ;最高位為0,則轉(zhuǎn)向BUSY例1:將ASCII碼轉(zhuǎn)換為未組合BCD碼。MOV
AL,‘6’
;6的ASCII碼送AL,(AL)=36HAND
AL,0FH
;用0屏蔽高4位,用1保留低4位例2:將未組合BCD碼轉(zhuǎn)換為ASCII碼。MOV
AL,9
;(AL)=09HOR
AL,30H
;用1強行置位,(AL)=39H例3:對寄存器的某些位求反,某些位保持不變。MOV
CL,0F0HXOR
AL,CL ;用1對高4位求反,用0保留低4位例4:XOR
CX,CX
;這條指令結(jié)果如何?3⑵ 邏輯非指令
NOT指令格式:NOT
DSTregmem功能:對DST中每一位都求反(0變1,1變0)。不影響標(biāo)志位。舉例:NOTBX;設(shè)執(zhí)行前(BX)=5555H;則執(zhí)行后(BX)=AAAAH第二章
指令系統(tǒng)
整數(shù)指令
邏輯/移位
邏輯運算_34第二章
指令系統(tǒng)
整數(shù)指令
邏輯/移位
左移_1⑶ 算術(shù)/邏輯左移指令
SAL/SHL指令格式:
SAL/SHL
DST, 移位次數(shù)reg/mem,
imm8/CL功能:都是將DST的內(nèi)容向左移位,移動次數(shù)由
imm8/CL決定。每左移一位,將最高有效位MSB移進CF,在最低有效位LSB補0。CF
MSB 操作數(shù)
LSB05第二章
指令系統(tǒng)
整數(shù)指令
邏輯/移位
左移_2說明:①
影響標(biāo)志位:OF、SF、ZF、PF、CF。② 規(guī)定80386以上移位次數(shù)不超過31;8086用立即數(shù)時只能是1,用CL時最多可移位255次。③ 移位次數(shù)為1時,若移位后進位標(biāo)志CF與結(jié)果的最高位相等,則OF=0,否則OF=1。舉例:將AX中的無符號數(shù)乘8。6MOVAX,12HMOVCL,3SALAX,CL;左移三次,相當(dāng)于;AX
(AX)×8=90H⑷ 算術(shù)/邏輯右移指令
SAR/SHR指令格式:SAR/SHR
DST, 移位次數(shù)reg/mem,
imm8/CL功能:SAR是算術(shù)右移指令,對有符號數(shù)右移;
SHR是邏輯右移指令,對無符號數(shù)右移。都是將DST的內(nèi)容向右移位,移動次數(shù)由imm8/CL決定。第二章
指令系統(tǒng)
整數(shù)指令
邏輯/移位
右移_1CF
MSB 操作數(shù)
LSB算術(shù)右移(SAR)(最高位符號位擴展)邏輯右移(SHR)0CFMSB操作數(shù)LSB7第二章
指令系統(tǒng)
整數(shù)指令
邏輯/移位
右移_2說明:1、影響標(biāo)志位:OF、SF、ZF、PF、CF。2、移位次數(shù)的規(guī)定與SAL/SHL相同。3、移位次數(shù)為1時,對SAR指令,將OF置0;對SHR指令,將OF置成與原DST最高有效
位MSB相同的值。右移指令常用于實現(xiàn)除以2n的操作例如:將AX中的有符號數(shù)除以16(=24)。8MOVAX,-1024;(AX)=FC00HMOVCL,4SARAX,CL;(AX)=FFC0H=-64第二章
指令系統(tǒng)
整數(shù)指令
邏輯/移位
循環(huán)移位_19⑸ 循環(huán)移位指令
ROL/ROR/RCL/RCR指令格式:ROL/ROR/RCL/RCR
DST
,
移位次數(shù)reg/mem
,imm8/CL功能:ROL和ROR分別為左環(huán)移和右環(huán)移指令,對
DST進行循環(huán)左移和循環(huán)右移。RCL和RCR則是將標(biāo)志位CF與DST連接在一起進行循環(huán)左移和循環(huán)右移。說明:移位次數(shù)由imm8/CL決定。四條指令影響標(biāo)志位:OF、SF、ZF、PF、CF。第二章
指令系統(tǒng)
整數(shù)指令
邏輯/移位
循環(huán)移位_2CF
MSB 操作數(shù)DST
LSB循環(huán)左移
ROLCFMSB操作數(shù)DSTLSB循環(huán)右移
RORCFMSB操作數(shù)DSTLSBCFMSB操作數(shù)DSTLSB帶進位循環(huán)左移
RCL帶進位循環(huán)右移
RCR10第二章
指令系統(tǒng)
整數(shù)指令
邏輯/移位
循環(huán)移位_3舉例:編寫程序段,將寄存器AL中的內(nèi)容順序顛倒,即將AL7~AL0變?yōu)锳L0~AL7
。CFMSBAL
LSBMSBBL
LSBROL11RCRBL,AL
;BL
(AL)MOV
MOVAGAIN:ROLRCRCL,8BL,1AL,1;循環(huán)次數(shù)為8;(BL)依次左移,最高位進入CF;(AL)依次右移,CF填充最高位LOOP
AGAINCF第二章
指令系統(tǒng)
整數(shù)指令
邏輯/移位
雙精度移位SHLD:CFDST(目的)SRC(源)SHRD:CFSRC(源)DST(目的)31
0
31
0⑹ 雙精度左移/右移指令
SHLD/SHRD指令格式:SHLD/SHRD
DST,
SRC, 移位次數(shù)reg16/mem16,reg16,imm8/CLreg32/mem32,reg32,imm8/CL功能:將DST和SRC連成雙精度值(32位或64位)向左或右移,移動次數(shù)由imm8/CL決定。SRC內(nèi)容逐位移入DST,且自己保持不變。CF中的值為DST移出的最后一位。31
0
31
012影響標(biāo)志位:SF、ZF、PF、CF。這是80386新增指令。⑴
串傳送指令⑵
串裝入指令⑶
串存儲指令⑷
串掃描指令⑸
串比較指令⑹
串輸入指令⑺
串輸出指令⑻
重復(fù)前綴第二章
指令系統(tǒng)
整數(shù)指令
串操作
提要4、串操作指令13串操作的有關(guān)約定:①
DS:(E)SI為源串,ES:(E)DI為目的串,指令中不必指明操作數(shù)。② 源串的DS可用段前綴改變,但目的串的ES不能超越。③ 源串指針(E)SI和目的串指針(E)DI在每次操作后,
將根據(jù)DF的值來自動增量(DF=0)或自動減量(DF=1),以指向下一項,增/減量大小由操作數(shù)寬度決定。④ 通常串操作指令前可加重復(fù)前綴,此時必須用(E)CX作次數(shù)計數(shù)器,操作一次,(E)CX值減1,直至減為0,結(jié)束。⑤
只有串掃描、串比較指令影響標(biāo)志位。第二章
指令系統(tǒng)
整數(shù)指令
串操作
約定14⑴ 串傳送指令
MOVS/MOVSB/MOVSW/MOVSD指令格式:MOVS目的串,源串;由串?dāng)?shù)據(jù)的寬度決定mem
,mem;字節(jié)/字/雙字串操作MOVSB
MOVSW
MOVSD;字節(jié)串傳送;字串傳送;雙字串傳送第二章
指令系統(tǒng)
整數(shù)指令
串操作
串傳送_115(E)SI
((E)SI)±1/2/4(E)DI
((E)DI)±1/2/4;修改源指針;修改目的指針功能:將DS:[(E)SI]指定的源串中的一個字節(jié)/字/
雙字傳送到ES:[(E)DI]指定的目的串,并自動修改指針??杉又貜?fù)前綴。操作:[ES:(E)DI]
([DS:(E)SI]) ;傳送第二章
指令系統(tǒng)
整數(shù)指令
串操作
串傳送_2舉例:將數(shù)據(jù)段中自FIRST開始的100個字符數(shù)據(jù)復(fù)制到附加段以SECOND開始的數(shù)據(jù)區(qū)中,用基本傳送指令實現(xiàn)。程序段如下:LEASI,F(xiàn)IRST;置源串有效地址LEADI,SECOND;置目的串有效地址MOVCX,100;設(shè)置計數(shù)初值CLD;DF=0,增量模式DONE:MOVSBLOOP
DONE;;
等效于:REP
MOVSB16第二章
指令系統(tǒng)
整數(shù)指令
串操作
串傳送_3串傳送舉例示意圖數(shù)據(jù)段(源串)DS:SI
FIRSTES:DI
SECOND‘A’‘B’‘C’‘D’‘E’······附加段(目的串)存儲器17⑵ 串裝入指令
LODS/LODSB/LODSW/LODSD指令格式:LODS
源串mem;由串?dāng)?shù)據(jù)的寬度決定;字節(jié)/字/雙字串操作第二章
指令系統(tǒng)
整數(shù)指令
串操作
串裝入18操作:AL/AX/EAX
([DS:(E)SI])(E)SI
((E)SI)±1/2/4;裝入一個數(shù)據(jù);修改源指針LODSB/LODSW/LODSD
;無顯式操作數(shù),分別對應(yīng)字節(jié)/字/雙字裝入功能:將DS:[(E)SI]指定的源串中的一個字節(jié)/字/雙字裝入累加器中,并自動修改指針。該指令前一般不加重復(fù)前綴。⑶ 串存儲指令
STOS/STOSB/STOSW/STOSD指令格式:STOS
目的串mem;由串?dāng)?shù)據(jù)的寬度決定;字節(jié)/字/雙字串操作第二章
指令系統(tǒng)
整數(shù)指令
串操作
串存儲請問:LODSW
這兩條指令合用可實現(xiàn)MOVSW的功能嗎?19STOSW操作:[ES:(E)DI]
(AL/AX/EAX)(E)DI
((E)DI)±1/2/4;存儲數(shù)據(jù);修改目的指針STOSB/STOSW/STOSD
;無顯式操作數(shù),分別對應(yīng)字節(jié)/字/雙字存儲功能:將累加器的內(nèi)容存儲到ES:[(E)DI]指定的目的
串中,自動修改指針。該指令前可加重復(fù)前綴。⑷ 串掃描指令
SCAS/SCASB/SCASW/SCASD指令格式:SCAS
目的串mem;由串?dāng)?shù)據(jù)的寬度決定;字節(jié)/字/雙字串操作第二章
指令系統(tǒng)
整數(shù)指令
串操作
串掃描_120SCASB/SCASW/SCASD
;無顯式操作數(shù),分別對應(yīng)字節(jié)/字/雙字串掃描功能:用累加器中的內(nèi)容減去ES:[(E)DI]指定的目的串元素的內(nèi)容,僅改變標(biāo)志位,不改變二者的內(nèi)容,并自動修改指針。其實質(zhì)是在掃描串中尋找與累加器中的內(nèi)容相同者,有則將標(biāo)志ZF置1。該指令用于查找串?dāng)?shù)據(jù)中的關(guān)鍵字很方便。這條指令前常加重復(fù)前綴,后跟條件轉(zhuǎn)移指令。;DF清零,增量操作CLDMOV
AL
,‘*’REPNE
SCASBJE
MATCH…;不相等則重復(fù)掃描;ZF=1,找到;ZF=0,ECX=0,沒有找到第二章
指令系統(tǒng)
整數(shù)指令
串操作
串掃描_2舉例:通過加重復(fù)前綴,在一個字符串中搜索關(guān)鍵字‘*’
。程序段如下:LEA
EDI
,STRING
;EDI指向字符串首元素MOV
ECX
,LENGTH ;串長度送ECX21第二章
指令系統(tǒng)
整數(shù)指令
串操作
串比較_122⑸ 串比較指令
CMPS/CMPSB/CMPSW/CMPSD指令格式:CMPS
目的串,源串
;由串?dāng)?shù)據(jù)的寬度決定mem
,mem ;字節(jié)/字/雙字串操作CMPSB/CMPSW/CMPSD ;無顯式操作數(shù),分別對應(yīng)字節(jié)/字/雙字串比較功能:將DS:[(E)SI]指定的源串元素的內(nèi)容減去
ES:[(E)DI]指定的目的串元素的內(nèi)容,僅改變標(biāo)志位,不改變兩個元素的值,并自動修改指針。該指令前常加重復(fù)前綴,后跟條件轉(zhuǎn)移指令來判別兩串是否匹配。第二章
指令系統(tǒng)
整數(shù)指令
串操作
串比較_2舉例:比較兩個長度為500的字節(jié)字符串是否相同,若不同,找出出現(xiàn)不同時的位置,并記入相應(yīng)單元。程序段如下:LEA
SI,FIRST
;
SI指向源串起始單元
FIRSTJMPSAME23LEADI,SECOND;DI指向目的串起始單元
SECONDMOVCX,500
;設(shè)置計數(shù)器為
500CLD;標(biāo)志DF清零,增量模式REPECMPSB
;重復(fù)比較
(DS:[SI])-(ES:[DI])JNEFOUND
;不相同(ZF=0),轉(zhuǎn)
FOUNDSAME:RET;相同,返回FOUND:DECSI
;退回一字節(jié)MOVPOINT,SI
;將不相同位置保存⑹ 串輸入指令
INSB/INSW/INSD指令格式:INSBINSWINSD;輸入字節(jié)串;輸入字串;輸入雙字串第二章
指令系統(tǒng)
整數(shù)指令
串操作
串輸入24功能:從DX寄存器指定的端口輸入一個字節(jié)/字/雙字元素傳送到ES:[(E)DI]所指定的存儲單元,并自動修改目的指針,可加重復(fù)前綴。注意:不需經(jīng)過累加器AL/AX/EAX。舉例:LEADI,DEST;DEST存儲區(qū)在ES段MOVDX,301HMOVCX,8REPINSB;從端口301H輸入8字節(jié)串⑺ 串輸出指令
OUTSB/OUTSW/OUTSD指令格式:OUTSBOUTSW
OUTSD;輸出字節(jié)串;輸出字串;輸出雙字串第二章
指令系統(tǒng)
整數(shù)指令
串操作
串輸出25功能:將DS:[(E)SI]指定的存儲單元中的字節(jié)、字
或雙字串元素輸出到由DX寄存器指定的端口,并自動修改源指針,可加重復(fù)前綴。舉例:LEA
ESI,SOURCEMOV
DX
,300HMOV
CX,
8REP
OUTSB第二章
指令系統(tǒng)
整數(shù)指令
串操作
重復(fù)前綴_1⑻ 重復(fù)前綴
REP/REPE/REPZ/REPNE/REPNZ格式:加在串操作指令之前,不可單獨使用。先進行條件判別,再執(zhí)行串操作,之后CX減1。MOVSLODSREP
STOSINSOUTS配合工作的前綴REP重復(fù)操作直到(CX)=0為止,不影響標(biāo)志位CMPSSCASREPE/REPZ
相等/為0時重復(fù),即:(CX)≠0且ZF=1時重復(fù)。REPNE/REPNZ
不等/不為0時重復(fù),即:(CX)≠0且ZF=0時重復(fù)。REPE/REPZ或REPNE/REPNZ26使用串操作指令的一般步驟:第二章
指令系統(tǒng)
整數(shù)指令
串操作
重復(fù)前綴_227LEA
DI,tab2
;
②把將要存放數(shù)據(jù)串的附加段首址(或
反向操作時的末地址)放入DI寄存器中;LEA
SI,tab1
;①把存放在數(shù)據(jù)段中的源串首址(如反向操作則應(yīng)是末址)放入SI寄存器;MOVCX,length;③把數(shù)據(jù)串長度放入CX寄存器作為重復(fù)操作計數(shù)值;CLD;④建立方向標(biāo)志;REPMOVSB;⑤執(zhí)行重復(fù)串操作。第二章 習(xí)題428教材
P118至P122:2.15(2)2.22(1)(5)(7)(8)2.252.372.43(1)第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
提要295、控制轉(zhuǎn)移指令這類指令用于改變程序執(zhí)行順序(對應(yīng)程序的轉(zhuǎn)移尋址),其實質(zhì)就是改變CS:(E)IP的內(nèi)容。主要包括以下內(nèi)容:⑴
無條件轉(zhuǎn)移指令⑵
條件轉(zhuǎn)移指令⑶
循環(huán)控制指令⑷
過程調(diào)用/返回指令⑸
中斷和中斷返回指令其中只有中斷指令影響標(biāo)志位。程序轉(zhuǎn)移示意圖:第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
示意圖代碼段1指令1······存儲器指令2指令i代碼段2指令1······指令2指令iCS:IP(2000H:100H)
20100H段間轉(zhuǎn)移30CS:IP(1000H:400H)
10400H段內(nèi)轉(zhuǎn)移10420H⑴ 無條件轉(zhuǎn)移指令
JMP指令格式:JMP目標(biāo)操作數(shù)
lablereg16/32mem16/32;直接轉(zhuǎn)移;段內(nèi)間接轉(zhuǎn)移;段內(nèi)或段間間接轉(zhuǎn)移第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
無條件_1功能:無條件地控制程序轉(zhuǎn)移到目標(biāo)操作數(shù)指定的目標(biāo)地址,即將目標(biāo)地址裝入(E)IP或CS:(E)IP。短標(biāo)號
段內(nèi)直接短轉(zhuǎn)移近標(biāo)號
段內(nèi)直接轉(zhuǎn)移8位(E)IP遠(yuǎn)標(biāo)號
段間直接轉(zhuǎn)移直接尋址leble指令中間接尋址寄存器/存儲器
段內(nèi)間接轉(zhuǎn)移存儲器
段間間接轉(zhuǎn)移CS:(E)IP(E)IPCS:(E)IP31第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
無條件_232① 段內(nèi)直接短轉(zhuǎn)移(SHORT)指令格式:
JMP
SHORT
目標(biāo)標(biāo)號目標(biāo)標(biāo)號專用于指向指令單元,SHORT是JMP特有的短轉(zhuǎn)移運算符,指明此處的目標(biāo)操作數(shù)是一個8位補碼的位移量。執(zhí)行:
(E)IP
((E)IP)+DISP8-128≤
DISP8
≤+127
(有符號數(shù),補碼)
DISP8是當(dāng)前(E)IP與下一條指令入口之間的距離,CS內(nèi)容保持不變。注意:容易因使用不當(dāng)超出范圍而出錯。舉例:
JMP
SHORT
HELLO…HELLO:MOV
AL,
3第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
無條件_3JMP指令1010AH1010BHE808...B003MOV指令代碼段10100H10101H當(dāng)前(IP)
10102H
+
08
10010AHHELLO
33第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
無條件_4② 段內(nèi)直接轉(zhuǎn)移(又稱相對轉(zhuǎn)移)指令格式:JMP
目標(biāo)標(biāo)號 ;近(NEAR)標(biāo)號16位尋址時,是一個16位補碼的位移量;32位尋址時,是一個32位補碼的位移量。執(zhí)行:16位時,
IP
(IP)
+
DISP1632位時,EIP
(EIP)+
DISP32CS內(nèi)容保持不變。例如:JMP
PROGRAMJMP指令02013H存儲器E9H12H34H…代碼段當(dāng)前IP02016H+
3412H新IP
05428H位移量05428H34第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
無條件_535③
段間直接轉(zhuǎn)移指令格式:JMP
FAR
PTR 目標(biāo)標(biāo)號 ;遠(yuǎn)(FAR)標(biāo)號指令中直接給出目標(biāo)標(biāo)號所指向的入口地址的段選擇符(或段值)和偏移地址。執(zhí)行:段選擇符(或段值)
CS偏移地址
(E)IP例如:JMP
FAR
PTR
LABLE舉例:段間直接轉(zhuǎn)移C1
SEGMENT…JMP
FAR
PTR
A1…C1
ENDS…C2
SEGMENT…A1:MOV
AL,3…C2
ENDS第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
無條件_6JMP指令C1代碼段新IP新CS20000HMOV指令(A1:)20250HC2代碼段EAH50H02H00H20H······B0H03H···存儲器36第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
無條件_737④
段內(nèi)間接轉(zhuǎn)移指令格式:JMP
reg/mem指令中指定的16位/32位寄存器或存儲器單元中存放著轉(zhuǎn)移目標(biāo)的16位/32位段內(nèi)偏移量EA。執(zhí)行時:用EA代替當(dāng)前(E)IP,CS不變。例如:JMPBX;16位段內(nèi)間接轉(zhuǎn)移JMPEDX;32位段內(nèi)間接轉(zhuǎn)移JMPWORDPTR[BX];16位段內(nèi)間接轉(zhuǎn)移JMPDWORDPTR[EAX];32位段內(nèi)間接轉(zhuǎn)移第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
無條件_838⑤
段間間接轉(zhuǎn)移指令格式:JMP
mem指令中指定的存儲器單元中存放著轉(zhuǎn)移目標(biāo)的段值(或段選擇符)和16位(或32位)偏移量。執(zhí)行時:段值:16位偏移量
CS:IP
或段選擇符:32位偏移量
CS:EIP例如:JMP
DWORD
PTR
[BX]JMP
FWORD
PTR
[EAX];16位段間間接轉(zhuǎn)移;32位段間間接轉(zhuǎn)移第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
無條件_9指令代碼段新IP00F6H新CS1E40H09226H偏移量操作碼操作碼32H00HF6H00H40H1EH······(DS)×16
091D0HBX
0024H+
0032H09226H數(shù)據(jù)段···舉例:Pentium工作在實地址方式時,(IP)=3D8FH,(CS)=1000H,(DS)=091DH,(BX)=0024H,[09226]=00F6H,
[09228]=1E40H。JMP
DWORD
PTR
32H[BX]
執(zhí)行過程如圖:存儲器段基址位移量39⑵ 條件轉(zhuǎn)移指令
Jcc指令格式:Jcc
lable ;段內(nèi)短轉(zhuǎn)移或段內(nèi)直接轉(zhuǎn)移功能:根據(jù)標(biāo)志位狀態(tài)組成的轉(zhuǎn)移條件cc,決定程序的執(zhí)行流向。第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
條件_1是40label否順序執(zhí)行Jcc
labelcc成立嗎?cc條件成立時指令執(zhí)行:
16位尋址:IP
(IP)+DISP8/DISP1632位尋址:
EIP
(EIP)+DISP8/DISP32說明:① 對于8086,條件轉(zhuǎn)移只有短轉(zhuǎn)移,轉(zhuǎn)移距離為:-128~+127;② 對于80386/80486/Pentium,推廣為段內(nèi)轉(zhuǎn)移,轉(zhuǎn)移距離分別為:16位尋址:-32768~3276732位尋址:-231~231-1③
這類指令通常緊跟在算術(shù)/邏輯指令之后。④ 條件轉(zhuǎn)移指令共有19條,可分為無符號數(shù)條件轉(zhuǎn)移指令和有符號數(shù)條件轉(zhuǎn)移指令兩類。第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
條件_241第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
條件_342無符號數(shù)條件轉(zhuǎn)移指令(10條)指令助記符轉(zhuǎn)移條件含
義JCCF=1有進位轉(zhuǎn)移(與JB/JNAE重疊)JNCCF=0無進位轉(zhuǎn)移(與JAE/JNB重疊)JP/JPEPF=1奇偶位為1轉(zhuǎn)移JNP/JPOPF=0奇偶位為0轉(zhuǎn)移JA/JNBECF=ZF=0高于/不低于等于轉(zhuǎn)移JAE/JNBCF=0高于等于/不低于轉(zhuǎn)移JB/JNAECF=1低于/不高于等于轉(zhuǎn)移JBE/JNACF=1或ZF=1低于等于/不高于轉(zhuǎn)移JE/JZZF=1等于/為零轉(zhuǎn)移JNE/JNZZF=0不等于/非零轉(zhuǎn)移第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
條件_443有符號數(shù)條件轉(zhuǎn)移指令(9條)指令助記符轉(zhuǎn)移條件含
義JOOF=1溢出轉(zhuǎn)移JNOOF=0無溢出轉(zhuǎn)移JSSF=1為負(fù)數(shù)轉(zhuǎn)移JNSSF=0為正數(shù)轉(zhuǎn)移JG/JNLEZF=0且SF=OF大于/不小于等于轉(zhuǎn)移JGE/JNLSF=OF大于等于/不小于轉(zhuǎn)移JL/JNGESF≠OF小于/不大于等于轉(zhuǎn)移JLE/JNGZF=1或SF≠OF小于等于/不大于轉(zhuǎn)移JCXZ(CX)=0CX寄存器為零轉(zhuǎn)移第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
條件_5舉例:AX、BX和CX為有符號數(shù),找出三者中最大的數(shù),結(jié)果存于AX中。程序段如下:44CMP
AX,CXJGE
BIGGER;兩數(shù)比較;若(AX)≥(CX),則轉(zhuǎn)移XCHG
AX,CX ;否則,兩數(shù)交換BIGGER:CMP
AX,BXJNL
EXIT ;若(AX)≥(BX),則轉(zhuǎn)移XCHG
AX,BX ;否則,兩數(shù)交換EXIT:HLT
;此時,AX中為最大數(shù)第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
循環(huán)_1-128~+127⑶ 循環(huán)控制指令
LOOP指令格式:LOOPLOOPE/LOOPZLOOPNE/LOOPNZ短標(biāo)號;短標(biāo)號;短標(biāo)號;功能:用(E)CX作為循環(huán)遞減計數(shù)器,執(zhí)行時,先將(E)CX減1,再判斷條件,決定是否轉(zhuǎn)移。執(zhí)行轉(zhuǎn)移:(E)IP
((E)IP)+DISP8助記符條
件滿足條件時的操作LOOP(E)CX≠0轉(zhuǎn)移即循環(huán)LOOPE/LOOPZ(E)CX≠0且ZF=1轉(zhuǎn)移即循環(huán)LOOPNE/LOOPNZ(E)CX≠0且ZF=0轉(zhuǎn)移即循環(huán)45第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
循環(huán)_246舉例:用循環(huán)控制指令實現(xiàn)延時。MOV
ECX,000F0000H
;置初值NEXT:NOP ;空操作,產(chǎn)生延時LOOP
NEXT ;執(zhí)行F0000H次⑷ 調(diào)用/返 指令
CALL/RET調(diào)用/返回是一種可保護/恢復(fù)現(xiàn)場的控制轉(zhuǎn)移指令,用于主程序調(diào)用子程序(即過程PROCEDURE)。這兩條指令應(yīng)配對使用。第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
調(diào)用/返_1指令格式:
CALLRET
(imm)目標(biāo)操作數(shù)
proc/lablereg/mem功能:CALL用于調(diào)用子程序(激活一個過程);RET用于從被調(diào)用子程序返回調(diào)用程序。CALL與JMP指令相似,可實現(xiàn)段內(nèi)的直接或間接調(diào)用、段間的直接或間接調(diào)用。兩者最大區(qū)別是:
JMP轉(zhuǎn)移后不用返回;CALL轉(zhuǎn)移后還要返回原處,必須保護斷點的現(xiàn)場。47第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
調(diào)用/返_2…① 段內(nèi)直接調(diào)用與返回(以下用16位方式說明)當(dāng)前CS不變,只需對當(dāng)前IP進行入棧/出棧操作。CALL
proc/lable
;SP
(SP)-2
,SP
(IP)IP
(IP)+DISP16RET
;IP
(SP)
,
SP
(SP)+2其中DISP16為位移量,在指令中給出。②
段內(nèi)間接調(diào)用與返回當(dāng)前CS不變,只需對當(dāng)前IP進行入棧/出棧操作。CALL
reg/mem;SP
(SP)-2
,SP
(IP)IP
EA(在reg或mem中)RET;IP
(SP)
,
SP
(SP)+2…48③
段間直接調(diào)用與返回需對當(dāng)前CS和IP進行入棧/出棧操作:CALL
proc/lable;SP
(SP)-2
,SP
(CS)SP
(SP)-2
,SP
(IP);IP
EA(指令中)
,CS
段值(指令中)RET;IP
(SP)
,SP
(SP)+2CS
(SP)
,SP
(SP)+2第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
調(diào)用/返回_3…④
段間間接調(diào)用需對當(dāng)前的CS和IP進行入棧/出棧操作:CALL
mem;SP
(SP)-2
,SP
(CS)SP
(SP)-2
,SP
(IP);IP
EA(mem中)
,CS
段值(mem+2中)RET;IP
(SP),SP
(SP)+2CS
(SP),SP
(SP)+2…49⑤ 帶參數(shù)的過程調(diào)用與返回(可傳遞參數(shù))調(diào)用前先壓參數(shù)入棧;進入子程序后,可從堆棧中
取出參數(shù)進行處理;返回時,用帶立即數(shù)的返回指令,先恢復(fù)現(xiàn)場,然后釋放堆棧中已用參數(shù)所占單元。第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
調(diào)用/返回_4SP
0100HIP低IP高參數(shù)2低參數(shù)2高參數(shù)1低參數(shù)1高SP
00FAHSP
00FCH4字節(jié)段內(nèi)RET
imm段間RET
immIP
(SP)SP
(SP)+2SP
(SP)+immIP
(SP)SP
(SP)+2CS
(SP)SP
(SP)+2SP
(SP)+imm50第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
中斷_1⑸ 中斷和中斷返回指令
INT/INTO/IRET中斷是指CPU被隨機發(fā)生的某事件或特意安排的指令暫停當(dāng)前程序的運行,在保護好斷點的現(xiàn)場(壓棧)后,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,中斷返回時,恢復(fù)現(xiàn)場
(彈棧),繼續(xù)運行被暫停的程序。指令格式:INT
nINTOIRET功能:INT
n是軟中斷指令,產(chǎn)生一個中斷號為n的軟中斷。n為8位立即數(shù),取值范圍:0~255。執(zhí)行:標(biāo)志寄存器和斷點地址(CS:(E)IP的值)壓棧,將TF、IF清0(關(guān)閉單步中斷和可屏蔽中斷),中斷向量送入CS:(E)IP,執(zhí)行中斷服務(wù)程序。51第二章
指令系統(tǒng)
整數(shù)指令
控制轉(zhuǎn)移
中斷_2INTO
溢出中斷指令,INT
n的特例,即:INTO
=
INT
4。該指令一般緊跟算術(shù)運算指令之后,若算術(shù)指令執(zhí)行后有溢出(OF=1)時,INTO將產(chǎn)生溢出中斷;否則,INTO無任何操作。52IRET中斷返回指令,這是每個中斷服務(wù)程序必須有的指令,通常是最后執(zhí)行的一條指令。功能:恢復(fù)斷點現(xiàn)場,執(zhí)行過程為INT
n的逆過程即:從堆棧中彈出保護現(xiàn)場的(E)IP、CS和標(biāo)志寄存器值,重新執(zhí)行被中斷的程序。6、位操作指令386以上特有指令,包括位測試指令和位掃描指令。⑴ 位測試指令
BT/BTS/BTR/BTC指令格式:BT/BTS/BTR/BTCDST
,reg16/mem16reg32/mem32SRCreg/immreg/imm功能:首先,對DST指定的操作數(shù)按SRC指定的位進行測試并將該位的值送入標(biāo)志位CF;之后,BT無動作,BTS、BTR和BTC則將DST中的被測試位分別置1、清0或求反。注意:只對一位進行操作。第二章
指令系統(tǒng)
整數(shù)指令
位操作
位測試_153例如:BTBTRBTSEAX,1EBX,16AX,
0;EAX的D1位
CF;EBX的D16位
CF,然后D16位清零;AX的D0位
CF,然后D0位置1舉例:測試端口300H的位3并復(fù)位MOVDX,300HSTU:INAX,DX;讀入16位數(shù)據(jù)BTRAX,3;測試并復(fù)位位3JCBIT3-SET;測試位為1轉(zhuǎn)移JMPSTU;返 重讀BIT3-SET:…
…;服務(wù)處理第二章
指令系統(tǒng)
整數(shù)指令
位操作
位測試_254⑵ 位掃描指令
BSF/BSR指令格式:
BSF/BSRDST,reg,SRCreg/mem第二章
指令系統(tǒng)
整數(shù)指令
位操作
位掃描_1功能:BSF為向前位掃描指令,對SRC指定的16位或32位位串:從低位(b0)
高位(b15/b31)進行掃描,將掃描到的第一個
“1”位的下標(biāo)存入DST指定的寄存器中。若SRC為全0時,ZF置1,DST內(nèi)容無意義;否則ZF清0。BSR為向后位掃描指令,除了是從高位
低位掃描外,其它與BSF一樣。要求DST與SRC等長。55舉例:判別某端口(28EH)發(fā)生的某個獨立事件
(置1表示發(fā)生)。MOV
DX,28EH;讀入16位數(shù)據(jù);掃描AX的內(nèi)容NOTHING:IN
AX,DXBSF
CX,AXJZ
NOTHING…
…;根據(jù)CX的數(shù)字作相應(yīng)處理第二章
指令系統(tǒng)
整數(shù)指令
位操作
位掃描_2567、標(biāo)志操作指令標(biāo)志寄存器(E)FLAGS中的標(biāo)志位通常是由算術(shù)/邏輯運算的結(jié)果影響的,但也可以直接對它或它的某些位進行操作,通過改變其狀態(tài)來控制程序的運行。主要有以下內(nèi)容:⑴
標(biāo)志寄存器讀寫指令⑵
標(biāo)志寄存器入棧/出棧指令⑶
單個標(biāo)志位操作指令第二章
指令系統(tǒng)
整數(shù)指令
標(biāo)志操作
提要57第二章
指令系統(tǒng)
整數(shù)指令
標(biāo)志操作
讀寫58⑴ 標(biāo)志寄存器讀寫指令
LAHF/SAHF指令格式:LAHFSAHF功能:LAHF為讀指令,用于將EFLAGS
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年魯科五四新版九年級地理上冊月考試卷含答案
- 2025年滬教版選擇性必修2語文上冊階段測試試卷
- 2025年粵教滬科版七年級物理上冊階段測試試卷
- 2025年蘇人新版七年級歷史下冊階段測試試卷含答案
- 2025年上外版選擇性必修1物理上冊階段測試試卷
- 2025年仁愛科普版必修1歷史下冊月考試卷含答案
- 2025年滬教版八年級生物上冊階段測試試卷
- 二零二五年度藝術(shù)面磚采購及安裝服務(wù)合同4篇
- 抵押合同范本(2篇)
- 承包經(jīng)營合同(2篇)
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 2024-2025學(xué)年八年級上學(xué)期1月期末物理試題(含答案)
- 商場電氣設(shè)備維護勞務(wù)合同
- 《妊娠期惡心嘔吐及妊娠劇吐管理指南(2024年)》解讀
- 2023年國家公務(wù)員錄用考試《行測》真題(行政執(zhí)法)及答案解析
- 全國教學(xué)設(shè)計大賽一等獎英語七年級上冊(人教2024年新編)《Unit 2 Were Family!》單元教學(xué)設(shè)計
- 2024智慧醫(yī)療數(shù)據(jù)字典標(biāo)準(zhǔn)值域代碼
- 年產(chǎn)12萬噸裝配式智能鋼結(jié)構(gòu)項目可行性研究報告模板-立項備案
- 【獨家揭秘】2024年企業(yè)微信年費全解析:9大行業(yè)收費標(biāo)準(zhǔn)一覽
- 醫(yī)療器械經(jīng)銷商會議
- 《±1100kV特高壓直流換流變壓器使用技術(shù)條件》
評論
0/150
提交評論