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

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

3.1.7 Проверка/установка статуса клавиш-переключателей.

Два байта, расположенные в ячейках памяти 0040:0017 и 0040:0018 содержат биты, отражающие статус клавиши сдвига и других клавиш-переключателей следующим образом:

 
            Бит    Kлавиша      Значение, когда бит = 1 
0040:0017    7     Insert       режим вставки включен 
             6     CapsLock     режим CapsLock включен 
             5     NumLock      режим NumLock включен 
             4     ScrollLock   режим ScrollLock включен 
             3     Alt          клавиша нажата 
             2     Ctrl         клавиша нажата 
             1     левый Shift  клавиша нажата 
             0     правый Shift клавиша нажата 
0040:0018    7     Insert       клавиша нажата 
             6     CapsLock     клавиша нажата 
             5     NumLock      клавиша нажата 
             4     ScrollLock   клавиша нажата 
             3     Ctrl-NumLock режим Ctrl-NumLock включен 
остальные биты не используются

Прерывание клавиатуры немедленно обновляет эти биты статуса, как только будет нажата одна из клавиш-переключателей, даже если не было считано ни одного символа из буфера клавиатуры. Это верно и для клавиши Ins, которая единственная из этих 8 клавиш помещает код в буфер (установка статуса Ins меняется даже если в буфере нет места для символа). Отметим, что бит 3 по адресу 0040:0018 устанавливается в 1, когда действует режим задержки Ctrl-NumLock; поскольку в этом состоянии программа приостановлена, то этот бит несущественен.

Прерывание клавиатуры проверяет состояние статусных битов перед тем, как интерпретировать нажатые клавиши, поэтому когда программа меняет один из этих битов, то эффект такой же, как при физическом нажатии соответствующей клавиши. Вы можете захотеть установить состояние клавиш NumLock и CapsLock, чтобы быть уверенным, что ввод будет требуемого вида. Hаоборот, Ваша программа может нуждаться в чтении статуса этих клавиш, например для того, чтобы вывести текущий статус на экран. Отметим, что клавиатура AT правильно устанавливает световые индикаторы состояния клавиш, даже если переключены программно.

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

Функция 2 прерывания 16H предоставляет доступ к одному - но только одному - из байтов статуса. Это байт по адресу 0040:0017, который содержит больше полезной информации. Байт возвращается в AL.
;---проверка статуса клавиши вставки
MOV AH,2 ;номер функции
INT 16H ;получаем байт статуса
TEST AL,10000000B ;проверяем бит 7
JZ INSERT_OFF ;если 0, то INSERT выключен

Hизкий уровень.

В данном примере устанавливается режим вставки, за счет установки бита 7 байта статуса по адресу 0040:0017 (который адресуется как 0000:0417).
SUB AX,AX ;устанавливаем добавочный сегмент на
MOV ES,AX ;начало памяти
MOV AL,10000000B ;готовим бит 7 к установке
OR ES:[417H],AL ;меняем байт статуса


<~-3.1.6 Получение строки символов.
Содержание
3.1.8 Hаписание процедуры ввода с клавиатуры общего назначения.-~>

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