1、加法指令
加法指令 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 两个不同符号数相加,或同符号数相加,结果符号与其相同。
带进为加法指令
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 两个同符号数相加,或同符号相加,结果符号与其相同
加1指令 INC (increament)
指令的汇编格式:INC
opr
指令的基本功能:(opr)<-(opr)
指令支持的寻址方式
可以使用除立即数方式外的任何寻址方式
指令对标志位的影响:SF=1 加法结果为负数
SF=0 加法结果为正数
ZF=1 加法结果为零
ZF=0 加法结果不为零
OF=1 两个同符号数相加,结果符号与其相反,
OF=0 两个同符号数相加,或同符号相加,结果符号与其相同。
2、减法指令
减法指令 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
同符号数相减时,或不同符号数相减,其结果符号与减数不同。
带借位减法指令 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
同符号数相减时,或不同符号数相减,其结果符号与减数不同。
减1指令 DEC
(decrement)
指令的汇编格式:DEC
opr
指令的基本功能:(opr)<-(opr)-1
指令支持的寻址方式:可以使用除立即数方式外的任何寻址方式。
指令对标志位的影响:SF=1
减法结果为负数(符号位为1)
SF=0 减法结果为正数(符号位为0)
ZF=1 减法结果为零
ZF=0 减法结果不为零
OF=1
两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。
OF=0
同符号数相减时,或不同符号数相减,其结果符号与减数不同。
比较指令 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
同符号数相减时,或不同符号数相减,其结果符号与减数不同。
求补指令 NEG
(negate)
指令的汇编格式:NEG opr
指令的基本功能:(opr)<-
-(opr)
指令支持的寻址方式:可以使用除立即数方式外的任何寻址方式。
指令对标志位的影响:CF=1 不为0的操作数求补时
CF=0 为0的操作数求补时
OF=1
操作数为-128(字节运算)或操作数为-32768(字运算)
OF=0
当求补运算的操作数不为-128(字节)或-32768(字)时
3、乘法指令
无符号乘法指令
MUL(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(低位)。
4、符号扩展指令
节扩展为字
CBW (convert byte to word)
指令的汇编格式:CBW
指令的基本功能:(AH)=00H
当(AL)的最高有效位为0时
(AH)=FFH
当(AL)的最高有效位为1时
指令对标志位的影响:不影响标志位
指令的特殊要求:这是条无操作数的指令,进行符号扩展的操作数必须存放在AL寄存器或AX寄存器中。
字扩展为双字 CWD (convert word to double
word)
指令的汇编格式:CWD
指令的基本功能:(DX)=0000H 当(AX)的最高有效位为0时
(DX)=FFFFH
当(AX)的最高有效位为1时
指令对标志位的影响:不影响标志位
指令的特殊要求:这是条无操作数的指令,进行符号扩展的操作数必须存放在AL寄存器或AX寄存器中。
5、除法指令
无符号数除法 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位的。