如何将两个寄存器相乘并将它们存储在不同的寄存器中?

时间:2015-10-19 23:11:11

标签: assembly x86 multiplication

所以我正在尝试并且未能为汇编语言(Intel x86,使用NASM)制作GCD程序。在我试图将两个寄存器相乘时,我一直遇到编译器错误。我有用户值存储在寄存器ebx,ecx和edx中。我想将所有3倍增加 &安培;将ebx和ecx的产品存储在ebx中,然后将ebx和edx相乘,并存储在ebx中,并显示结果。我试图通过使用此代码来做到这一点         imul ebx, ebx, ecx         imul ebx, ebx, edx 这不是增加寄存器的有效方法吗?

1 个答案:

答案 0 :(得分:3)

imul的3操作数版本仅作为第三个操作数立即执行。幸运的是,您可以使用2操作数版本,因为您的一个操作数与目标相同。因此:

imul    ebx, ecx ; ebx *= ecx
imul    ebx, edx ; ebx *= edx

会做你想做的事。