gpt4 book ai didi

assembly - MUL指令不支持立即值

转载 作者:行者123 更新时间:2023-12-04 04:58:09 24 4
gpt4 key购买 nike

我已经阅读了一些教程和示例,但是无法理解MUL指令的工作原理。我使用了ADDSUB都没有问题。因此,显然该指令将其操作数乘以寄存器中的值。

第一个操作数乘以哪个寄存器(eax,ebp,esp等)?结果存储在哪个寄存器中,因此我可以将其移到堆栈中?抱歉,我正在学习x86汇编。

当我尝试编译此行时...

mul     9

我知道了 Error: suffix or operands invalid for 'mul'。谁能帮我吗?
    global  main
main:
push ebp
movl ebp, esp
sub esp, byte +8
mov eax, 7
mul 9
mov [esp], eax
call _putchar
xor eax, eax
leave
ret

最佳答案

MUL不能使用立即数作为参数。您必须将“9”加载到寄存器中,例如,

 movl    $7, %eax
movl $9, %ecx
mull %ecx

它将eax乘以ecx并将64位乘积存储在edx:eax中。

英特尔网站上有关于x86汇编指令的很好的综合引用,请参见此处。

http://www.intel.com/Assets/PDF/manual/253666.pdf

http://www.intel.com/Assets/PDF/manual/253667.pdf

但这可能是您现在需要的更多信息。

关于assembly - MUL指令不支持立即值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4529260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com