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

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

3.1.5 Прием символа без ожидания.

Hекоторые программы, работающие в реальном времени не могут останавливаться и ждать нажатия клавиши; они принимают символ из буфера клавиатуры только в те моменты, когда это удобно для программы. Hапример, бездействие процессора во время ожидания ввода с клавиатуры остановило бы все действия на экране в игровой программе. Hапомним, что легко проверить пуст или нет буфер клавиатуры, используя методы, описанные в {3.1.2}.

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

Функция 6 прерывания 21H - это единственный способ получить введенный символ без ожидания. Эта функция не дает эха на экран и не распознает Ctrl-Break. Перед вызовом прерывания в DL должно быть помещено 0FFH. В противном случае функция 6 служит совершенно противоположной цели - печатает в текущей позиции курсора символ, находящийся в DL. Флаг нуля устанавливается в 1, если буфер клавиатуры пуст. Если символ принят, то он помещается в AL. Kод ASCII 0 индицирует расширенный код и для получения номера кода прерывание должно быть повторено.
MOV AH,6 ;номер функции DOS
MOV DL,0FFH ;запрос ввода с клавиатуры
INT 21H ;получение символа
JZ NO_CHAR ;переход если нет символа
CMP AL,0 ;проверка на расширенный код
JE EXTENDED_CODE ;если да, то на спец. процедуру
... ;иначе в AL код ASCII
EXTENDED_CODE: INT 21H ;получаем номер расширенного кода
... ;номер кода в AL


<~-3.1.4 Ожидание нажатия клавиши и эхо на экран.
Содержание
3.1.6 Получение строки символов.-~>

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