注册 登录
编程论坛 汇编论坛

[求助]多字节乘法的实现

kitty 发布于 2006-05-21 20:43, 1535 次点击
现在刚开始学汇编,程序不太会编。
向大家求助一道题:
如何实现多字节的乘法问题?
7 回复
#2
公子吕2006-05-22 11:31

双字乘双字结果保存到寄存器的8个字节中(编号1,2,3,4,5,6,7,8)再大的数依此类推。。。

8888 7777×6666 5555
=(88880000+7777)×(66660000+5555)
=(8888×6666×100000000)+(8888×5555×10000)+(6666×7777×10000)+(7777×5555)

8888×6666保存到最前面的一个双字里面,即1,2,3,4字节,8888×5555+6666×7777加到3,4,5,6字节,7777×5555再加到5,6,7,8字节。 注意别忘了加法要进位。

#3
kitty2006-05-23 08:52
可是我还不会实现多位的乘法,比如;
8888*6666怎么实现?
希望楼上的能再给详细一些的指点指点
#4
kitty2006-05-23 08:52
谢谢了!
#5
公子吕2006-05-23 10:11

8888*6666是两个字(word)相乘,
mov ax,8888
mov bx,6666
imul bx ;视为带符号数,结果在dx,ax中。

数字大于字(word),在16位汇编下面就按我前面写的那样做。
1 2 3 4 5 6 7 8
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111
------------------------------------------
(8888×6666)
++------------------------------------------
(8888×5555+6666×7777)
++-------------------------------------------
(7777×5555)

#6
abd665432006-05-27 21:47
楼主没书吗?好像汇编资料书里应该都有说这个吧。
呵呵,不过看书也有点难度,最好能有个人教下。快点,又易懂。
#7
macky2006-05-28 17:01

楼上的能提供电子版的书吗?

#8
lxgaaa2006-05-28 18:55
   不好通吃啊
1