每天拿出一分钟来学习,你的生命会更加精彩。

《汇编》常见的汇编指令

发布:洪雨2021-12-9 16:43分类: 编程相关 标签: 编程

一、通用数据传送指令

1 、传送指令 MOV (move)

指令的汇编格式:MOV DST,SRC
指令的基本 功能:(DST)<-(SRC) 将原操作数( 字节或字) 传送到目的地址。
指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址 方式,这个限制适用于所有指令。
指令的执行对标志位的影响:不影响标志位。
指令的特殊要求:目的操作数DST 和源操作数SRC 不允许同时 为段寄存器;
目的操作数DST 不能是CS ,也不能用立即数方式。

2 、进栈指令 PUSH (push onto the stack)
出栈指令 POP (pop from the stack)

指令的汇编格式:PUSH SRC ;POP DST
指令的基本功能:PUSH 指令在程序中常用来暂存某些数据,而POP 指令又可将这些数据恢复。
PUSH SRC (SP)<-(SP)-2 ;(SP)<-(SRC)
POP DST (DST)<-((SP)) ;(SP)<-(SP)
指令支持的寻址方式:push 和 pop 指令不能不能使用立即数寻址方式。
指 令对标志位的影响:PUSH 和 POP 指令都不影响标志位。
指令的特殊要求:PUSH 和 POP 指令只能是字操作,因此,存取字数据后,SP 的修改必须是+2 或者 -2 ;
POP 指令的DST 不允许是CS 寄存器;

3 、 交换指令 XCHG (exchange)

指令的汇编格式:XCHG OPR1,OPR2
指令的基本功能: (OPR1)<->(OPR2)
指令支持的寻址方式:一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。
指令 对标志位的影戏:不影响标志位。
指令的特殊要求:不允许使用段寄存器。

二、累加器专用传送指令

4 、输入指令 IN (input)
输出指令 OUT (output)

指令的汇编格式:IN ac,port port<=0FFH
IN ac,DX port>0FFH
OUT port,ac port<=0FFH
OUT DX,ac port>0FFH
指令的基本功能:对8086 及其后继机型的微处理机,所有I/O 端口与CPU 之间的通信都由输入输出指令IN 和OUT 来 完成。IN 指令将信息从I/O 输入到CPU ,OUT 指令将信息从CPU 输出到I/O 端口,因此,IN 和OUT 指令都要指出I/O 端口地址。
IN ac,port port<=0FFH (AL)<-(port) 传送字节 或 (AX)<-(port+1,port) 传送字
IN ac,DX port>0FFH (AL)<-((DX)) 传送字节 或 (AX)<-((DX)+1,(DX)) 传送字
OUT port,ac port<=0FFH (port)<-(AL) 传送字节 或 (port+1,port)<-(AX) 传送字
OUT DX,ac port>0FFH (DX)<-(AL) 传送字节 或 ((DX)+1,(DX))<-(AX) 传送字
指令对 标志位的影响:不影响标志位。
指令的特殊要求:只限于在AL 或AX 与I/O 端口之间传送信息。
传送16 位信息用AX ,传送8 位信息用 AL ,这取决于外设端口的宽度。


5 、换码指令 XLAT (translate)

指令的汇编格式:XLAT opr 或 XLAT
指令的基本功能:这条指令根据AL 寄存器提供的位移量,将BX 指使的字节表格中的代码换存在AL 中。
(AL)<-((DS)*16+(BX)+(AL))
指 令对标志位的影响: 不影响标志位。
指令的特殊要求:所建字节表格的长度不能超过256 字节,因为存放位移量的是8 位寄存器AL 。
opr 为 表格的首地址,因为opr 所表示的偏移地址已存入BX 寄存器,所以opr 在换码指令中可有可无,有则提高程序的可读性。

三、地址传送指令

6 、 有效地址传送器 LEA (load effective address)

指令的汇编格式:LEA reg ,src
指令的基本 功能:LEA 指令把源操作数的有效地址送到指定的寄存器,这个有效地址是由src 选定的一种存储器寻址方式确定的。
指令支持的寻址方式:各种存储 器寻址方式。
指令对标志位的影响:不影响标志位。
指令的特出要求:指令中reg 不能是段寄存器;

7 、指针送寄存器和DS LDS (load DS with point)
指针送寄存器和ES LES (load ES with point)
指令的汇编 格式:LDS reg,src
LES reg,src
指令的基本功能:LDS 和LES 指令把确定内存单元位置的偏移地址送寄存器,段地址 DS 或ES 。这个偏移地址和段地址(也称地址指针)是由src 指定的两个相继字单元提供的。
LDS reg,src (reg)<-(src) (DS)<-(src+2)
LES reg,src (reg)<-(src) (ES)<-(src+2)
指令支持的寻址方式:src 必须为存储器寻址方式
指令对标志位的影响:不影响标志位。
指令的特 殊要求:指令中REG 不能是段寄存器;

四、标志寄存器传送指令

8 、标志寄存器的低字节送AH LAHF (load AH with FLAGS)

指令的汇编格式:LAHF
指令的基本功能:(AH)<-(FLAGS)0-7
指令对 标志位的影响:不影响标志位

9 、AH 送标志寄存器低字节 SAHF(store AH into FLAGS)

指令的汇 编格式:SAHF
指令的基本功能:(FLAGS)0-7<-(AH)
指令对标志位的影响:由装入值来确定标志位的值。

10 、 标志进栈 PUSHF (push the flags)

指令的汇编格式:PUSHF
指令的基本功能: (SP)<-(SP)-2 ((SP)+1,(SP))<-(FLAGS)0-15
指令对标志位的影响:不影响标志位。

11 、 标志出栈 POPF (pop the FLAGES)

指令的汇编格式:POPF
指令的基本功能: (FLAGS)0-15<-((SP)+1,(SP)) (SP)<-(SP)+2
指令对标志位的影响:由装入值来确定标志位的值。

[ 算 术指令]

一、加法指令

12 、加法指令 ADD (addition)

指令的汇编格式:add dst,src
指令的基本功能:(dst)<-(src)+(dst)
指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。 即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:
SF=1 加法结果为负数(符号位为1 )
SF=0 加法结果为正数(符号位为0 )
ZF=1 加法结果为零
ZF=0 加法结果不为零
CF=1 最高有效位向高位有进位
CF=0 最高有效位向高位无进位
OF=1 两个同符号数相加(正数+ 正数 或 负数+ 负数),结果符号与其相反。
OF=0 两个不同符号数相加,或同符号数相加,结果符号与其相同。

13 、带进为加法指令 ADC (add with carry)

指令的汇编格式:ADD dst,src
指令的基本功能: (dst)<-(src)+(dst)+CF
指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外, 源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:SF=1 加法结果为负数
SF=0 加法结果为正数
ZF=1 加法结果为零
ZF=0 加法结果不为零
CF=1 最高有效位向高位有进位
CF=0 最低有效位相高位无进位
OF=1 两个同符号数相加,结果符号与其相反,
OF=0 两个同符号数相加,或同符号相加,结果符号与其相同

14 、加1 指令 INC (increament)
指令的汇编格式:INC opr
指令的基本功能:(opr)<-(opr)
指令支持的寻址方式 可以使用除立即数方式外的任何寻址方式
指令对标志位的影响:SF=1 加法结果为负数
SF=0 加法结果为正数
ZF=1 加法结果为零
ZF=0 加法结果不为零
OF=1 两个同符号数相加,结果符号与其相反,
OF=0 两个同符号数相加,或同符号相加,结果符号与其相同。

二、减法指令

15 、减法指令 SUB (subtract)

指 令的汇编格式:SUB dst,src
指令的基本功能:(dst)<-(dst)-(src)
指令支持的寻址方式:他们两个操作数 不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:SF=1 减法结果为负数(符号位为1 )
SF=0 减法结果为正数(符号位为0 )
ZF=1 减法结果为零
ZF=0 减法结果不为零
CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)
CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉= 减数,够减的情况)
OF=1 两数符号相反(正数- 负数,或负数- 正数),而结果符号与减数相同。
OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

16 、 带借位减法指令 SBB (subtract with borrow)

指令的汇编格式:SBB dst,src
指令的基本功 能:(dst)<-(dst)-(src)-CF
指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况 外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:SF=1 减法结果为负数(符号位为1 )
SF=0 减法结果为正数(符号位为0 )
ZF=1 减法结果为零
ZF=0 减法结果不为零
CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)
CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉= 减数,够减的情况)
OF=1 两数符号相反(正数- 负数,或负数- 正数),而结果符号与减数相同。
OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

17 、 减1 指令 DEC (decrement)

指令的汇编格式:DEC opr
指令的基本功能:(opr)<-(opr)-1
指 令支持的寻址方式:可以使用除立即数方式外的任何寻址方式。
指令对标志位的影响:SF=1 减法结果为负数(符号位为1 )
SF=0 减法结果为正数(符号位为0 )
ZF=1 减法结果为零
ZF=0 减法结果不为零
OF=1 两数符号相反(正数- 负数,或负数- 正数),而结果符号与减数相同。
OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

18 、 比较指令 CMP (compare)

指令的汇编格式:CMP opr1,opr2
指令的基本功能: (opr1)-(opr2), 根据相减结果设置条件码,但不回送结果。
指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数 为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:SF=1 减法结果为负数(符号位为1 )
SF=0 减法结果为正数(符号位为0 )
ZF=1 减法结果为零
ZF=0 减法结果不为零
CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)
CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉= 减数,够减的情况)
OF=1 两数符号相反(正数- 负数,或负数- 正数),而结果符号与减数相同。
OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

19 、 求补指令 NEG (negate)

指令的汇编格式:NEG opr
指令的基本功能:(opr)<- -(opr)
指 令支持的寻址方式:可以使用除立即数方式外的任何寻址方式。
指令对标志位的影响:CF=1 不为0 的操作数求补时
CF=0 为0 的操作数求补时
OF=1 操作数为-128 (字节运算)或操作数为-32768 (字运算)
OF=0 当求补运算的操作数不为-128 (字节)或-32768 (字)时

三、乘法指令

20 、无符号乘法指令 NUL (unsigned multiple)
有符号乘法指令 IMUL(signed muliple)

指令的汇编格式:NUL src
IMUL src
指令的基本功能:(AX)<-(AL)*(src)
(DX,AX)<-(AX)*(src)
指 令支持的寻址方式:src 可以使用除立即数方式以外的任一种寻址方式。
指令对标志位的影响:乘法指令只影响标志位CF 和OF ,其他条件码位无定 义。
MUL 指令的条件码设置为:
CF OF=0 0 乘积的高一半为0 (字节操作的(AH )或字操作的(DX ))
CF OF=1 1 乘积的高一半不为0
IMUL 指令的条件码设置为:
CF OF=0 0 乘积的高一半为低一半的符号扩展.
CF OF=1 1 其他情况
指令的特殊要求:MUL 和IMUL 指令的区别仅在于操作数是无符号还是带符号数,它们的共同点是,指令中只给出源操作数src ,目的操 作数是隐含的,它只能是累加器(字运算为AX ,字节运算为AL )。隐含的乘积寄存器是AX 或DX (高位)和AX (低位)。


四、符 号扩展指令

21 、节扩展为字 CBW (convert byte to word)

指令的汇编格式:CBW
指 令的基本功能:(AH)=00H 当(AL) 的最高有效位为0 时
(AH)=FFH 当(AL) 的最高有效位为1 时
指令对标志位的影响:不 影响标志位
指令的特殊要求:这是条无操作数的指令,进行符号扩展的操作数必须存放在AL 寄存器或AX 寄存器中。

22 、字扩展为双 字 CWD (convert word to double word)

指令的汇编格式:CWD
指令的基本功能: (DX)=0000H 当(AX) 的最高有效位为0 时
(DX)=FFFFH 当(AX) 的最高有效位为1 时
指令对标志位的影响:不影响标 志位
指令的特殊要求:这是条无操作数的指令,进行符号扩展的操作数必须存放在AL 寄存器或AX 寄存器中。

五、除法指令

23 、 无符号数除法 DIV (unsigned divide)
带符号数除法 IDIV (singed divide)

指令的汇编 格式:DIV src
IDIV src
指令的基本功能:字操作
(AL)<-(AX)/src 的商
(AH)<-(AX)/src 的余数
字节操作
(AX)<-(DX,AX)/src 的商
(DX)<-(DX,AX)/src 的余数
指令支持 的寻址方式:src 作为除数,可用除立即数以外的任一种寻址方式来取得。
指令对标志位的影响:不影响条件码。
指令的特殊要求:除法指令要 求字操作时,被除数必须为32 位,除数是16 位,商和余数是16 位的;
字节操作时,被除数必须为16 位,除数是8 位,得到的商和余数是8 位的。

六、 十进制调整指令

[ 逻辑指令]

一、逻辑运算

24 、逻辑与 AND (logic and)

指 令的汇编格式:AND dst,src
指令的基本功能:(dst)<-(dst) 与(src)
指令支持的寻址方式:两个操作数不能 同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:指令执行后 CF 和 OF 置零,AF 无定义。
SF=1 指令执行后的结果为负数(符号位为1 )
SF=0 指令执行后的结果为正数(符号位为0 )
ZF=1 指令执行后的结果为零
ZF=0 指令执行后的结果不为零
PF=1 结果操作数中1 的个数为偶数时置1
PF=0 结果操作数中1 的个数为奇数时置0

25 、逻辑或 OR (logic or)

指令的汇编格式:OR dst ,src
指 令的基本功能:(dst)<-(dst) 或(src)
指令支持的寻址方式:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况 外,原操作数和目的操作数必须有一个寄存器寻址方式。
指令对标志位的影响:令执行后 CF 和 OF 置零,AF 无定义。
SF=1 指令执行后的结果为负数(符号位为1 )
SF=0 指令执行后的结果为正数(符号位为0 )
ZF=1 指令执行后的结果为零
ZF=0 指令执行后的结果不为零
PF=1 结果操作数中1 的个数为偶数时置1
PF=0 结果操作数中1 的个数为奇数时置0

26 、 逻辑非 NOT (logic not)

指令的汇编格式:NOT orc
指令的基本功能:(dst)<-(opr)
指 令支持的寻址方式:除立即数寻址方式以外的其余寻址方式
指令对标志位的影响:对标志位无影响

27 、异或 XOR (exclusice or)

指令的汇编格式:XOR dst,src
指令的基本功能:(dst)<-(dst) 异或 (src)
指令支持的寻址方式:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,原操作数和目的操作数必须有一个寄存器寻址方 式。
指令对标志位的影响:令执行后 CF 和 OF 置零,AF 无定义。
SF=1 指令执行后的结果为负数(符号位为1 )
SF=0 指令执行后的结果为正数(符号位为0 )
ZF=1 指令执行后的结果为零
ZF=0 指令执行后的结果不为零
PF=1 结果操作数中1 的个数为偶数时置1
PF=0 结果操作数中1 的个数为奇数时置0

28 、测试指令 TEST

指令的 汇编格式:TEST opr1,opr2
指令的基本功能:(opr1) 与(opr2)
指令支持的寻址方式:两个操作数不能同时为存储器寻 址,即为除源操作数为立即数的情况外,源操作数和目的操作数必须有一个寄存器寻址方式。
指令对标志位的影响:令执行后 CF 和 OF 置零,AF 无定义。
SF=1 指令执行后的结果为负数(符号位为1 )
SF=0 指令执行后的结果为正数(符号位为0 )
ZF=1 指令执行后的结果为零
ZF=0 指令执行后的结果不为零
PF=1 结果操作数中1 的个数为偶数时置1
PF=0 结果操作数中1 的个数为奇数时置0

二、移位指令

29 、逻辑左移 SHL (shift logical left)

指 令的汇编格式:SHL dst,cnt
指令的基本功能:SHL 指令向左逐位移动cnt 次,每次逐位移动后,最低位用0 来补充,最高位移入CF 。
指 令支持的寻址方式:目的操作数dst 可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1 时,1 可以直接写在指令中,cnt 〉1 时,cnt 必须 放入CL 寄存器中。
指令对标志位的影响:CF= 移入的数值
OF=1 当cnt=1 时,移动后最高位的值发生变化。
OF=0 当cnt=1 时,移动时最高位的值未发生变化。
SF 、ZF 、PF 根据移动后的结果设置。

30 、逻辑右移 SHR (shift logical right)

指令的汇编格式:SHR dst,cnt
指令的基本功能:SHR 指令向右逐位移动cnt 次,每次逐 位移动后,最高位用0 来补充,最低位移入CF 。
指令支持的寻址方式:目的操作数dst 可以是除立即数外的任何寻址方式。移位次数(或位 数)cnt=1 时,1 可以直接写在指令中,cnt 〉1 时,cnt 必须放入CL 寄存器中。
指令对标志位的影响:CF= 移入的数值
OF=1 当cnt=1 时,移动后最高位的值发生变化。
OF=0 当cnt=1 时,移动时最高位的值未发生变化。
SF 、ZF 、PF 根据移动后的结果 设置。

31 、算术左移 SAL (shift arithmetic left)

指令的汇编格式:SAL dst cnt
指令的基本功能:SAL 指令向左逐位移动cnt 次,每次逐位移动后,最低位用0 来补充,最高位移入CF 。
指令支持的寻址方式:目的 操作数dst 可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1 时,1 可以直接写在指令中,cnt 〉1 时,cnt 必须放入CL 寄存器中。
指 令对标志位的影响:CF= 移入的数值
OF=1 当cnt=1 时,移动后最高位的值发生变化。
OF=0 当cnt=1 时,移动时最高位的值未发生变化。
SF 、ZF 、PF 根据移动后的结果设置。

32 、算术右移 SAR (shift arithmetic right)

指令的汇编格式:SAR dst,cnt
指令的基本功能:SAR 指令向右逐位移动cnt 次, 每次逐位移动后,最高位用符号位来补充,最低位移入CF 。
指令支持的寻址方式:目的操作数dst 可以是除立即数外的任何寻址方式。移位次数(或位 数)cnt=1 时,1 可以直接写在指令中,cnt 〉1 时,cnt 必须放入CL 寄存器中。
指令对标志位的影响:CF= 移入的数值
OF=1 当cnt=1 时,移动后最高位的值发生变化。
OF=0 当cnt=1 时,移动时最高位的值未发生变化。
SF 、ZF 、PF 根据移动后的结果 设置。

33 、循环左移 ROL (rotate left)

指令的汇编格式:ROL dst,cnt
指令的基本 功能:ROL 对由dst 指定的寄存器或存储器操作数左移循环移动cnt 所指定的次数,每左移一次,把最高位同时移入CF 和操作数最低位。
指令支 持的寻址方式:目的操作数dst 可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1 时,1 可以直接写在指令中,cnt 〉1 时,cnt 必须放入 CL 寄存器中。
指令对标志位的影响:CF= 移入的数值
OF=1 当cnt=1 时,移动后最高位的值发生变化。
OF=0 当cnt=1 时,移动时最高位的值未发生变化。
SF 、ZF 、PF 根据移动后的结果设置。

34 、循环右移 ROR (rotate right)

指令的汇编格式:ROR dst,cnt
指令的基本功能:ROR 对由dst 指定的寄存器或存储器操作数右移循环移动cnt 所指定的次数,每右移一次,把最低位同时移入CF 和操作数最高位。
指令支持的寻址方式: 目的操作数dst 可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1 时,1 可以直接写在指令中,cnt>1 时,cnt 必须放入CL 寄存 器中。
指令对标志位的影响:CF= 移入的数值
OF=1 当cnt=1 时,移动后最高位的值发生变化。
OF=0 当cnt=1 时,移动时最高位的值未发生变化。
SF 、ZF 、PF 根据移动后的结果设置。

35 、带进位的循环左移 RCL (rotate left through carry)

指令的汇编格式:RCL dst,cnt
指令的基本功能:RCL 对由dst 指定的寄存器或存储器操作数,连同进位标志CF 左循环移动,m 所指定的次数,每左移一次,把操作数的最高位移入CF ,而CF 中原有内容移入操作 数的最低位。
指定支持的寻址方式:目的操作数dst 可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1 时,1 可以直接写在指令 中,cnt 〉1 时,cnt 必须放入CL 寄存器中。
指令对标志位的影响:CF= 移入的数值。
OF=1 当cnt=1 时,移动后最高位的值未发生变化。
OF=0 当cnt=1 时,移动后最高位的值发生变化。
SF 、ZF 、PF 标志位不受影响。

36 、 带进位的循环右移 RCR (rotate right through carry)

指令的汇编格式:RCR dst ,cnt
指 令的基本功能:RCR 对由dst 指定的寄存器或存储器操作数,连同进位标志CF 右循环移动,m 所指定的次数,每右移一次,把操作数的最高低位移入CF ,而CF 中原有内容移入操 作数的最高位。
指令支持的寻址方式:目的操作数dst 可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1 时,1 可以直接写入指令 中,cnt 〉1 时,cnt 必须放入CL 寄存器中。
指令对标志位的影响:CF= 移入的数值。
OF=1 当cnt=1 时,操作数最高位的值未发生变化。
OF=0 当cnt=1 时,操作数最高位的值发生变化。
SF 、ZF 、PF 标志位不受影响。

[ 串 处理指令]

一、设置方向标志指令

37 、DF 置零 CLD (clear direction flag)
DF 置 一 STD (set direction flag)

指令的汇编格式:CLD
STD
指令的基本功能:CLD DF=0
STD DF=1

二、串处理指令

38 、串传送 MOVSB / MOVSW (move string byte/word)

指 令的汇编格式:MOVSB
MOVSW
指令的基本功能:(ES:DI)<-(DS:SI)
(SI)<-(SI)+/-1( 字 节) 或+/-2( 字)
(DI)<-(DI)+/-1( 字节) 或+/-2( 字)
指令对条件码的影响:不影响条件码。
指令的特 殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI 和DI 寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。

39 、 存串 STOSB / STOSW (stroe from string byte/word)

指令的汇编格式:STOSB
STOSW
指 令的基本功能:(ES:DI)<-(AL) 或(AX)
(DI)<-(DI)+/-1( 字节) 或+/-2( 字)
指令对条件码的 影响:不影响条件码。
指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI 和DI 寄存器的间接寻址方式。 源串允许使用段跨越前缀来指定段。

40 、取串LODSB / LODSW (load from string byte/word)

指 令的汇编格式:LODSB
LODSW
指令的基本功能:(AL) 或(AX)<-(DS:SI)
(SI)<-(SI)+/-1( 字 节) 或+/-2( 字)
指令对条件码的影响:不影响条件码。
指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的 寻址方式是SI 和DI 寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。

41 、串比较 CMPSB / CMPSW (compare string byte/word)

指令的汇编格式:CMPSB
CMPSW
指令的基本功能: (DS:SI)-(ES:DI) 根据比较结果设置条件码
(SI)<-(SI)+/-1( 字节) 或+/-2( 字)
(DI)<-(DI)+/-1( 字 节) 或+/-2( 字)
指令对条件码的影响:SF=1 减法结果为负数(符号位为1 )
SF=0 减法结果为正数(符号位为0 )
ZF=1 减法结果为零
ZF=0 减法结果不为零
CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)
CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉= 减数,够减的情况)
OF=1 两数符号相反(正数- 负数,或负数- 正数),而结果符号与减数相同。
OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

三、 循环指令

68 、循环 LOOP (loop)
指令的汇编格式:LOOP label
指令的基本功能:① (CX)←(CX) -1
② 若(CX)≠0 ,则(IP)←(IP) 当前+位移量,否则循环结束。
指令的特殊要求:循环指 令都是短转移格式的指令,也就是说,位移量是用8 位带符号数来表示的,转向地址在相对于当前IP 值的-128 ~ +127 字节范围之内。

69 、 为零/ 相等时循环 LOOPZ/LOOPE (loop while nonzero or equal)
指令的汇编格 式:LOOPNZ/LOOPNE label
指令的基本功能:① (CX)←(CX) -1
② 若ZF=1 且(CX)≠0 ,则(IP)←(IP) 当前+位移量,否则循环结束。
指令的特殊要求:循环指令都是短转移格式的指令,也就是说,位移量 是用8 位带符号数来表示的,转向地址在相对于当前IP 值的-128 ~ +127 字节范围之内。

70 、不为零/ 不相等时循环 LOOPNZ/LOOPNE (loop while nonzero or not equal)
指令的汇编格式:LOOPNZ/LOOPNE label
指令的基本功能:① (CX)←(CX) -1
② 若ZF=0 且(CX)≠0 ,则(IP)←(IP) 当前+位移量,否则循环结束。
指令的特殊要求:循环指令都是短转移格式的指令,也就是说,位移量 是用8 位带符号数来表示的,转向地址在相对于当前IP 值的-128 ~ +127 字节范围之内。
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!

已有 0/370 人参与

欢迎使用手机扫描访问本站,还可以关注微信哦~