CodeNet / Платформы / Другие платформы / DOS / Прерывания DOS и BIOS
DOS Fn 0aH: ввод строки в буфер
Вход
- AH = 0aH
- DS:DX = адрес входного буфера (смотри ниже)
Выход
- нет = буфер содержит ввод, заканчивающийся символом CR (ASCII 0dH)
Описание:
при входе буфер по адресу DS:DX должен быть оформлен так:
+---+---+---+---+---+---+- - - ¦max¦ ? ¦ ? ? ? ? ? MAX - максимально допустимая +---+---+---+---+---+---+ - - длина ввода (от 1 до 254) при выходе буфер заполнен данными следующим образом: +---+---+---+---+---+---+- - - ¦max¦len¦ T E X T 0dH LEN - действительная длина данных +---+---+---+---+---+---+ - - без завершающего CR (здесь - 04H).
символы считываются со стандартного ввода вплоть до CR (ASCII 0dH) или до достижения длины MAX-1. если достигнут MAX-1, включается консольный звонок для каждого очередного символа, пока не будет введен возврат каретки CR (нажатие Enter).
Второй байт буфера заполняется действительной длиной введенной строки, не считая завершающего CR. последний символ в буфере - всегда CR (который не засчитан в байте длины). символы в буфере (включая LEN) в момент вызова используются как "шаблон". В процессе ввода действительны обычные клавиши редакти рования: Esc выдает "\" и начинает с начала, F3 выдает буфер до конца шаблона, F5 выдает "@" и сохраняет текущую строку как шаблон, и т.д. большинство расширенных кодов ASCII игнорируются. при распознавании Ctrl-Break выполняется прерывание INT 23H (буфер остается неизменным).