汇编算数指令
简述
- 80×86的算数运算指令包括二进制运算和十进制运算指令。算数指令用来执行算数运算,它们中有双操作数指令,也有单操作数指令。
- 如前所述,双操作数指令的两个操作数中除源操作数为立即数的情况外,必须有一个操作数在寄存器中。单操作数指令不允许使用立即数方式。算数指令的寻址方式均遵循这一原则。
加减
加法指令
ADD 加法
- 格式:ADD DST,SRC
- DST<–DST+SRC
ADC 带进位的加法
- 格式:ADC DST,SRC
- DST<–DST+SRC+CF
INC 加一
- 格式:INC OPR
- OPR<–OPR+1
减法指令
SUB 减法
- 格式:SUB DST,SRC
- DST<–DST-SRC
SBB 带借位的减法
- 格式:SBB DST,SRC
- DST<–DST-SRC-CF
DEC 减一
- 格式:DEC OPR
- OPR<–OPR-1
NEG 求补
- 格式:NEG OPR
- OPR<-(-OPR)
CMP 比较
- 格式:CMP OPR1, OPR2
- OPR1-OPR2
- 类似SUB但不保存结果,只是根据结果设置标志位
- CMP后往往跟着一条条件转移指令
乘法指令
MUL 无符号数乘法
- 格式:MUL SRC
- 字节操作:AX<-AL*SRC
- 字操作:DX,AX<-AX*SRC
- DX放高位字,AX放低位字
IMUL 带符号数乘法
- 格式:IMUL SRC
- 字节操作:AX<-AL*SRC
- 字操作:DX,AX<-AX*SRC
- DX放高位字,AX放低位字
除法指令
DIV 无符号数除法
- 格式:DIV SRC
- 字节操作:AL<-AX/SRC的商
- 字节操作:AH<-AX/SRC的余数
- 字操作:AX<-(DX,AX)/SRC的商
- 字操作:DX<-(DX,AX)/SRC的余数
IDIV 无符号数除法
- 格式:IDIV SRC
- 字节操作:AL<-AX/SRC的商
- 字节操作:AH<-AX/SRC的余数
- 字操作:AX<-(DX,AX)/SRC的商
- 字操作:DX<-(DX,AX)/SRC的余数
其他指令:指令手册。