无我的侠圣 发表于 2017-10-23 22:47:51

觉得王爽老师课本上有一处错误,求指导

在王爽老师的第三版第十章第十节中

计算N的3次方的子程序是这样写的:
cube:
         mov ax,bx
         mul bx
         mul bx
         ret
问题在于 ,第一次 mul bx后结果的高16位是存在dx中的
                第二次mul bx,只是再将ax中的值乘以bx中的值,第一次运算存在dx中的高16位被忽略了

兰陵月 发表于 2017-10-24 11:39:12

本帖最后由 兰陵月 于 2017-10-24 11:40 编辑

你说的没错~~

如果是一个任意的16位数字,

必须要考虑相乘结果大于AX能表示的范围甚至DX:AX溢出的问题。

我的理解是这个子程序是用在接下来的那个程序里的,

而这个程序里最大的数字不过是8,所以不会有结果超出范围的情况。

这里王爽主要是讲个思路,

真正任意数字3次方的实现需要一段更长的代码。

不过这段代码应该也不是很复杂。

王爽老师虽然是好老师,

但是我们也可以怀疑一切,哈哈
页: [1]
查看完整版本: 觉得王爽老师课本上有一处错误,求指导