【发布时间】:2018-05-16 12:08:18
【问题描述】:
所以我试图在汇编语言程序中使用移位和加法算法实现乘法器。我在这个 ISA 中没有可用的左移指令,但我知道向自身添加一个数字会将数字左移一位。
假设我想乘以 5 * 15,即 101 乘以 1111。我知道我需要将 5 乘以 15 中的每个部分位,但我对如何访问/使用这些部分位感到困惑。从右到左,我将1 乘以101 得到101,添加一个占位符左移,然后继续每个连续的位,得到1010、10100 和101000。然后我将这些数字相加得到1001011,即75,即正确答案。
那么,我怎样才能在汇编中做到这一点?我很困惑。谢谢!
【问题讨论】:
-
你在为什么架构编程?
-
[no] left shift […] in this ISA将二进制编码的数字添加到自身相当于将其向更高有效位的方向移动。如果您“带进位相加(从将被乘数添加到部分乘积)”,您可以获得扩展尺寸的产品而无需额外费用,但具有“早出”的可行性。
标签: assembly binary multiplication