【问题标题】:Can I compare (CMP) immediate values in Assembly?我可以在 Assembly 中比较 (CMP) 立即值吗?
【发布时间】:2015-01-03 10:29:53
【问题描述】:

我尝试汇编以下指令:

cmp 5, 6

但我收到以下错误:

invalid combination of opcode and operands

所以我把之前的指令编辑成这样:

cmp DWORD 5, DWORD 6

但是我还是遇到了同样的错误,那么在汇编中比较立即数是非法的吗?

【问题讨论】:

  • 无论如何都没有理由这样做。你已经知道答案了。

标签: assembly x86 nasm


【解决方案1】:

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

mov ax, 5
cmp ax, 6

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

你去。

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2015-05-05
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多