我可以在 Assembly 中比较 (CMP) 即时值吗?
Can I compare (CMP) immediate values in Assembly?
我尝试assemble以下指令:
cmp 5, 6
但是我得到了以下错误:
invalid combination of opcode and operands
所以我把之前的指令编辑成这样:
cmp DWORD 5, DWORD 6
但我仍然遇到同样的错误,所以在汇编中比较立即值是非法的吗?
不,这是不可能的。 x86 指令集没有针对立即值的此类操作的操作码,汇编编译器不在这里解释它们。
根据您的汇编程序(例如 tasm、masm 或 nasm),在 x86 汇编中,您不能相互比较立即数或变量。您必须将其中一个或两个都放在寄存器中。像这样:
mov ax, 5
cmp ax, 6
或
mov ax, 5
mov bx, 6
cmp ax, bx
给你。
您可以将单个立即值与寄存器或内存中的值进行比较。
我尝试assemble以下指令:
cmp 5, 6
但是我得到了以下错误:
invalid combination of opcode and operands
所以我把之前的指令编辑成这样:
cmp DWORD 5, DWORD 6
但我仍然遇到同样的错误,所以在汇编中比较立即值是非法的吗?
不,这是不可能的。 x86 指令集没有针对立即值的此类操作的操作码,汇编编译器不在这里解释它们。
根据您的汇编程序(例如 tasm、masm 或 nasm),在 x86 汇编中,您不能相互比较立即数或变量。您必须将其中一个或两个都放在寄存器中。像这样:
mov ax, 5
cmp ax, 6
或
mov ax, 5
mov bx, 6
cmp ax, bx
给你。
您可以将单个立即值与寄存器或内存中的值进行比较。