【问题标题】:Negative numbers in x86 assemblyx86 程序集中的负数
【发布时间】:2021-11-19 18:32:26
【问题描述】:

因此,在 x86 汇编中,正数的 if 语句有效,但我不确定这是否有效.... 我正在使用尔湾图书馆 所以这里是sn-p

        .IF xPos <= -117
        call UpdatePlayer
        dec xPos
        call DrawPlayer
        jmp gameLoop
        .ELSE
        jmp gameLoop
        .ENDIF

【问题讨论】:

    标签: assembly x86 numbers masm irvine32


    【解决方案1】:

    如果您的 xPos 变量是双字,请使用下一个代码:

    .IF SDWORD PTR xPos <= -117
      call UpdatePlayer
      dec xPos
      call DrawPlayer
    .ENDIF
    jmp gameLoop
    

    您不需要.ELSE 子句。只需将jmp gameLoop 放在结构之外即可。

    【讨论】:

    • 或者更好的是,根本不要使用这个 MASM “高级”东西,而只是 cmp dword ptr [xPos], -117 / jnle gameLoop / 落入 call/dec/call / jmp gameLoop。让 MASM 将 jcc 发送到 jmp 毫无意义,如果 call/dec/call 不应该运行,只需直接跳转到 gameLoop。但是你不能用那些.IF 宏或它们被称为的任何东西来获得完全有效的asm。另一个优点是您不必使用像 sdword 这样的深奥的 MASM 特定的东西,只需使用普通的 cmp 和其语义直接来自 &lt;= 的符号比较 JCC 条件。
    • 谢谢,我真的很感激 :),我希望你有一个美好的一天,我在装配方面相对较新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    相关资源
    最近更新 更多