1

Linux x86 での NASM の使用

mov ecx,eax
mov edx,ebx
mov eax,3
mov ebx,0
int 80h
ret

EAX には最初にmov'd db 定数があり、EBX にはバッファの長さがあります

これは、コンソールから読み取るために使用しているコードです。1つの問題を除いて正常に動作しています... 2文字を要求しています.2文字を超えてEnterキーを押すと、次回入力を要求すると、これらの「こぼれた」/余分な文字がすぐにその要求に供給されます、ユーザーの操作なし。再度入力を求められなかった場合、それらの余分な文字はシェルによってすぐにコマンドとして解釈されます。

例:

この読み取りルーチンを 2 回続けて呼び出すと、次の結果が得られます。

2345

2 番目の入力要求は、ユーザーをブロックしたりプロンプトを表示したりすることはまったくありません。可能な文字だけを受け取ります。どちらの場合も、ゼロで埋められた 3 バイトのバッファーで、正確に 2 文字を要求しました。

読み取りルーチンへの 1 回の呼び出し:

2345
$> 45: command not found

これを修正する方法についてのアイデアはありますか? 別のシステムコールを使用する必要がありますか?

4

1 に答える 1