【asm基础】汇编指令之加减乘除指令

ADD

加法。

OF

DF

IF

SF

ZF

AF

PF

CF

*

*

*

*

*

*

说明:将源操作数、目的操作数相加,结果存放在目的操作数中。操作数尺寸必须一致。

指令格式:

add reg,reg
add reg,imm
add mem,reg
add mem,imm
add reg,mem
add accum,imm (accum指的是AL/AX/EAX)

相对的,还有一个带进位符号的加法指令,下面会介绍。

ADC

带进位加。

OF

DF

IF

SF

ZF

AF

PF

CF

*

*

*

*

*

*

说明:将源操作数、目的操作数和进位标志相加。操作数尺寸必须一致。

指令格式:

adc reg,reg 
adcreg,imm
adc mem,reg
adc mem,imm
adc reg,mem
adc accum,imm (accum指的是AL/AX/EAX)

SUB

减法。

OF

DF

IF

SF

ZF

AF

PF

CF

*

*

*

*

*

*

说明:从目的操作数中减去源操作数。

指令格式:

sub reg, reg
sub reg, imm
sub mem, reg
sub mem, imm
sub reg, mem
sub accum, imm

相对的,还有一个带进位符号的减法指令:

SBB

带进位减。

OF

DF

IF

SF

ZF

AF

PF

CF

*

*

*

*

*

*

说明:从源操作数减去目的操作数,然后再减去进位标志值。

指令格式:

sbb reg, reg
sbb reg, imm
sbb mem, reg
sbb mem, imm
sbb reg, mem

这里的SBB中最后一个B表示Borrow,即借位。

MUL

无符号整数乘法。

OF

DF

IF

SF

ZF

AF

PF

CF

*

*

说明:将AL/AX/EAX与源操作数相乘,如果源操作数是8位的,则与AL相乘,积存储在AX中;如果源操作数是16位的,则与AX相乘,积存储在EAX中;如果源操作数是32位的,则与EAX相乘,积存储在EDX:EAX中。

指令格式:

mul reg
mul mem

由于存放乘积的寄存器的位数是乘数的位数的两倍,所以不用担心相乘后数据丢失的问题。

IMUL

有符号整数乘法。

OF

DF

IF

SF

ZF

AF

PF

CF

*

*

说明:执行8位/16位/32位的有符号整数乘法操作。如果乘数是8位的,被乘数是AL,积在AX中;如果乘数是16位的,被乘数是AX,积在DX:AX中;如果乘数是32位的,被乘数是EAX,积在EDX:EAX中。如果16位的积扩展到AH,32位的积扩展到DX,或者64位的积扩展到EDX中,则进位和溢出标志置位。

指令格式:

单操作数:

imul r/m8
imul r/m16
imul r/m32

双操作数:

imul r16, r/m16
imul r16, imm8
imul r32, r/m32
Imul r32, imm8
imul r16, imm16
imul r32, imm32

三操作数:

imul r16, r/m16, imm8
imul r16, r/m16, imm16
Imul r32, r/m32, imm8
imul r32, r/m32, imm32

单操作数不会发生溢出。如果乘积的高半部分不是低半部分的符号扩展,则进位标志和溢出标志置位,可使用该特点确定乘积的高半部分是否可以忽略。

双操作数中,第一个操作数是存储乘积的寄存器,第二操作数是乘数。

三操作数中,第一个操作数是存储乘积的寄存器,第二、三操作数是两个乘数。

DIV

无符号整数除法。

OF

DF

IF

SF

ZF

AF

PF

CF

说明:执行8位/16位/32位的无符号整数除法操作。如果除数是8位的,被除数是AX,商在AL中,余数在AH中;如果除数是16位的,被除数是DX:AX,商在AX中,余数在DX中;如果除数是32位的,被除数是EDX:EAX,商在EAX中,余数在EDX中。

指令格式:

div reg
div mem

IDIV

有符号整数除法。

OF

DF

IF

SF

ZF

AF

PF

CF

 ?

说明:执行8位/16位/32位的有符号整数除法操作。如果除数是8位的,被除数是AX,商在AL中,余数在AH中;如果除数是16位的,被除数是DX:AX,商在AX中,余数在DX中;如果除数是32位的,被除数是EDX:EAX,商在EAX中,余数在EDX中。通常在执行IDV指令之前要使用CBW或CWD对除数进行符号扩展。

指令格式:

idiv reg
idiv mem
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值