☆零℡壹☆ 发表于 2011-9-30 01:06:47

关于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次方,应该是不准确的,我的分析正确吗?

yangjian578 发表于 2011-9-30 01:11:53

寒砧-LAMP 发表于 2011-9-30 08:45:57

:funk::curse::@:o:P:$:lol:Q:L;P

☆零℡壹☆ 发表于 2011-10-1 00:21:45

yangjian578 发表于 2011-9-30 01:11 static/image/common/back.gif
这个不叫不准确。。。而是不能这么算了。。。
256*256,最高位跑到dx去了。。你再去乘,只是用结果的低16位 ...

是的,所以用MUL算次方是不正确的。
页: [1]
查看完整版本: 关于10章.10节使用MUL做N的3次方的疑问