我可以在装配体中比较(CMP)立即值吗?

0 x86 assembly nasm

我尝试汇编以下指令:

cmp 5, 6
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

invalid combination of opcode and operands
Run Code Online (Sandbox Code Playgroud)

因此,我将前面的指令编辑为:

cmp DWORD 5, DWORD 6
Run Code Online (Sandbox Code Playgroud)

但是我仍然遇到相同的错误,所以在汇编中比较立即值是非法的吗?

Son*_*Sun 5

在根据汇编器的x86汇编中(例如tasm,masm或nasm),您不能将立即数或变量彼此进行比较。您必须将其中一个或两个都放入寄存器中。像这样:

mov ax, 5
cmp ax, 6
Run Code Online (Sandbox Code Playgroud)

要么

mov ax, 5
mov bx, 6
cmp ax, bx
Run Code Online (Sandbox Code Playgroud)

妳去