不正常人类 发表于 2012-9-14 20:52:04

请大家帮忙解决下我的一个疑惑 谢谢

王爽老师 《 汇编语言》第二版
10.10 参数和结果传递的问题
;说明:计算n的3次方
;参数:(bx)=n
;结果:(dx:ax)=n^3
cube:mov ax,bx
             mul bx
             mul bx   ;进行此步乘法,感觉有些问题
             ret
书上说两个十六位数进行乘法,高位默认存在dx,低位默认在ax中,那么在进行第二个mul bx时,个人有些疑惑,
第一次做乘法的时候,结果就在dx和ax中,第二次乘的时候,用的只是第一次所得结果中ax的值,而dx中的数没用,这样想,好像就不是计算bx的三次方了!

仁意 发表于 2012-9-14 20:52:05

是呀,没溢出就是dx=0,就没用dx中的数据
这个求3次方是根据上面的程序来的,他只是算1到8的3次方,所以dx都为0,不需要dx的数据
如果dx不为0,又是另外的算法了

仁意 发表于 2012-9-14 21:43:12

其实很简单,王爽老师故意忽略了,因为进位,溢出的问题还没涉及到

仁意 发表于 2012-9-14 21:45:17

根据"以后遇到的问题,以后再说“,当讲到如何解决溢出时,程序就不会是这样了

不正常人类 发表于 2012-9-14 22:32:31

仁意 发表于 2012-9-14 21:45 static/image/common/back.gif
根据"以后遇到的问题,以后再说“,当讲到如何解决溢出时,程序就不会是这样了

不是溢出的问题,我的意思是,dx中的数据没用,那计算dx的3次方,这样算不对呀,因为默认用的只是ax的数据!!

ermao 发表于 2012-10-13 21:38:02

山外青山楼外楼,高手外面还有高手!
页: [1]
查看完整版本: 请大家帮忙解决下我的一个疑惑 谢谢