0

我刚开始学习汇编编程。我在 Linux 上使用 NASM。我写了这段代码,基本上是为了计算某物的某物的力量,我知道它可能不太好,但我现在真的不在乎,我只想知道为什么我不断收到这个错误,因为我已尝试修改和切换操作数和操作以及问题所在部分中的所有内容,但如果有的话只会给我更多错误消息。正如我所说,我对这一切真的很陌生,我可能只是愚蠢。问题必须在这些行之一。如果您需要它,我当然会发布更多代码,我只是不希望您必须阅读 70-80 行奇怪的、不必要的复杂代码。我只是想知道发生这种情况的可能原因是什么,因为我现在真的非常非常绝望,而且我已经到了思考它并且没有任何新想法只会让一切变得更糟的地步。我将把这部分留在这里。但我会给你任何你需要知道的帮助。

    mov dword [power], 2
    mov ecx, 0

while:
    mov eax, [neededforloop]
    cmp eax, ecx
    je endwhile

    mov eax, [power]
    mul eax, 2
    mov [power], eax

    mov eax, ecx
    add eax, 1
    mov ecx, eax

    jmp while
4

1 回答 1

8

肯定 nasm 已经给了你行号......应该指出你mul eax, 2。反过来,您应该在参考手册中查看该指令,并注意到没有mul接受立即数作为操作数的指令。虽然有这样一个imul

TL;DR:更改mul eax, 2imul eax, 2(实际上是 的简写imul eax, eax, 2)。

PS:您应该使用移位乘以 2。

于 2015-05-19T21:06:21.650 回答