x86-32位整数乘法

由于在x86的乘法指令中,只支持16位或者8位整数的乘法,因此如果涉及到大数的乘法,那需要我们进行一个简单的乘法器设计。

我的思路如下:记读入的两个数分别为AB 和 CD. 这样表示的原因主要是为了方便之后的乘法操作,A、B、C、D即都是16位的整数,然后我们在内存区存放这四个值。此时的乘法及变成:

[math](A \cdot 16^3+B) \times (C\cdot16^3 + D)[/math]

$$(A \cdot 16^3+B) \times (C\cdot16^3 + D)$$

为了有一个更加直观的认识,可以见下图:
《x86-32位整数乘法》

因此我们只需要做3次乘法,然后从后往前计算BD, AD+BC, AC来将结果保存到ans4, ans3, ans2, ans1就好了,然后在计算ans2, ans1的时候,需要用到之前加法的进位(即用到adc命令)。

最终的效果图如下:
《x86-32位整数乘法》

另附代码:

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注