如何将两个寄存器相乘并将它们存储在不同的寄存器中?
How can i multiply two registers and store them in a different register?
所以我正在尝试为汇编语言(Intel x86,使用 NASM)制作 GCD 程序,但失败了。我不断收到编译器错误的地方是在尝试将两个寄存器相乘时。我将用户值存储在寄存器 ebx、ecx 和 edx 中。我想乘以所有 3
& 将ebx与ecx的乘积存入ebx,再将ebx与edx相乘,存入ebx,并显示结果。我试图通过使用这段代码来做到这一点
imul ebx, ebx, ecx
imul ebx, ebx, edx
这不是乘法寄存器的有效方法吗?
imul
的 3 操作数版本仅将立即数作为第三个操作数。幸运的是,您可以使用 2 操作数版本,因为您的操作数之一与目标相同。因此:
imul ebx, ecx ; ebx *= ecx
imul ebx, edx ; ebx *= edx
会为所欲为。
所以我正在尝试为汇编语言(Intel x86,使用 NASM)制作 GCD 程序,但失败了。我不断收到编译器错误的地方是在尝试将两个寄存器相乘时。我将用户值存储在寄存器 ebx、ecx 和 edx 中。我想乘以所有 3
& 将ebx与ecx的乘积存入ebx,再将ebx与edx相乘,存入ebx,并显示结果。我试图通过使用这段代码来做到这一点
imul ebx, ebx, ecx
imul ebx, ebx, edx
这不是乘法寄存器的有效方法吗?
imul
的 3 操作数版本仅将立即数作为第三个操作数。幸运的是,您可以使用 2 操作数版本,因为您的操作数之一与目标相同。因此:
imul ebx, ecx ; ebx *= ecx
imul ebx, edx ; ebx *= edx
会为所欲为。