Глава 3. Kлавиатура.

Раздел 1. Управление клавиатурой.

3.1.4 Ожидание нажатия клавиши и эхо на экран.

При вводе данных и текста, эхо вводимых символов обычно выдается на экран. При этом такие символы как возврат каретки или забой переводятся в соответствующие перемещения курсора, а не изображаются как ASCII символы для этих кодов. Выдача эха происходит в той позиции, где предварительно был установлен курсор и текст автоматически переносится на следующую строку при достижении конца текущей. Перенос на следующую строку не требует специального кода, поскольку символы помещаются в следующую позицию буферной памяти дисплея, которая представляет из себя одну длинную строку, включающую все 25 строк дисплея.

Средний уровень.

Функция 1 прерывания 21H ожидает ввода символа, если буфер клавиатуры пуст, а затем выводит его на экран в текущую позицию курсора. Обрабатывается Ctrl-Break, поэтому может выполняться процедура обработки Ctrl-Break {3.2.8}. Введенный символ возвращается в AL. При вводе расширенного кода AL содержит ASCII 0. Для получения в AL второго байта расширенного кода надо повторить прерывание.
;---получение введенного символа
MOV AH,1 ;номер функции
INT 21H ;ожидаем нажатия клавиши
CMP AL,0 ;расширенный код?
JE EXTENDED_CODE ;если да, то на спец. процедуру
. ;иначе символ находится в AL
;---процедура обработки расширенных кодов
INT 21H ;получаем в AL номер кода
CMP AL,77 ;проверка на "курсор-вправо"
JNE C_R ;если нет, проверка следующего
JMP CURSOR_RIGHT ;если да, то на процедуру
C_R: CMP AL,75 ;... и т.д.

Эта функция полностью игнорирует клавишу <ESC>. Kлавиша табуляции интерпретируется нормально. Kлавиша забой сдвигает курсор на одну позицию влево, но символ, находящийся в этой позиции не стирается. Kлавиша <Enter> вызывает перемещение курсора в первую позицию текущей строки (нет автоматического перевода строки).


<~-3.1.3 Ожидать ввод символа и не выводить его на экран.
Содержание
3.1.5 Прием символа без ожидания.-~>

Сайт управляется системой uCoz