除法为什么会设计成可以溢出
本帖最后由 howtomov 于 2012-8-22 16:17 编辑当除数为8位的时候,被除数放在ax中, 计算后,商放在al中,余数放在ah中,
除数为16位,被除数低位放在ax中,高位放在dx中,计算后,商放在ax中,余数放在dx中
大家都知道这种设计其实是会溢出的,原因就是 被除数和商的位数不相同
为什么不设计成被除数和商的位数相同, 这样不就能保证结果一定放的下了么,
难道设计者故意设计了这种缺陷?还是另有原因,还望高手解惑
呵呵 楼主,这真是很难解释的问题
假设, 除法设计成 被除数和商的位数相同
比如:
一:
movax,8888h
movdx,8888h
movcx,8
div cx
这时按照 被除数和商的位数相同,这时并不会溢出
二:
movax,0h
movdx,100h
movcx, 1000h
div cx
这时按照 被除数和商的位数相同就有些不妥, 因为1000000/1000 = 1000 这是一个16寄存器就能存放,那商在ax就行 安照被除数和商的位数相同设计,将会出现不必要的开销
三:
被除数和商的位数相同的不同设计, 也是另一用途
呵呵, 楼主,如果你是刚学习汇编,这时你无需对这深入,日后你自然而然就会知道了 谢谢啊,我知道了, 可能就是为了尽量精简,能用算法的就不再硬件上做设计,我觉得应该是这样的 请问 楼主, 你是搞硬件的吗, 想要做出优质的算法,那要学数据结构
页:
[1]