二进制除法移位相减_在汇编除法中:移位相减是怎么样的原理啊,程序看了几天了还是看不懂,哪位兄弟告诉我,本人感激涕零...

满意答案

jinqun138

2013.05.24

采纳率:42%    等级:12

已帮助:6963人

二进制的除法本质是通过重复减法运算实现

即通过重复”从被除数的高位依次取出每一位, 被取出的数据加上上次的减法结果*2,

然后减去除数”的处理, 求出除法结果

假设:16位除以16位

被除数 R0R1 (占用2字节)

除数 R2R3 (占用2字节)

商 R0R1 (占用2字节) ******************* 这里需要说明, 此程序执行

结束以后, 商的结果保存在被除数中 ************

余数 R4R5 (占用2字节)

移位次数 R6 (占用1字节) ******************* 这里需要说明, 其数值根据

被除数的位数定义, 这里为32 *************

操作流程如下:

a) 余数清零

b) 判断除数是否为0, 如果为0, 是错误, 不再往下执行.

c) 设定移位次数

d) 被除数左移1位, 溢出的最高位保存在进位标志C中, 再把余数左移1位, 把C(被除数溢出的最高位)放入余数的最低位

e) 余数与除数比较大小(余数减去除数):

余数 ≥ 除数(减法结果为正)时, 被除数的最低位, 赋值 1

余数 < 除数(减法结果为负时, 恢复到减法前的余数) 被除数的最低位, 赋值 0

f) 定移位次数递减

g) 直到移位次数为0, 否则重复d) ~ f)

假设32位除以16位

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值