Привет всем читающим. Проблема заключатся в том, что при ограничении ввода (посимвольном чтении) "лишняя" информация, не входящая в диапазон (прим:читаем 1 символ из введённых 4) воспринимается как новая команда...не знаю, как точнее сказать. Ниже опишу то, что имеется по результатам работы программы и исходник.
Исходник:
global _start
segment .data
Digit db 0
buf dw 0
; служебные
Intro db 'Input smthg:', 0xa, ' '
IntroLength equ $ - Intro
segment .text
_start:
mov eax, 4
mov ebx, 1
mov ecx, Intro
mov edx, IntroLength
int 80h
mov ecx, 0
mov esi, buf
Reading:
push ecx
mov eax, 3
mov ebx, 0
mov ecx, Digit
mov edx, 1
int 80h
exit:
mov eax, 1
int 80h
Консоль:
nik@Moon:~/1/progr/Assembler$ nasm -f elf lab44.asm
nik@Moon:~/1/progr/Assembler$ ./lab44.exe
Input smthg:
123
nik@Moon:~/1/progr/Assembler$ 23
23: команда не найдена
nik@Moon:~/1/progr/Assembler$По моим соображениям, "лишний" кусок остаётся в буфере ввода ОС, откуда потом автоматически вынимается. Если да, то как его почистить через NASM ? Или я не в ту сторону копаю? Отлаживал через gdb, там видно, что прочитан именно один символ, после чего также (!) автоматом происходит обработка "23\n" и уже после неё успешное завершение программы с кодом нуля...В общем, в каком направлении копать?