因此,我尝试并未能为汇编语言(Intel x86,使用NASM)制作GCD程序。当我试图将两个寄存器相乘时,我不断收到编译器错误。我将用户值存储在寄存器ebx,ecx和edx中。我想乘以所有3 &在ebx中存储ebx和ecx的乘积,然后乘以ebx和edx,并存储在ebx中,并显示结果。我试图做到这一点通过使用此代码 imul ebx, ebx, ecx
imul ebx, ebx, edx
这是不是一个有效的方法来乘法寄存器?如何将两个寄存器相乘并将它们存储在不同的寄存器中?
回答
imul
的3个操作数版本仅立即作为第三个操作数。幸运的是,您可以使用2操作数版本,因为其中一个操作数与目标相同。因此:
imul ebx, ecx ; ebx *= ecx
imul ebx, edx ; ebx *= edx
会做你想做的。
杰斯特非常感谢你!它最终编译!我知道它是一个完全简单的问题,但我似乎比其他任何东西都更加困难。 –
@JamieJackson - 下载[Intel参考手册](http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html)或许是个好主意。 。像这样的问题比你在其他地方找到的更详细。 – owacoder
我会给你一个阅读...我是一本手册/说明书horder,谢谢你的提示 –
- 1. 将两个x86 32位寄存器存储到128位xmm寄存器中
- 2. xmm寄存器的乘法
- 3. 如何将两个寄存器的多个结果存储到内存
- 4. MIPS:将寄存器地址复制到另一个寄存器
- 5. XMM寄存器存储
- 6. 32位寄存器将64位分成两个32位寄存器
- 7. 将值存储在ECX寄存器中并使用较低的寄存器CL来移位该值?
- 8. XOR寄存器,寄存器(汇编)
- 9. 如何将AVX512寄存器zmm26中的QuadWord写入rax寄存器?
- 10. Verilog:将寄存器分配给寄存器
- 11. 将值存储在MIPS的HI和LO寄存器中
- 12. 将变量存储在CPU寄存器中
- 13. 在CPU寄存器中分配寄存器变量的标准?
- 14. 寄存器JS
- 15. VIM:将外部命令的输出存储到寄存器中
- 16. 在C++中实现寄存器/取消寄存器模式
- 17. 从多个寄存器中收集特定元素并存储到一个寄存器
- 18. 乘8位寄存器连接到相同的输出(VHDL)
- 19. 将地址弹入一个寄存器
- 20. 在MIPS中将寄存器值乘以常数?
- 21. 如何将行添加到vim寄存器而不覆盖它
- 22. MIPS中的浮点寄存器是哪些数字寄存器?
- 23. x86程序集MOV指令 - 寄存器到寄存器和存储器到存储器
- 24. 从DX:AX寄存器移动到单个32位寄存器
- 25. 如何使用gdb获取存储在寄存器中的值? “p/x $ ebx”因“没有寄存器”而失败。
- 26. 数组如何存储在寄存器文件中?
- 27. ERLANG - wxGrid寄存器
- 28. 寄存器读取
- 29. 寄存器值8086
- 30. 通用寄存器
如果看到我的整个程序会帮助别人帮助我,我很乐意发布它!因为我认为这很可能是一个简单的问题,只会让我笨拙的丑陋代码变得复杂起来。 –
糟糕,那些无效。 – Jester
你的头衔说“两个登记册”,你的内容是“三个登记册”什么是真的?我很早以前编写了汇编程序,但是IIRC CPU根本无法一次运行三个寄存器。物理。也许这就是为什么你会得到错误,至少应该增加这个问题。 'JMP返回''并再试一次'。 :) –