鱼C论坛

 找回密码
 立即注册
查看: 1893|回复: 3

除法为什么会设计成可以溢出

[复制链接]
发表于 2012-8-22 16:16:08 | 显示全部楼层 |阅读模式
1鱼币
本帖最后由 howtomov 于 2012-8-22 16:17 编辑

当除数为8位的时候,被除数放在ax中, 计算后,商放在al中,余数放在ah中,
除数为16位,被除数低位放在ax中,高位放在dx中,计算后,商放在ax中,余数放在dx中
大家都知道这种设计其实是会溢出的,原因就是 被除数和商的位数不相同
为什么不设计成  被除数和商的位数相同,   这样不就能保证结果一定放的下了么,

难道设计者故意设计了这种缺陷?还是另有原因,还望高手解惑

最佳答案

查看完整内容

呵呵 楼主,这真是很难解释的问题 假设, 除法设计成 被除数和商的位数相同 比如: 一: mov ax, 8888h mov dx, 8888h mov cx, 8 div cx 这时 按照 被除数和商的位数相同,这时并不会溢出 二: mov ax, 0h mov dx, 100h mov cx, 1000h div cx 这时 按照 被除数和商的位数相同 就有些不妥, 因为 1000000/1000 = 1000 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-22 16:16:09 | 显示全部楼层
呵呵   楼主,这真是很难解释的问题

假设, 除法设计成 被除数和商的位数相同

比如:
一:   
       mov  ax,  8888h
       mov  dx,  8888h
       mov  cx,  8
       div   cx
这时  按照 被除数和商的位数相同,这时并不会溢出

二:
       mov  ax,  0h
       mov  dx,  100h
       mov  cx,   1000h
       div   cx
这时  按照 被除数和商的位数相同  就有些不妥,   因为  1000000/1000 = 1000    这是一个16寄存器就能存放,那商在ax  就行     安照被除数和商的位数相同设计,将会出现不必要的开销

三:
     被除数和商的位数相同的不同设计, 也是另一用途

呵呵, 楼主,如果你是刚学习汇编,这时你无需对这深入,日后你自然而然就会知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-3 10:49:03 | 显示全部楼层
谢谢啊,我知道了, 可能就是为了尽量精简,能用算法的就不再硬件上做设计,我觉得应该是这样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-3 12:46:38 | 显示全部楼层
请问 楼主, 你是搞硬件的吗,   想要做出优质的算法,那要学数据结构
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-27 23:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表