howtomov 发表于 2012-8-22 16:16:08

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

本帖最后由 howtomov 于 2012-8-22 16:17 编辑

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

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

梦幻羽羽 发表于 2012-8-22 16:16:09

呵呵   楼主,这真是很难解释的问题

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

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

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

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

呵呵, 楼主,如果你是刚学习汇编,这时你无需对这深入,日后你自然而然就会知道了

howtomov 发表于 2012-9-3 10:49:03

谢谢啊,我知道了, 可能就是为了尽量精简,能用算法的就不再硬件上做设计,我觉得应该是这样的

梦幻羽羽 发表于 2012-9-3 12:46:38

请问 楼主, 你是搞硬件的吗,   想要做出优质的算法,那要学数据结构
页: [1]
查看完整版本: 除法为什么会设计成可以溢出