NASM アセンブリを学習して、1 桁の数字入力を 2 つ読み取るプログラムを作成しようとしています。
で宣言された 2 つの変数があります.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
1 桁の数値入力だけに関心があるので、 に設定EDX
し1
ます。このようにして、ユーザーが何を入力しても、最初の文字だけが変数に格納されます (そうですか?)。
問題は、その最初の文字の後に続くすべての文字が将来の読み取りに使用されることです。入力5
してから を押すENTER
と、5
に保存されnum1
ますが、 を押して生成した改行ENTER
は次の読み取り命令に続き、 に保存されnum2
ます。明らかに、それは私が意図していたものではありません (ユーザーに数字を入力して Enter キーを押し、別の数字を入力してから Enter キーを押してもらいたいのです)。
可能な限り簡単な方法でこれを回避する方法が完全にはわかりません。
最も愚かなアイデアは、「ダミー」の読み取り命令をnum1
との間に配置num2
することでした。これは明らかに良くありません。