gpt4 book ai didi

c - 汇编中的无符号整数

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

全新的汇编需要一些有关无符号算术的帮助。从 C 程序转换意味着一切。

使用:

Linux

NASM

x86(32 位)

我想从用户那里读入一个数字。我希望这个号码没有签名。当我输入高于有符号整数限制的数字并使用信息寄存器时,我注意到我的寄存器存储的值为负数,这意味着发生了溢出。 (显然输入的数字低于最大无符号整数)我如何将此寄存器视为无符号,以便我可以根据结果进行比较和跳转?

最佳答案

在汇编中,没有明显的有符号和无符号类型。寄存器保存的值可以是有符号的,也可以是无符号的,具体取决于您如何看待它。

有与有符号解释一致的指令(jgjl等)和与无符号解释一致的指令(jajb 等)cmp 指令对两者都适用 - 它设置可供 jl 等指令使用的标志来跳转基于有符号解释,以及可被 jb 等指令使用的标志,以基于无符号解释进行跳转。无论您不使用哪个标志,您都可以忽略。

所以当你说“我的寄存器存储的是负值”时,这是没有意义的。只有当您选择这样解释时,它才会显得消极。

关于c - 汇编中的无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42795616/

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