x86汇编加减乘除

;不产生进位的加法
mov ax,0x0001
mov bx,0x0002
add ax,bx
;产生进位的加法
mov ax,0xf000
mov bx,0x1000
add ax,bx
;不产生借位的减法
mov cx,0x0003
mov dx,0x0002
sub cx,dx
;产生借位的减法
mov cx,0x0001
mov dx,0x0002
sub cx,dx

kaka:jmp kaka
times 510-($-$$) db 0
db 0x55,0xaa
;设定循环次数 计数器放在 cx中 自动减一
mov cx,100
;initialize ax
mov ax, 0x0000
;loop section
sum:
    add ax,cx
    loop sum

kaka:jmp kaka
times 510-($-$$) db 0
db 0x55,0xaa    
;bx:ax=0x0001f000
mov bx,0x0001
mov ax,0xf000
;dx:cx=00101000
mov dx,0x0010
mov cx,0x1000
;低位相加
add ax,cx
;高位相加
adc bx,dx
;和应该为bx:ax=0x00120000

jmp $
times 510-($-$$) db 0
db 0x55,0xaa
;bx:ax=0x00020003
mov bx,0x0002
mov ax,0x0003
;dx:cx=0x00030002
mov dx,0x0003
mov cx,0x0002
;低位相减
sub ax,cx
;高位相加
sbb bx,dx
;差应该为bx:ax=0xffff0001

jmp $
times 510-($-$$) db 0
db 0x55,0xaa
;8位乘法  乘数要事先放在al或ax寄存器,计算结果存在ax或者dx:ax寄存器,会影响cf标志位
mov al,0xf0
mov ah,0x02
mul ah
;16位 multi
mov ax,0xf000
mov bx,0x0002
mul bx
;除法 div后面是除数,被除数则事先放在ax寄存器或者dx:ax寄存器
;16位除法 商存在al寄存器 余数汆子ah寄存器中
mov ax,0x0004
mov bx,0x02
div bl
;32位除法 商存在ax寄存器 余数存在dx寄存器
mov dx,0x0008
mov ax,0x0006
mov cx,0x0002
div cx
;循环及补0
jmp $
times 510-($-$$) db 0
db 0x55,0xaa
;设置ss寄存器
mov bx,0x0000
mov ss,bx
;设置sp寄存器
mov sp,0x0000
;ax压入栈
push ax
;ax弹出栈
pop ax
;循环及补0
jmp $
times 510-($-$$) db 0
db 0x55,0xaa
;被除数0x00090006
mov dx, 0x0009
mov ax, 0x0006
;除数0x0002
mov cx, 0x0002
push ax
mov ax, dx
mov dx, 0
;第一次除法,高位
div cx
mov bx, ax
;第二次除法,低位
pop ax
div cx

jmp $
times 510-($-$$) db 0
db 0x55, 0xaa

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

larance

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值