Assembly 二进制乘法:你怎么做;分解;乘数?

Assembly 二进制乘法:你怎么做;分解;乘数?,assembly,binary,multiplication,Assembly,Binary,Multiplication,因此,我试图在汇编语言程序中使用shift和add算法实现一个乘法器。在这个ISA中我没有一个左移位指令,但我知道,向其自身添加一个数字将使该数字左移位一 假设我想乘以5*15,即101乘以1111。我知道我需要用15中的每个部分位乘以5,但我对如何访问/使用这些部分位感到困惑。从右到左,我将1乘以101得到101,添加一个占位符向左移位,然后继续每一个连续的位,得到1010,10100,和101000。然后我把这些数字加起来得到1001011,也就是75,正确答案 那么,我怎样才能在组装中做到

因此,我试图在汇编语言程序中使用shift和add算法实现一个乘法器。在这个ISA中我没有一个左移位指令,但我知道,向其自身添加一个数字将使该数字左移位一

假设我想乘以5*15,即
101
乘以
1111
。我知道我需要用15中的每个部分位乘以5,但我对如何访问/使用这些部分位感到困惑。从右到左,我将
1
乘以
101
得到101,添加一个占位符向左移位,然后继续每一个连续的位,得到
1010
10100
,和
101000
。然后我把这些数字加起来得到
1001011
,也就是75,正确答案

那么,我怎样才能在组装中做到这一点呢?我很困惑。谢谢

可能是一个副本,其中有一些更详细的信息

在x86上,给定EDX中的
15
,您可以这样做

lea eax, [rdx + rdx*4]

执行
EAX=(edx您为什么体系结构编程?
[no]左移[…]在这个ISA中
向自身添加一个二进制编码的数字相当于将其向更重要的位的方向移动。如果您“使用进位进行添加(从添加被乘数到部分乘积)”,您可以获得扩展尺寸的产品,无需额外成本,但具有“早期推出”的可行性。