全新的装配需要一些无符号算术的帮助。从C程序转换就意味着什么。
使用:
Linux的
NASM
x86(32位)
我想从用户那里读一个数字。我希望这个号码是无符号的。当我输入一个高于有符号整数限制的数字并使用信息寄存器时,我注意到我的寄存器存储为负数,这意味着发生溢出。 (显然输入的数字低于max unsigned int)如何将此寄存器视为无符号,以便根据结果进行比较和跳转?
答案 0 :(得分:4)
在汇编中,没有明确的有符号和无符号类型。寄存器包含一个可以是有符号或无符号的值,具体取决于您的查看方式。
与签名解释(jg
,jl
等)一致的说明以及与无符号解释一致的说明(ja
,jb
等等。cmp
指令适用于两者 - 它根据签名的解释设置可以由jl
等指令使用的标志,以及{{1}等指令可以使用的标志基于无符号解释跳转。无论你使用哪个标志,你都会忽略。
所以,当你说“我的寄存器存储为负面”时,那是胡说八道。如果您选择以这种方式解释它,它只会显示为负数。