汇编加减乘除指令 add adc sub sbb mul div

以下均是对于实模式来说。

指令 add

add 寄存器,数据比如:add ax,8
add 寄存器,寄存器比如:add ax,bx
add 寄存器,内存单元比如:add ax,[0]
add 内存单元,寄存器比如:add [0],ax

指令adc

adc是带进位加法指令,利用了CF标志位上记录的进位值。如
adc ax,1
相当于 (ax) = (ax) + 1 +CF

指令 sub

sub 寄存器,数据比如:sub ax,9
sub 寄存器,寄存器比如:sub ax,bx
sub 寄存器,内存单元比如:sub ax,[0]
sub 内存单元,寄存器比如:sub [0],ax

指令sbb

sbb是带借位减法指令,利用了CF标志位上记录的借位值。比如
sbb ax,1
相当于 (ax) = (ax) - 1 - CF

指令 mul

(1)两个数是8位

        一个数放在al,
        另一个数放在8位寄存器或者内存单元中,
        结果:放在ax中。
        比如:mul byte ptr ds:[0]
        含义:(ax) = (al) * ((ds)*16+0)

(2)两个数是16位

        一个数放在ax,
        另一个数放在16位寄存器中或内存单元中,
        结果:低位放在ax,高位放在dx。
        比如:mul word ptr [bx+si+8]
        含义:(ax) = (ax) * ((ds)*16+(bx)+(si)+8)结果的低16位,
                   (dx) = (ax) * ((ds)*16+(bx)+(si)+8)结果的高16位。

指令 div

(1)被除数为16位,除数为8位

        被除数放在ax,
        除数放在寄存器或内存单元,
        结果:al存储商,ah存储余数。
        比如:div byte ptr ds:[0]
        含义:(al) = (ax) / ((ds)*16+0的商
                   (ah) = (ax) / ((ds)*16+0的余数

(2)被除数为32位,除数为16位

        被除数高16位放在dx,低16位放在ax,
        除数放在寄存器或内存单元,
        结果:ax存储商,dx存储余数。
        比如:div word ptr es:[0]
        含义:(ax) = ((dx)*10000H+(ax)) / ((es)*16+0)的商,
                    (dx) = ((dx)*10000H+(ax)) / ((es)*16+0)的余数。


参考 《汇率语言》王爽 著 第2版 清华大学出版社







  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值