




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3、逻辑运算与移位指令⑴
逻辑与/或/异或/测试指令⑵
逻辑非指令⑶
算术/逻辑左移指令⑷
算术/逻辑右移指令⑸
循环移位指令⑹
双精度左移/右移指令第二章
指令系统
整数指令
逻辑/移位
提要1第二章
指令系统
整数指令
逻辑/移位
逻辑运算_12⑴ 逻辑与/或/异或/测试指令
AND/OR/XOR/TEST指令格式:AND/OR/XOR/TESTDST,SRCreg,reg/mem/immmem,reg/imm0———XX—U—X—0功能:AND/OR/XOR分别对DST和SRC按位进行逻辑与/或/异或操作,结果存入DST中。即:DST
(DST)与/或/异或(SRC)TEST只对DST和SRC按位进行逻辑与操作,不存结果。注意:操作数DST、SRC的宽度必须相等。四条指令对标志位的影响相同:OF
DF
IF
TF
SF
ZF
AF
PF
CF第二章
指令系统
整数指令
逻辑/移位
逻辑运算_2例5:TEST
AL,80H
;仅测试(AL)的最高位JZ
BUSY ;最高位为0,则转向BUSY例1:将ASCII码转换为未组合BCD码。MOV
AL,‘6’
;6的ASCII码送AL,(AL)=36HAND
AL,0FH
;用0屏蔽高4位,用1保留低4位例2:将未组合BCD码转换为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
;这条指令结果如何?3⑵ 逻辑非指令
NOT指令格式:NOT
DSTregmem功能:对DST中每一位都求反(0变1,1变0)。不影响标志位。举例:NOTBX;设执行前(BX)=5555H;则执行后(BX)=AAAAH第二章
指令系统
整数指令
逻辑/移位
逻辑运算_34第二章
指令系统
整数指令
逻辑/移位
左移_1⑶ 算术/逻辑左移指令
SAL/SHL指令格式:
SAL/SHL
DST, 移位次数reg/mem,
imm8/CL功能:都是将DST的内容向左移位,移动次数由
imm8/CL决定。每左移一位,将最高有效位MSB移进CF,在最低有效位LSB补0。CF
MSB 操作数
LSB05第二章
指令系统
整数指令
逻辑/移位
左移_2说明:①
影响标志位:OF、SF、ZF、PF、CF。② 规定80386以上移位次数不超过31;8086用立即数时只能是1,用CL时最多可移位255次。③ 移位次数为1时,若移位后进位标志CF与结果的最高位相等,则OF=0,否则OF=1。举例:将AX中的无符号数乘8。6MOVAX,12HMOVCL,3SALAX,CL;左移三次,相当于;AX
(AX)×8=90H⑷ 算术/逻辑右移指令
SAR/SHR指令格式:SAR/SHR
DST, 移位次数reg/mem,
imm8/CL功能:SAR是算术右移指令,对有符号数右移;
SHR是逻辑右移指令,对无符号数右移。都是将DST的内容向右移位,移动次数由imm8/CL决定。第二章
指令系统
整数指令
逻辑/移位
右移_1CF
MSB 操作数
LSB算术右移(SAR)(最高位符号位扩展)逻辑右移(SHR)0CFMSB操作数LSB7第二章
指令系统
整数指令
逻辑/移位
右移_2说明:1、影响标志位:OF、SF、ZF、PF、CF。2、移位次数的规定与SAL/SHL相同。3、移位次数为1时,对SAR指令,将OF置0;对SHR指令,将OF置成与原DST最高有效
位MSB相同的值。右移指令常用于实现除以2n的操作例如:将AX中的有符号数除以16(=24)。8MOVAX,-1024;(AX)=FC00HMOVCL,4SARAX,CL;(AX)=FFC0H=-64第二章
指令系统
整数指令
逻辑/移位
循环移位_19⑸ 循环移位指令
ROL/ROR/RCL/RCR指令格式:ROL/ROR/RCL/RCR
DST
,
移位次数reg/mem
,imm8/CL功能:ROL和ROR分别为左环移和右环移指令,对
DST进行循环左移和循环右移。RCL和RCR则是将标志位CF与DST连接在一起进行循环左移和循环右移。说明:移位次数由imm8/CL决定。四条指令影响标志位:OF、SF、ZF、PF、CF。第二章
指令系统
整数指令
逻辑/移位
循环移位_2CF
MSB 操作数DST
LSB循环左移
ROLCFMSB操作数DSTLSB循环右移
RORCFMSB操作数DSTLSBCFMSB操作数DSTLSB带进位循环左移
RCL带进位循环右移
RCR10第二章
指令系统
整数指令
逻辑/移位
循环移位_3举例:编写程序段,将寄存器AL中的内容顺序颠倒,即将AL7~AL0变为AL0~AL7
。CFMSBAL
LSBMSBBL
LSBROL11RCRBL,AL
;BL
(AL)MOV
MOVAGAIN:ROLRCRCL,8BL,1AL,1;循环次数为8;(BL)依次左移,最高位进入CF;(AL)依次右移,CF填充最高位LOOP
AGAINCF第二章
指令系统
整数指令
逻辑/移位
双精度移位SHLD:CFDST(目的)SRC(源)SHRD:CFSRC(源)DST(目的)31
0
31
0⑹ 双精度左移/右移指令
SHLD/SHRD指令格式:SHLD/SHRD
DST,
SRC, 移位次数reg16/mem16,reg16,imm8/CLreg32/mem32,reg32,imm8/CL功能:将DST和SRC连成双精度值(32位或64位)向左或右移,移动次数由imm8/CL决定。SRC内容逐位移入DST,且自己保持不变。CF中的值为DST移出的最后一位。31
0
31
012影响标志位:SF、ZF、PF、CF。这是80386新增指令。⑴
串传送指令⑵
串装入指令⑶
串存储指令⑷
串扫描指令⑸
串比较指令⑹
串输入指令⑺
串输出指令⑻
重复前缀第二章
指令系统
整数指令
串操作
提要4、串操作指令13串操作的有关约定:①
DS:(E)SI为源串,ES:(E)DI为目的串,指令中不必指明操作数。② 源串的DS可用段前缀改变,但目的串的ES不能超越。③ 源串指针(E)SI和目的串指针(E)DI在每次操作后,
将根据DF的值来自动增量(DF=0)或自动减量(DF=1),以指向下一项,增/减量大小由操作数宽度决定。④ 通常串操作指令前可加重复前缀,此时必须用(E)CX作次数计数器,操作一次,(E)CX值减1,直至减为0,结束。⑤
只有串扫描、串比较指令影响标志位。第二章
指令系统
整数指令
串操作
约定14⑴ 串传送指令
MOVS/MOVSB/MOVSW/MOVSD指令格式:MOVS目的串,源串;由串数据的宽度决定mem
,mem;字节/字/双字串操作MOVSB
MOVSW
MOVSD;字节串传送;字串传送;双字串传送第二章
指令系统
整数指令
串操作
串传送_115(E)SI
((E)SI)±1/2/4(E)DI
((E)DI)±1/2/4;修改源指针;修改目的指针功能:将DS:[(E)SI]指定的源串中的一个字节/字/
双字传送到ES:[(E)DI]指定的目的串,并自动修改指针。可加重复前缀。操作:[ES:(E)DI]
([DS:(E)SI]) ;传送第二章
指令系统
整数指令
串操作
串传送_2举例:将数据段中自FIRST开始的100个字符数据复制到附加段以SECOND开始的数据区中,用基本传送指令实现。程序段如下:LEASI,FIRST;置源串有效地址LEADI,SECOND;置目的串有效地址MOVCX,100;设置计数初值CLD;DF=0,增量模式DONE:MOVSBLOOP
DONE;;
等效于:REP
MOVSB16第二章
指令系统
整数指令
串操作
串传送_3串传送举例示意图数据段(源串)DS:SI
FIRSTES:DI
SECOND‘A’‘B’‘C’‘D’‘E’······附加段(目的串)存储器17⑵ 串装入指令
LODS/LODSB/LODSW/LODSD指令格式:LODS
源串mem;由串数据的宽度决定;字节/字/双字串操作第二章
指令系统
整数指令
串操作
串装入18操作:AL/AX/EAX
([DS:(E)SI])(E)SI
((E)SI)±1/2/4;装入一个数据;修改源指针LODSB/LODSW/LODSD
;无显式操作数,分别对应字节/字/双字装入功能:将DS:[(E)SI]指定的源串中的一个字节/字/双字装入累加器中,并自动修改指针。该指令前一般不加重复前缀。⑶ 串存储指令
STOS/STOSB/STOSW/STOSD指令格式:STOS
目的串mem;由串数据的宽度决定;字节/字/双字串操作第二章
指令系统
整数指令
串操作
串存储请问:LODSW
这两条指令合用可实现MOVSW的功能吗?19STOSW操作:[ES:(E)DI]
(AL/AX/EAX)(E)DI
((E)DI)±1/2/4;存储数据;修改目的指针STOSB/STOSW/STOSD
;无显式操作数,分别对应字节/字/双字存储功能:将累加器的内容存储到ES:[(E)DI]指定的目的
串中,自动修改指针。该指令前可加重复前缀。⑷ 串扫描指令
SCAS/SCASB/SCASW/SCASD指令格式:SCAS
目的串mem;由串数据的宽度决定;字节/字/双字串操作第二章
指令系统
整数指令
串操作
串扫描_120SCASB/SCASW/SCASD
;无显式操作数,分别对应字节/字/双字串扫描功能:用累加器中的内容减去ES:[(E)DI]指定的目的串元素的内容,仅改变标志位,不改变二者的内容,并自动修改指针。其实质是在扫描串中寻找与累加器中的内容相同者,有则将标志ZF置1。该指令用于查找串数据中的关键字很方便。这条指令前常加重复前缀,后跟条件转移指令。;DF清零,增量操作CLDMOV
AL
,‘*’REPNE
SCASBJE
MATCH…;不相等则重复扫描;ZF=1,找到;ZF=0,ECX=0,没有找到第二章
指令系统
整数指令
串操作
串扫描_2举例:通过加重复前缀,在一个字符串中搜索关键字‘*’
。程序段如下:LEA
EDI
,STRING
;EDI指向字符串首元素MOV
ECX
,LENGTH ;串长度送ECX21第二章
指令系统
整数指令
串操作
串比较_122⑸ 串比较指令
CMPS/CMPSB/CMPSW/CMPSD指令格式:CMPS
目的串,源串
;由串数据的宽度决定mem
,mem ;字节/字/双字串操作CMPSB/CMPSW/CMPSD ;无显式操作数,分别对应字节/字/双字串比较功能:将DS:[(E)SI]指定的源串元素的内容减去
ES:[(E)DI]指定的目的串元素的内容,仅改变标志位,不改变两个元素的值,并自动修改指针。该指令前常加重复前缀,后跟条件转移指令来判别两串是否匹配。第二章
指令系统
整数指令
串操作
串比较_2举例:比较两个长度为500的字节字符串是否相同,若不同,找出出现不同时的位置,并记入相应单元。程序段如下:LEA
SI,FIRST
;
SI指向源串起始单元
FIRSTJMPSAME23LEADI,SECOND;DI指向目的串起始单元
SECONDMOVCX,500
;设置计数器为
500CLD;标志DF清零,增量模式REPECMPSB
;重复比较
(DS:[SI])-(ES:[DI])JNEFOUND
;不相同(ZF=0),转
FOUNDSAME:RET;相同,返回FOUND:DECSI
;退回一字节MOVPOINT,SI
;将不相同位置保存⑹ 串输入指令
INSB/INSW/INSD指令格式:INSBINSWINSD;输入字节串;输入字串;输入双字串第二章
指令系统
整数指令
串操作
串输入24功能:从DX寄存器指定的端口输入一个字节/字/双字元素传送到ES:[(E)DI]所指定的存储单元,并自动修改目的指针,可加重复前缀。注意:不需经过累加器AL/AX/EAX。举例:LEADI,DEST;DEST存储区在ES段MOVDX,301HMOVCX,8REPINSB;从端口301H输入8字节串⑺ 串输出指令
OUTSB/OUTSW/OUTSD指令格式:OUTSBOUTSW
OUTSD;输出字节串;输出字串;输出双字串第二章
指令系统
整数指令
串操作
串输出25功能:将DS:[(E)SI]指定的存储单元中的字节、字
或双字串元素输出到由DX寄存器指定的端口,并自动修改源指针,可加重复前缀。举例:LEA
ESI,SOURCEMOV
DX
,300HMOV
CX,
8REP
OUTSB第二章
指令系统
整数指令
串操作
重复前缀_1⑻ 重复前缀
REP/REPE/REPZ/REPNE/REPNZ格式:加在串操作指令之前,不可单独使用。先进行条件判别,再执行串操作,之后CX减1。MOVSLODSREP
STOSINSOUTS配合工作的前缀REP重复操作直到(CX)=0为止,不影响标志位CMPSSCASREPE/REPZ
相等/为0时重复,即:(CX)≠0且ZF=1时重复。REPNE/REPNZ
不等/不为0时重复,即:(CX)≠0且ZF=0时重复。REPE/REPZ或REPNE/REPNZ26使用串操作指令的一般步骤:第二章
指令系统
整数指令
串操作
重复前缀_227LEA
DI,tab2
;
②把将要存放数据串的附加段首址(或
反向操作时的末地址)放入DI寄存器中;LEA
SI,tab1
;①把存放在数据段中的源串首址(如反向操作则应是末址)放入SI寄存器;MOVCX,length;③把数据串长度放入CX寄存器作为重复操作计数值;CLD;④建立方向标志;REPMOVSB;⑤执行重复串操作。第二章 习题428教材
P118至P122:2.15(2)2.22(1)(5)(7)(8)2.252.372.43(1)第二章
指令系统
整数指令
控制转移
提要295、控制转移指令这类指令用于改变程序执行顺序(对应程序的转移寻址),其实质就是改变CS:(E)IP的内容。主要包括以下内容:⑴
无条件转移指令⑵
条件转移指令⑶
循环控制指令⑷
过程调用/返回指令⑸
中断和中断返回指令其中只有中断指令影响标志位。程序转移示意图:第二章
指令系统
整数指令
控制转移
示意图代码段1指令1······存储器指令2指令i代码段2指令1······指令2指令iCS:IP(2000H:100H)
20100H段间转移30CS:IP(1000H:400H)
10400H段内转移10420H⑴ 无条件转移指令
JMP指令格式:JMP目标操作数
lablereg16/32mem16/32;直接转移;段内间接转移;段内或段间间接转移第二章
指令系统
整数指令
控制转移
无条件_1功能:无条件地控制程序转移到目标操作数指定的目标地址,即将目标地址装入(E)IP或CS:(E)IP。短标号
段内直接短转移近标号
段内直接转移8位(E)IP远标号
段间直接转移直接寻址leble指令中间接寻址寄存器/存储器
段内间接转移存储器
段间间接转移CS:(E)IP(E)IPCS:(E)IP31第二章
指令系统
整数指令
控制转移
无条件_232① 段内直接短转移(SHORT)指令格式:
JMP
SHORT
目标标号目标标号专用于指向指令单元,SHORT是JMP特有的短转移运算符,指明此处的目标操作数是一个8位补码的位移量。执行:
(E)IP
((E)IP)+DISP8-128≤
DISP8
≤+127
(有符号数,补码)
DISP8是当前(E)IP与下一条指令入口之间的距离,CS内容保持不变。注意:容易因使用不当超出范围而出错。举例:
JMP
SHORT
HELLO…HELLO:MOV
AL,
3第二章
指令系统
整数指令
控制转移
无条件_3JMP指令1010AH1010BHE808...B003MOV指令代码段10100H10101H当前(IP)
10102H
+
08
10010AHHELLO
33第二章
指令系统
整数指令
控制转移
无条件_4② 段内直接转移(又称相对转移)指令格式:JMP
目标标号 ;近(NEAR)标号16位寻址时,是一个16位补码的位移量;32位寻址时,是一个32位补码的位移量。执行:16位时,
IP
(IP)
+
DISP1632位时,EIP
(EIP)+
DISP32CS内容保持不变。例如:JMP
PROGRAMJMP指令02013H存储器E9H12H34H…代码段当前IP02016H+
3412H新IP
05428H位移量05428H34第二章
指令系统
整数指令
控制转移
无条件_535③
段间直接转移指令格式:JMP
FAR
PTR 目标标号 ;远(FAR)标号指令中直接给出目标标号所指向的入口地址的段选择符(或段值)和偏移地址。执行:段选择符(或段值)
CS偏移地址
(E)IP例如:JMP
FAR
PTR
LABLE举例:段间直接转移C1
SEGMENT…JMP
FAR
PTR
A1…C1
ENDS…C2
SEGMENT…A1:MOV
AL,3…C2
ENDS第二章
指令系统
整数指令
控制转移
无条件_6JMP指令C1代码段新IP新CS20000HMOV指令(A1:)20250HC2代码段EAH50H02H00H20H······B0H03H···存储器36第二章
指令系统
整数指令
控制转移
无条件_737④
段内间接转移指令格式:JMP
reg/mem指令中指定的16位/32位寄存器或存储器单元中存放着转移目标的16位/32位段内偏移量EA。执行时:用EA代替当前(E)IP,CS不变。例如:JMPBX;16位段内间接转移JMPEDX;32位段内间接转移JMPWORDPTR[BX];16位段内间接转移JMPDWORDPTR[EAX];32位段内间接转移第二章
指令系统
整数指令
控制转移
无条件_838⑤
段间间接转移指令格式:JMP
mem指令中指定的存储器单元中存放着转移目标的段值(或段选择符)和16位(或32位)偏移量。执行时:段值:16位偏移量
CS:IP
或段选择符:32位偏移量
CS:EIP例如:JMP
DWORD
PTR
[BX]JMP
FWORD
PTR
[EAX];16位段间间接转移;32位段间间接转移第二章
指令系统
整数指令
控制转移
无条件_9指令代码段新IP00F6H新CS1E40H09226H偏移量操作码操作码32H00HF6H00H40H1EH······(DS)×16
091D0HBX
0024H+
0032H09226H数据段···举例:Pentium工作在实地址方式时,(IP)=3D8FH,(CS)=1000H,(DS)=091DH,(BX)=0024H,[09226]=00F6H,
[09228]=1E40H。JMP
DWORD
PTR
32H[BX]
执行过程如图:存储器段基址位移量39⑵ 条件转移指令
Jcc指令格式:Jcc
lable ;段内短转移或段内直接转移功能:根据标志位状态组成的转移条件cc,决定程序的执行流向。第二章
指令系统
整数指令
控制转移
条件_1是40label否顺序执行Jcc
labelcc成立吗?cc条件成立时指令执行:
16位寻址:IP
(IP)+DISP8/DISP1632位寻址:
EIP
(EIP)+DISP8/DISP32说明:① 对于8086,条件转移只有短转移,转移距离为:-128~+127;② 对于80386/80486/Pentium,推广为段内转移,转移距离分别为:16位寻址:-32768~3276732位寻址:-231~231-1③
这类指令通常紧跟在算术/逻辑指令之后。④ 条件转移指令共有19条,可分为无符号数条件转移指令和有符号数条件转移指令两类。第二章
指令系统
整数指令
控制转移
条件_241第二章
指令系统
整数指令
控制转移
条件_342无符号数条件转移指令(10条)指令助记符转移条件含
义JCCF=1有进位转移(与JB/JNAE重叠)JNCCF=0无进位转移(与JAE/JNB重叠)JP/JPEPF=1奇偶位为1转移JNP/JPOPF=0奇偶位为0转移JA/JNBECF=ZF=0高于/不低于等于转移JAE/JNBCF=0高于等于/不低于转移JB/JNAECF=1低于/不高于等于转移JBE/JNACF=1或ZF=1低于等于/不高于转移JE/JZZF=1等于/为零转移JNE/JNZZF=0不等于/非零转移第二章
指令系统
整数指令
控制转移
条件_443有符号数条件转移指令(9条)指令助记符转移条件含
义JOOF=1溢出转移JNOOF=0无溢出转移JSSF=1为负数转移JNSSF=0为正数转移JG/JNLEZF=0且SF=OF大于/不小于等于转移JGE/JNLSF=OF大于等于/不小于转移JL/JNGESF≠OF小于/不大于等于转移JLE/JNGZF=1或SF≠OF小于等于/不大于转移JCXZ(CX)=0CX寄存器为零转移第二章
指令系统
整数指令
控制转移
条件_5举例:AX、BX和CX为有符号数,找出三者中最大的数,结果存于AX中。程序段如下:44CMP
AX,CXJGE
BIGGER;两数比较;若(AX)≥(CX),则转移XCHG
AX,CX ;否则,两数交换BIGGER:CMP
AX,BXJNL
EXIT ;若(AX)≥(BX),则转移XCHG
AX,BX ;否则,两数交换EXIT:HLT
;此时,AX中为最大数第二章
指令系统
整数指令
控制转移
循环_1-128~+127⑶ 循环控制指令
LOOP指令格式:LOOPLOOPE/LOOPZLOOPNE/LOOPNZ短标号;短标号;短标号;功能:用(E)CX作为循环递减计数器,执行时,先将(E)CX减1,再判断条件,决定是否转移。执行转移:(E)IP
((E)IP)+DISP8助记符条
件满足条件时的操作LOOP(E)CX≠0转移即循环LOOPE/LOOPZ(E)CX≠0且ZF=1转移即循环LOOPNE/LOOPNZ(E)CX≠0且ZF=0转移即循环45第二章
指令系统
整数指令
控制转移
循环_246举例:用循环控制指令实现延时。MOV
ECX,000F0000H
;置初值NEXT:NOP ;空操作,产生延时LOOP
NEXT ;执行F0000H次⑷ 调用/返 指令
CALL/RET调用/返回是一种可保护/恢复现场的控制转移指令,用于主程序调用子程序(即过程PROCEDURE)。这两条指令应配对使用。第二章
指令系统
整数指令
控制转移
调用/返_1指令格式:
CALLRET
(imm)目标操作数
proc/lablereg/mem功能:CALL用于调用子程序(激活一个过程);RET用于从被调用子程序返回调用程序。CALL与JMP指令相似,可实现段内的直接或间接调用、段间的直接或间接调用。两者最大区别是:
JMP转移后不用返回;CALL转移后还要返回原处,必须保护断点的现场。47第二章
指令系统
整数指令
控制转移
调用/返_2…① 段内直接调用与返回(以下用16位方式说明)当前CS不变,只需对当前IP进行入栈/出栈操作。CALL
proc/lable
;SP
(SP)-2
,SP
(IP)IP
(IP)+DISP16RET
;IP
(SP)
,
SP
(SP)+2其中DISP16为位移量,在指令中给出。②
段内间接调用与返回当前CS不变,只需对当前IP进行入栈/出栈操作。CALL
reg/mem;SP
(SP)-2
,SP
(IP)IP
EA(在reg或mem中)RET;IP
(SP)
,
SP
(SP)+2…48③
段间直接调用与返回需对当前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第二章
指令系统
整数指令
控制转移
调用/返回_3…④
段间间接调用需对当前的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⑤ 带参数的过程调用与返回(可传递参数)调用前先压参数入栈;进入子程序后,可从堆栈中
取出参数进行处理;返回时,用带立即数的返回指令,先恢复现场,然后释放堆栈中已用参数所占单元。第二章
指令系统
整数指令
控制转移
调用/返回_4SP
0100HIP低IP高参数2低参数2高参数1低参数1高SP
00FAHSP
00FCH4字节段内RET
imm段间RET
immIP
(SP)SP
(SP)+2SP
(SP)+immIP
(SP)SP
(SP)+2CS
(SP)SP
(SP)+2SP
(SP)+imm50第二章
指令系统
整数指令
控制转移
中断_1⑸ 中断和中断返回指令
INT/INTO/IRET中断是指CPU被随机发生的某事件或特意安排的指令暂停当前程序的运行,在保护好断点的现场(压栈)后,转去执行中断服务程序,中断返回时,恢复现场
(弹栈),继续运行被暂停的程序。指令格式:INT
nINTOIRET功能:INT
n是软中断指令,产生一个中断号为n的软中断。n为8位立即数,取值范围:0~255。执行:标志寄存器和断点地址(CS:(E)IP的值)压栈,将TF、IF清0(关闭单步中断和可屏蔽中断),中断向量送入CS:(E)IP,执行中断服务程序。51第二章
指令系统
整数指令
控制转移
中断_2INTO
溢出中断指令,INT
n的特例,即:INTO
=
INT
4。该指令一般紧跟算术运算指令之后,若算术指令执行后有溢出(OF=1)时,INTO将产生溢出中断;否则,INTO无任何操作。52IRET中断返回指令,这是每个中断服务程序必须有的指令,通常是最后执行的一条指令。功能:恢复断点现场,执行过程为INT
n的逆过程即:从堆栈中弹出保护现场的(E)IP、CS和标志寄存器值,重新执行被中断的程序。6、位操作指令386以上特有指令,包括位测试指令和位扫描指令。⑴ 位测试指令
BT/BTS/BTR/BTC指令格式:BT/BTS/BTR/BTCDST
,reg16/mem16reg32/mem32SRCreg/immreg/imm功能:首先,对DST指定的操作数按SRC指定的位进行测试并将该位的值送入标志位CF;之后,BT无动作,BTS、BTR和BTC则将DST中的被测试位分别置1、清0或求反。注意:只对一位进行操作。第二章
指令系统
整数指令
位操作
位测试_153例如:BTBTRBTSEAX,1EBX,16AX,
0;EAX的D1位
CF;EBX的D16位
CF,然后D16位清零;AX的D0位
CF,然后D0位置1举例:测试端口300H的位3并复位MOVDX,300HSTU:INAX,DX;读入16位数据BTRAX,3;测试并复位位3JCBIT3-SET;测试位为1转移JMPSTU;返 重读BIT3-SET:…
…;服务处理第二章
指令系统
整数指令
位操作
位测试_254⑵ 位扫描指令
BSF/BSR指令格式:
BSF/BSRDST,reg,SRCreg/mem第二章
指令系统
整数指令
位操作
位扫描_1功能:BSF为向前位扫描指令,对SRC指定的16位或32位位串:从低位(b0)
高位(b15/b31)进行扫描,将扫描到的第一个
“1”位的下标存入DST指定的寄存器中。若SRC为全0时,ZF置1,DST内容无意义;否则ZF清0。BSR为向后位扫描指令,除了是从高位
低位扫描外,其它与BSF一样。要求DST与SRC等长。55举例:判别某端口(28EH)发生的某个独立事件
(置1表示发生)。MOV
DX,28EH;读入16位数据;扫描AX的内容NOTHING:IN
AX,DXBSF
CX,AXJZ
NOTHING…
…;根据CX的数字作相应处理第二章
指令系统
整数指令
位操作
位扫描_2567、标志操作指令标志寄存器(E)FLAGS中的标志位通常是由算术/逻辑运算的结果影响的,但也可以直接对它或它的某些位进行操作,通过改变其状态来控制程序的运行。主要有以下内容:⑴
标志寄存器读写指令⑵
标志寄存器入栈/出栈指令⑶
单个标志位操作指令第二章
指令系统
整数指令
标志操作
提要57第二章
指令系统
整数指令
标志操作
读写58⑴ 标志寄存器读写指令
LAHF/SAHF指令格式:LAHFSAHF功能:LAHF为读指令,用于将EFLAGS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论