gpt4 book ai didi

assembly - 如何检查有符号整数是 neg 还是 pos?

转载 作者:行者123 更新时间:2023-12-03 10:00:25 26 4
gpt4 key购买 nike

我是 x86 汇编语言的新手,我在寄存器中保存了一个有符号整数 eax ,我想检查数字是负数还是正数。为此,我使用了 bt检查第一位的指令。

这是我所做的:

bt eax,0
jnc isNegative
bt携带第一位携带标志,我使用了 jnc检查进位标志是 0 还是 1。
如果它是 1,它应该是一个负数,并且做负指令......
然而,输出是不可预测的,有时我有一个正数,它把它识别为一个负数。我做错了什么吗?

编辑:我刚刚意识到它可能与字节序有关。它实际上是检查最后一位而不是第一位。让我试试用 bt , 7

最佳答案

如果设置了 MSB,则该值为负。它可以检查

test eax, 0x80000000
jne is_signed

或者,更简单:
test eax, eax
js signed

或对于字节大小写:
test al, al
js is_signed
; or
test eax, 80h
jne is_signed

关于assembly - 如何检查有符号整数是 neg 还是 pos?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4017424/

26 4 0
文章推荐: email - 如何使用 GnuPG 加密明文?
文章推荐: django - REST API 或 "direct"远程 Celery/Django 工作人员的数据库访问权限?
文章推荐: javascript - 将 声明转换为 javascript ActiveXObject