学习 NASM 汇编,我正在尝试制作一个读取两个一位数输入的程序。
我在以下声明了两个变量.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
,5
会num1
很好ENTER
地存储在num2
. 显然这不是我想要的(我希望用户输入一个数字,按 ENTER,输入另一个数字,然后按 ENTER)。
我不完全确定如何以最简单的方式解决这个问题。
最愚蠢的想法是在 and 之间放置一个“虚拟”读取指令num1
,num2
它将捕获换行符(并且什么都不做)。这显然不好。