gpt4 book ai didi

assembly - 与 0 (x86) 比较后的 JNB

转载 作者:行者123 更新时间:2023-12-02 07:37:12 25 4
gpt4 key购买 nike

我有这个 x86 汇编代码:

mov     [ebp+var_8], 0

mov eax, Str_len

cmp [ebp+var_8], eax

jnb short loc_4018C4

如果 Str_len 始终不为 0,那么这个 JNB 执行什么操作?我的推理是,如果 Str_len 变量永远不会低于 0,则永远不会执行跳跃,对吗?

顺便说一句,在 x86 的二进制表示中,寄存器的值怎么可能小于零?

最佳答案

jnb 指令在进位标志为零时跳转。 cmp 指令根据dst 操作数减去src 操作数的结果更新标志。 dst 操作数是 Intel 表示法中的第一个操作数,因此,标志将根据 [ebp+var_8]-eax 的结果进行更新。由于 [ebp+var_8] 等于零,当 eax 为零时进位标志将被清除,否则设置。总而言之,当 eax 为零时,分支就会发生。

关于assembly - 与 0 (x86) 比较后的 JNB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15052894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com