http://npc-news.ru/

Прерывания и порты клавиатуры. 

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

Часть задачи обслуживания клавиатуры со стороны системы BIOS заключается в слежении за всеми возможными состояниями смещений. Состояния смещений довольно часто вызывают путаницу, поскольку клавиатура обычной пишущей машинки имеет всего одну клавишу смещения. Клавиатуры многих компьютеров, в том числе и IBM/PC, имеют три типа смещений. Во-первых, имеются обычные функции клавиш, без всякого смещения (например, для получения букв в нижнем регистре).Затем имеется обычное смещение, которое служит для получения букв верхнего регистра и, как правило, всех знаков, нанесенных на верхнюю часть клавиши. Кроме того, имеются еще два вида смещения, изменяющее смещение («ALT») и управляющее смещение («CTRL»). Эти два специальных вида смещения используются аналогично обычному смещению в том смысле, что просто «а» не совсем тоже самое, что «А» в верхнем регистре, и Ctrl-A и Alt-A также имеют собственные значения.

На клавиатуре IBM/PC имеется четыре специальных»переключательных» клавиши, которые действуют в качестве тумблера «включения-отключения» для определенных функций: Insert (вставка), Caps-Lock (закрапление заглавныхбукв), Num-Lock (закрепление цифровой клавиатуры) и Scroll-Lock (закрепление«скроллинга»). Две из этих клавиш, Caps-Lock и Num-Lock,являются частью механизма смещения, а оставшиеся две управляют определенными специальными режимами работы.
Информация о состоянии этих четырех переключательных клавиш и том, удерживается ли в данный момент в нажатом состоянии одна из клавиш смещения, хранится в специально выделенной для этих целей области в нижних адресах оперативной памяти. Вся эта информация хранится в двух байтах с адресами 1047 и 1048 (или 417 и 418 шестнадцатеричных).

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

Состояние клавиатуры хранится в первых тринадцати битах указанных выше двух байт по адресу 1047. Ниже приведена таблица значений этих битов:

Комбинация Ctrl-Alt-Del срабатывает всегда, когда работает процедура обслуживания клавиатуры. Это условие может оказаться невыполненным в двух случаях. Первый и наиболее распространенный связан с запретом прерываний.

Известно, что прерывания запрещаются машинной командой CLI и не обслуживаются пока не будет выдана команда STI. Обычно команда STI следует за командой CLI через очень короткий промежуток времени. Однако, если программа по ошибке, оставила прерывания запрещенными, то нажатие клавиш Ctrl-Alt-Del не приведет ни к какому результату.

Другая причина нарушения работы процедуры обслуживания клавиатуры может быть связана с изменением значения вектора прерывания от клавиатуры. Если изменить ячейки памяти с 36 по 39, в которых находится вектор прерывания от клавиатуры, тогда клавиатура не будет работать, в том числе и клавиши Ctrl-Alt-Del.

Комбинация Ctrl-Break предназначена для прерывания текущей операции. В отличие от остальных трех специальных комбинаций она может отрабатываться программно. Прерывание номер 27, шестнадцатеричное значение 1В, зарезервировано для процедуры, которая должна вызываться при нажатии клавиш Ctrl-Break. Если программа хочет использовать это средство, она должна занести адрес процедуры обслуживания прерывания в ячейки вектора прерывания 27 — ячейку с адресом 108, шестнадцатеричное значение 6С.

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


Добавить комментарий

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>