比较汇编中的两个变量

时间:2016-04-09 16:24:44

标签: assembly

如果2变量相等,比较的汇编语法是什么?

我已经尝试this

但它没有用。

1 个答案:

答案 0 :(得分:0)

x86汇编中,相应的指令为CMPSD。在Intel Instruction manual中,它被描述为

  

OpCode字节:A7 ---指令:CMPSD ---编码:NP --- 64位:有效--- 32位:有效

     
      
  • 对于传统模式,请在地址处比较dword                      DS:(E)在地址ES处带有双字的SI:(E)DI;
  •   
  • 对于                     64位模式比较地址(R | E)SI处的双字                    在地址(R | E)DI处使用双字。状态标志                   相应地设定。
  •   

CMPSD比较两个内存操作数,并相应地设置EFLAGS中的状态标志以消耗Jcc/CMOVcc/...

因此,为了比较两个DWORD / 4字节变量,您可以像这样设置ESI和EDI

lea esi, var1     ; ESI = address of var1 
lea edi, var2     ; EDI = address of var2
cmpsd             ; compare them
Jcc...            ; use (E)FLAGS

对于其他变量大小,如1,2,4,8字节,分别使用CMPS(B,W,D,Q)。