Клавиатура. Байты статуса. Основные шаги обработки прерываний от клавиатуры.

Определяют, нажаты ли Shift, Alt, CapsLock …

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

2й байт отображает моменты нажатия клавиши.

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

В прерывании клавиатуры можно выделить 3 основных шага:

1. прочитать скэн-код и послать клавиатуре подтверждающий сигнал

2. преобразовать скэн-код в номер кода или в установку соответствующего байта статуса.

3. поместить код клавиши в буфер клавиатуры

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

Работу клавиатуры можно представить с помощью схемы:

Существует несколько способов проверки, был ли ввод с клавиатуры:

1) когда значения головы и хвоста равны

2) функция 0Bh прерывания 21h возвращает значение FFh в регистр AL когда буфер клавиатуры содержит хотя бы один символ:

Функция 1) прерывания BIOS 16h предоставляет ту же возможность, кроме того, она показывает, какой символ в буфере. Флаг нуля ZF устанавливается, если буфер пуст и сбрасывается, если в буфере есть символ. Копия символа из буфера помещается в регистр AX, но символ из буфера не удаляется. В регистре AL возвращается ASCII код символа, и если он = 0, то это расширенный код и в регистре AH пересылается номер кода.









Дата добавления: 2015-07-30; просмотров: 1374;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.