关于10章.10节使用MUL做N的3次方的疑问
本帖最后由 ☆零℡壹☆ 于 2011-9-30 01:10 编辑■子程序:
□说明:计算N的3次方
□参数:(bx)=N
□结果:(dx:ax)=N∧3
cube:mov ax,bx
mul bx
mul bx
ret
这个程序如果是计算255以下的3次方还可以,如果超过255,情况就不一样了。
假设 N=255,那么
cube:mov ax,bx;(ax)=(bx)=255
mul bx ;(ax)x(bx)=255x255=65025 (ax)=65025 (dx)=0
mul bx ;(ax)x(bx)=65025x255=16581375 (ax)=02FFH (dx)=FDH
ret
假设 N=256,那么
cube:mov ax,bx ;(ax)=(bx)=256
mul bx ;(ax)x(bx)=256x256=65536 (ax)=0 (dx)=1
mul bx ;(ax)x(bx)=0x256=0 (ax)=0 (dx)=0
ret
所以,利用MUL使用这种方法计算N的M次方,应该是不准确的,我的分析正确吗?
:funk::curse::@:o:P:$:lol:Q:L;P yangjian578 发表于 2011-9-30 01:11 static/image/common/back.gif
这个不叫不准确。。。而是不能这么算了。。。
256*256,最高位跑到dx去了。。你再去乘,只是用结果的低16位 ...
是的,所以用MUL算次方是不正确的。
页:
[1]