我有一个取自用户的字符串,保存到名为 num 的“变量”中。现在,我将第一个字符加载到此字符串中以进行进一步处理。看起来像是
mov rax, [num]
cmp rax, '5'
je character_equal_five
我后来遇到了一些问题所以我开始调试这一行,对于像“522314”这样的输入,我发现rax寄存器的值大概是2000,而它应该是5的ascii代码。做
xor rax, rax
mov rax, [num]
也没有帮助。所以我最终完成了这个
mov al, [num]
终于成功获得了可靠的结果。我的问题是:为什么会发生?为什么我不能使用更大的寄存器来执行此任务?