我可以在Assembly中比较(CMP)立即值吗?

时间:2015-01-03 10:29:54

标签: assembly x86 nasm

我试着收集以下说明:

cmp 5, 6

但是我收到了以下错误:

invalid combination of opcode and operands

所以我把上一条指令编辑成了这个:

cmp DWORD 5, DWORD 6

但是我仍然遇到同样的错误,那么比较Assembly中的非法立即值是什么?

3 个答案:

答案 0 :(得分:4)

在根据汇编程序的x86程序集中(例如 tasm,masm或nasm ),您无法相互比较immediates或变量。您必须将其中一个或两个放入寄存器中。像这样:

mov ax, 5
cmp ax, 6

mov ax, 5
mov bx, 6
cmp ax, bx

你去。

答案 1 :(得分:0)

不,这是不可能的。 x86指令集没有对立即值进行此类操作的操作码,汇编编译器也不在此解释它们。

答案 2 :(得分:0)

您可以将单个立即值与寄存器或内存中的值进行比较。