汇编语言——div除法指令(无符号数除法)

1.div指令格式:div是一个单目运算符,格式为    div 寄存器/内存单元

2.过程:

①.当除数为8位时,被除数放在一个16位寄存器中,默认是ax,其余数放在ah,商放在al,例如:

②.当除数为16位时,被除数需要是一个32位的数值,那么此时需要两个寄存器,默认dx放高位,ax放低位,余数保存在dx中,商保存在ax中,例如

附加图片,容易记忆

好了,如果有不对的地方,敬请指点。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是x86汇编语言实现整除法的示例代码: ```assembly ; 输入:eax = 被除,ebx = 除 ; 输出:eax = 商,edx = 余 mov edx, 0 ; 初始化余为0 cmp ebx, 0 ; 检查除是否为0 je divide_by_zero ; 如果除为0,跳转到除以零错误处理程序 mov ecx, eax ; 将被除保存到ecx寄存器中 xor eax, eax ; 初始化商为0 ; 循环,从高位到低位依次处理被除的每一位 div_loop: cmp ecx, ebx ; 比较被除和除 jl div_done ; 如果被除小于除,退出循环 ; 执行一次除法操作 mov edx, 0 ; 清空余 div ebx ; edx:eax / ebx,结果保存在eax中,余保存在edx中 ; 更新被除 mov ecx, eax ; 将商保存到ecx寄存器中 xor eax, eax ; 清空eax寄存器,准备下一次除法操作 ; 更新余 mov eax, edx ; 将余保存到eax寄存器中 shl edx, 32 ; 将edx寄存器左移32位,以便加上下一位被除时得到正确的余 or edx, ecx ; 将ecx寄存器中的被除加到edx中,得到新的余 ; 继续循环 jmp div_loop div_done: mov eax, ecx ; 将最终的商保存到eax寄存器中 mov edx, edx ; 将最终的余保存到edx寄存器中 ret divide_by_zero: ; 处理除以零错误 ``` 该代码使用循环从高位到低位依次处理被除的每一位,执行一次除法操作,并将商保存到ecx寄存器中,余保存到edx寄存器中。在循环结束后,最终的商保存在eax寄存器中,最终的余保存在edx寄存器中。如果除为0,将会跳转到除以零错误处理程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值