Глава 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 Получение строки символов.-~>