汇编语言的除法计算

除法运算相关知识

  1. 被除数分为32位和16位,分别放在ax,dx或ax中
    • 被除数32位:在ax和dx中存放,ax存放低16位,dx存放高16位,对应除数一定为16位
    • 被除数16位:在ax中存放,对应除数为8位
  2. 结果的存储:32位 / 16位 => ax(商)…dx(余数)
  3. 结果的存储:16位 / 8位 => al(商)…ah(余数)

计算100001/100

assume cs:code
code segment
        ;被除数:由于100001>65535 超过了16位,因此不能用16位寄存器存放
        ;       需要用两个16位寄存器(共32位)来联合存放
        ;除数:100小于16位,可以在8位寄存器中存放,但是因为被除数是
        ;       32位的,所以除数要用一个16位寄存器存放
        ; 32位 / 16位 => ax商...dx余数
        ;被除数要用dx存放高16位,ax存放低16位
start:  mov dx,1        ; dx高十六位 存放0001h; ax低十六位,存放86a1h
        mov ax,86a1h    ;(dx)*10000h+ax=100001
        mov bx,100
        div bx

        ; 结果:ax存放商,dx存放余数
        ;ax=03EB  dx=0001
        mov ax,4c00h
        int 21h
code ends
end start 

计算1001/100

assume cs:code
code segment
        ;被除数:由于256< 1001 <65535 小于16位,高于8位,可以用16位寄存器存放
        ;除数:100<256 小于8位,可以在8位寄存器中存放,但是因为被除数是
        ;       16位的,所以除数要用一个8位寄存器存放
        ; 16位 / 8位 => al商...ah余数
        ;被除数:默认在ax寄存器中存放
start:  mov ax,03e9h      ;ax存放被除数16位  
        mov bl,0064h      ;bl 8位寄存器存放8位除数
        div bl

        ; 结果:al存放商,ah存放余数
        ;al=0A  ah=01  -> ax=010A
        mov ax,4c00h
        int 21h
code ends
end start 
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Yuleo_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值