2
arseniivЦитата:
А про буфер я думал, что нужно в длине учитывать байты длины и возвращённой длины.
Эксперимент прост -- после объявления
buffer добавляем сразу после него лишний проверочный байт
junk db 0 и смотрим после введения с консоли строк максимальной длины, по прежнему в
junk лежит ноль или нет. В вашем случае слишком короткого буфера этот ноль затирается dos'ом. А без этого дополнительного байта
junk затираться будет первая ячейка массива
arr1. Другое дело, что такие длинные строки соответствуют слишком большим числам, которые ваша программка все-равно пока не переваривает. :)
P.S.: Кажется, там выше я ошибся. Я советовал
buffer db 8, 7 dup (0) заменить на
buffer db 8, 8 dup (0), но, оказывается, и этого недостаточно -- нужно писать
buffer db 8, 9 dup (0). Проверено этим же приемом с
junk-байтом. Во всем виноват символ возврата каретки, который dos тоже записывает в буфер (тем не менее, во второй байт буфера кладется фактическое количество полезных символов, без CR'а, поэтому изменять проверку на пустоту строки не требуется, достаточно той
test-инструкции).