gpt4 book ai didi

assembly - 如何在x86程序集中比较带符号的值和无符号的值

转载 作者:行者123 更新时间:2023-12-04 22:11:59 26 4
gpt4 key购买 nike

我很难找到一种在x86汇编代码中比较正数和负数的方法。

例如:当我比较-1和1时,我总是得到-1更大。我知道这是因为2的补码格式使-1在基础二进制文件中大于1。

但是,谁能提供x86汇编的代码片段,以将正数与负数进行比较,并使其在数学上正确无误? (例如1> -1)

谢谢!

最佳答案

您可能正在使用以下未签名的变体之一:

cmp  eax, ebx
jb lesser

存在用于相互检查签名数字的等效项,例如:
cmp  eax, ebx
jl lesser

This link很好地涵盖了跳跃变化,包括其签名和所检查的标志,此处为了自我包含而部分复制了其中:
Instruction  Jump if ...           Signed?   Flags
----------- ----------- -------- -----
JO overflow OF=1
JNO not overflow OF=0
JS sign SF=1
JNS not sign SF=0
JE/JZ equal
zero ZF=1
JNE/JNZ not-equal
not-zero ZF=0
JB/JNAE/JC below
not-above-or-equal
carry unsigned CF=1
JNB/JAE/JNC not-below
above-or-equal
no-carry unsigned CF=0
JBE/JNA below-or-equal
not-above unsigned CF=1 or ZF=1
JA/JNBE above
not-below-or-equal unsigned CF=0 and ZF=0
JL/JNGE less
not-greater-or-equal signed SF<>OF
JGE/JNL greater-or-equal
not-less signed SF=OF
JLE/JNG less-or-equal
not-greater signed ZF=1 or SF<>OF
JG/JNLE greater
not-less-or-equal signed ZF=0 and SF=OF
JP/JPE parity
parity-even PF=1
JNP/JPO not-parity
parity-odd PF=0
JCXZ/JECXZ CX register is zero
ECX register is zero

关于assembly - 如何在x86程序集中比较带符号的值和无符号的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27284895/

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