Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 6004.doc
Скачиваний:
21
Добавлен:
30.04.2022
Размер:
1.29 Mб
Скачать

5.1.1.Анализ и преобразование скэн-кода

Клавиши в зависимости от алгоритма обработки скэн-кода делятся на

шифт-клавиши SНift, Alt, Ctrl - правые (rigНt) и левые (left);

триггерные клавиши NumLock, ScrollLock, CapsLock, Insert (Ins), Pause;

клавиши c буферизацией расширенного кода;

специальные клавиши PrintScrn, Ctrl+Alt+Del, Ctrl+C, Ctrl+Break.

Состояние шифт- и триггерных клавиш отражается в слове 40:17Н (табл. 5).

Текущее состояние шифт- и триггерных клавиш используется BI- OS-обработчиком прерываний от клавиатуры при преобразовании скэн-кода от других клавиш. При нажатии клавиши c буферизацией расширенного кода в буфер клавиатуры помещается двухбайтовый код (BIOS-код клавиши): младший байт содержит ASCII-код или нуль; старший байт содержит скэн-код или расширенный скэн-код.

Комбинация ASCII-код/скэн-код генерируется, во-первых, если нажата ASCII-клавиша, с учетом SНift и CapsLock, во-вторых, при одновременном нажатии Ctrl и ASCII-клавиши, а также для клавиш BackSpace, Enter, Tab, Esc. Младший байт имеет код 0..31. Комбинация 0/расширенный скэн-код генерируется для клавиш F1..F12, Insert (Ins), Delete (Del), Down, Up, Left, RigНt, Нome, End, PgUp, PgDn и их сочетаний с Alt, SНift, Ctrl, а также Аlt+AS- CII-символ. Значение расширенного скэн-кода определяется технической документацией BIOS. Расширенный скэн-код и скэн-код не совпадают.

Таблица 5 - Состояние шифт- и триггерных клавиш

Бит

Состояние

40:17h

0

1

2

3

4

5

6

7

Нажата Right Shift

Нажата Left Shift

Нажата Right Ctrl

Нажата Right Alt

Зафиксирован скроллинг экрана (ScrollLock - включен)

Включена цифровая клавиатура (NumLock - включен)

Зафиксирован верхний регистр (CapsLock - включен)

Включен режим вставки (Ins - включен)

40:18h

0

1

2

3

4

5

6

7

Нажата Left Ctrl

Нажата Left Alt

Нажата System

Включен режим Pause (Ctrl+NumLock)

Нажата ScrollLock

Нажата NumLock

Нажата CapsLock

Нажата Ins

Нажатие на специальную клавишу PrintScrn приводит к прерыванию 5Н, которое стандартно закреплено за функцией печати текстового экрана. Одновременное нажатие Ctrl+Alt+Del запускает программу начальной загрузки операционной системы без тестирования аппаратуры (мягкая перезагрузка). Использование комбинации клавиш Ctrl+C (Ctrl+Break) позволяет по адресу 0047Н записать 80Н (флаг сигнализации о желании приостановить выполнение текущей программы). Этот флаг проверяется функциями, которые способны генерировать прерывание 23Н.