学习NASM汇编语言,我正在尝试编写一个程序,读取两个一位数的输入。
我在.bss中声明了两个变量:
我在.bss中声明了两个变量:
num1 resb 1
num2 resb 1
接下来,我会要求用户按照以下方式输入数字:
; Get number 1
mov EAX,3
mov EBX,1
mov ECX,num1
mov EDX,1
int 0x80
; Get number 2
mov EAX,3
mov EBX,1
mov ECX,num2
mov EDX,1
int 0x80
由于我只对一位数字感兴趣,所以我将EDX设置为1。这样,无论用户输入什么,只有第一个字符会存储在我的变量中(对吗?)。
问题是,在第一个字符之后的所有内容都将用于未来的读取。如果您输入 5 然后按 ENTER,ASCII码53将被成功存储在 num1 中,但您通过按 ENTER 生成的换行符将传递到下一个读取指令中,该指令将存储在 num2 中。显然这不是我想要的。我希望用户输入一个数字,按ENTER,然后输入另一个数字,再按 ENTER。
我不确定如何以最简单的方式解决这个问题。
最愚蠢的想法是在 num1 和 num2 之间放置一个“虚拟”的读取指令,它将捕获换行符(并不做任何处理)。这显然不好。
ebx
设置为1
是否使用标准输出?您可能需要将其设置为0
以使用标准输入。 - lurker