Assembly MCS-51上24位数字的乘法算法
我正在尝试用汇编语言为一个带有 它必须乘以24位数字 也许我问了一个愚蠢的问题,但我如何将24位的列相乘呢 下图说明了16位数字的乘法方法。24位数字的乘法方案看起来如何Assembly MCS-51上24位数字的乘法算法,assembly,microcontroller,multiplication,Assembly,Microcontroller,Multiplication,我正在尝试用汇编语言为一个带有 它必须乘以24位数字 也许我问了一个愚蠢的问题,但我如何将24位的列相乘呢 下图说明了16位数字的乘法方法。24位数字的乘法方案看起来如何 通过快速浏览文档,MCS-51具有8x8->16倍频。您可以使用两个24位数字A和B,它们相当于: A = a0 + (a1 * 256) + (a2 * 65536) B = b0 + (b1 * 256) + (b2 * 65536) 其中a0是A的最低字节,a1是A的中间字节,a2是最高字节,bs是B的相应内容 因此
通过快速浏览文档,MCS-51具有8x8->16倍频。您可以使用两个24位数字
A
和B
,它们相当于:
A = a0 + (a1 * 256) + (a2 * 65536)
B = b0 + (b1 * 256) + (b2 * 65536)
其中a0是A的最低字节,a1是A的中间字节,a2是最高字节,bs是B的相应内容
因此:
A * B = (a0 + (a1 * 256) + (a2 * 65536)) * (b0 + (b1 * 256) + (b2 * 65536))
= a0 * (b0 + (b1 * 256) + (b2 * 65536)) +
a1 * 256 * (b0 + (b1 * 256) + (b2 * 65536)) +
a2 * 65536 * (b0 + (b1 * 256) + (b2 * 65536))
= a0 * b0 + a0 * b1 * 256 + a0 * b2 * 65536 +
a1 * b0 * 256 + a1 * b1 * 65536 + a1 * b2 * 16777216 +
a2 * b0 * 65536 + a2 * b1 * 16777216 + a2 * b2 * 4294967296
= a0 * b0 +
256 * (a0 * b1 + a1 * b0) +
65536 * (a0 * b2 + a1 * b1 + a2 * b0) +
16777216 * (a1 * b2 + a2 * b0) +
4294967296 * (a2 * b2)
因此,这是所有九个8x8倍数,然后分组相加,然后根据需要移动每组,最后将所有内容相加
如果您只想要一个24位的结果,而不是48位的结果,那么您可以从
16777216*
中删除所有内容,因为很明显,这一部分不会产生低三个字节。或者类似地,停止在其他地方进行其他输出尺寸的工作。快速浏览文档,MCS-51具有8x8->16倍频。您可以使用两个24位数字A
和B
,它们相当于:
A = a0 + (a1 * 256) + (a2 * 65536)
B = b0 + (b1 * 256) + (b2 * 65536)
其中a0是A的最低字节,a1是A的中间字节,a2是最高字节,bs是B的相应内容
因此:
A * B = (a0 + (a1 * 256) + (a2 * 65536)) * (b0 + (b1 * 256) + (b2 * 65536))
= a0 * (b0 + (b1 * 256) + (b2 * 65536)) +
a1 * 256 * (b0 + (b1 * 256) + (b2 * 65536)) +
a2 * 65536 * (b0 + (b1 * 256) + (b2 * 65536))
= a0 * b0 + a0 * b1 * 256 + a0 * b2 * 65536 +
a1 * b0 * 256 + a1 * b1 * 65536 + a1 * b2 * 16777216 +
a2 * b0 * 65536 + a2 * b1 * 16777216 + a2 * b2 * 4294967296
= a0 * b0 +
256 * (a0 * b1 + a1 * b0) +
65536 * (a0 * b2 + a1 * b1 + a2 * b0) +
16777216 * (a1 * b2 + a2 * b0) +
4294967296 * (a2 * b2)
因此,这是所有九个8x8倍数,然后分组相加,然后根据需要移动每组,最后将所有内容相加
如果您只想要一个24位的结果,而不是48位的结果,那么您可以从
16777216*
中删除所有内容,因为很明显,这一部分不会产生低三个字节。或者类似地,停止在其他地方进行其他输出大小的工作。基本相同,但对于更多的部分积,您知道长乘法,对吗?基本相同,但对于更多的部分积,您知道长乘法,对吗?