程序集中的无符号整数

时间:2017-03-14 20:09:22

标签: c assembly x86 unsigned-integer

全新的装配需要一些无符号算术的帮助。从C程序转换就意味着什么。

使用:

Linux的

NASM

x86(32位)

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

1 个答案:

答案 0 :(得分:4)

在汇编中,没有明确的有符号和无符号类型。寄存器包含一个可以是有符号或无符号的值,具体取决于您的查看方式。

与签名解释(jgjl等)一致的说明以及与无符号解释一致的说明(jajb等等。cmp指令适用于两者 - 它根据签名的解释设置可以由jl等指令使用的标志,以及{{1}等指令可以使用的标志基于无符号解释跳转。无论你使用哪个标志,你都会忽略。

所以,当你说“我的寄存器存储为负面”时,那是胡说八道。如果您选择以这种方式解释它,它只会显示为负数。