cmp DWORD [ebp - 25], [ebp + 12] 导致错误

cmp DWORD [ebp - 25], [ebp + 12] is causing an error

以下指令导致 invalid combination of opcode and operands 错误:

cmp DWORD [ebp - 25], [ebp + 12]

我还以为DWORD是用来防止这样的错误呢!

我也试过以下但还是一样的错误:

cmp DWORD [ebp - 25], DWORD [ebp + 12]

通常,在 x86 上,不支持内存到内存操作。

您需要先将其中一个参数加载到寄存器中。然后您可以将该寄存器内容与另一个内存位置进行比较。例如:

mov eax, DWORD [ebp - 25] 
cmp eax, [ebp + 12]