因此,我嘗試並未能爲彙編語言(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. 如何將數據存儲在存儲器或寄存器中
- 3. Verilog:將值保存在寄存器中(分配給相同的寄存器)
- 4. 如何將XMM 128位寄存器分成兩個64位整數寄存器?
- 5. 如何將兩個寄存器的多個結果存儲到內存
- 6. xmm寄存器的乘法
- 7. MIPS:將寄存器地址複製到另一個寄存器
- 8. XMM寄存器存儲
- 9. 如何將堆棧指針寄存器中的值存儲到存儲器(8085)?
- 10. GDB寄存器與處理器寄存器不同嗎?
- 11. 32位寄存器將64位分成兩個32位寄存器
- 12. 爲什麼編譯器將變量存儲在寄存器中?
- 13. 將值存儲在ECX寄存器中並使用較低的寄存器CL來移位該值?
- 14. XOR寄存器,寄存器(彙編)
- 15. 解釋GDB寄存器(SSE寄存器)
- 16. 如何將AVX512寄存器zmm26中的QuadWord寫入rax寄存器?
- 17. Verilog:將寄存器分配給寄存器
- 18. 的寄存器
- 19. 將值存儲在MIPS的HI和LO寄存器中
- 20. 如何將彙編x86中寄存器的2個數據相乘
- 21. 乘法,乘法寄存器verilog
- 22. 存儲字節在寄存器變量
- 23. LC3,將寄存器的值存儲到內存位置
- 24. 將變量存儲在CPU寄存器中
- 25. 在CPU寄存器中分配寄存器變量的標準?
- 26. 寄存器JS
- 27. 與寄存器
- 28. 寄存器
- 29. 我可以將存儲在_m128 SSE寄存器中的浮點數直接移動到正常寄存器嗎?
- 30. VIM:將外部命令的輸出存儲到寄存器中
如果看到我的整個程序會幫助別人幫助我,我很樂意發佈它!因爲我認爲這很可能是一個簡單的問題,只會讓我笨拙的醜陋代碼變得複雜起來。 –
糟糕,那些無效。 – Jester
你的頭銜說「兩個登記冊」,你的內容是「三個登記冊」什麼是真的?我很早以前編寫了彙編程序,但是IIRC CPU根本無法一次運行三個寄存器。物理。也許這就是爲什麼你會得到錯誤,至少應該增加這個問題。 'JMP返回''並再試一次'。 :) –