【问题标题】:Can someone explain why this conditional jump is not taken? [duplicate]有人可以解释为什么不采取这种条件跳转吗? [复制]
【发布时间】:2019-08-03 18:37:18
【问题描述】:

请查看我的 x32dbg 的截图:

00408951 | 3D E8030000              | cmp eax,3E8                             |
00408956 | 7F 3A                    | jg debugme.408992                       |

既然eax (8349294D) 大于0x3E8,为什么不采用jg? 不,我没有更改标志。

【问题讨论】:

    标签: debugging assembly x86


    【解决方案1】:

    jg 用于有符号比较。作为带符号的 32 位数字,EAX 为负数。

    您应该使用ja(用于上述),这是无符号比较。

    【讨论】:

    • 谢谢,就是这样!
    【解决方案2】:

    JG 如果有符号大于,则跳转,换句话说,ZF=0 和 SF=OF。

    8349294D 为负数,0x3E8 为正数,因此 ZF=0 但 SF=1 且 OF=0 所以 SF!=OF,如您的标志面板中所示(下划线)。 CF的值与JG无关。

    【讨论】:

      猜你喜欢
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2016-06-01
      • 2019-06-02
      • 2019-10-28
      • 1970-01-01
      • 2016-09-18
      相关资源
      最近更新 更多