Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metoda AK.doc
Скачиваний:
4
Добавлен:
17.11.2018
Размер:
1.44 Mб
Скачать

1). Обробка клавіш зсуву (Shift, Ctrl, Alt).

Якщо скан-код належить одній з чотирьох клавіш зсуву, це відображається встановленням відповідного біта в інформаційному байті KD_FLAG розташованому за адресою 0040:0017h в області даних BIOS. Значення бітів, при умові якщо вони дорівнюють 1, наступні:

0: натиснутий правий Shift;

1: натиснутий лівий Shift;

2: натиснутий Ctrl;

3: натиснутий Alt;

4: режим ScrollLock увімкнений;

5: режим NumLock увімкнений;

6: режим CapsLock увімкнений;

7: режим Insert увімкнений.

При знаходженні скан-коду відпускання клавіші зсуву відповідний біт скидається в 0.Такий метод дозволяє програмі INT 09h завжди знати, яка з цих клавіш натиснута.

2). Обробка клавіш-перемикачів (Insert, CapsLock, NumLock, ScrollLock.).

Логіка роботи клавіш-перемикачів відмінна від логіки роботи клавіш зсуву. Коли програма INT 09h зустрічає скан-код клавіші-перемикача, вона підготовляється до встановлення (з використанням оператора OR) відповідного біта в байті KD_FLAG1. Цей байт розташований за адресою 0040:0018h. Значення бітів, при умові якщо вони дорівнюють 1, наступні:

0: натиснутий лівий Shift разом з Ctrl;

1: натиснутий лівий Shift разом з Alt;

2: натиснутий SysReq;

3: натиснуті клавіші Ctrl з NumLockl;

4: режим ScrollLock увімкнений;

5: режим NumLock увімкнений;

6: режим CapsLock увімкнений;

7: режим Insert увімкнений.

Перед встановленням цього біта INT 09h перевіряє, чи не був він встановлений раніше. Якщо був, то INT 09h вважає, що пройшов автоповтор і ніяких дій не виконує.

3). Комбінація Ctrl-Alt-Del.

Комбінація Ctrl-Alt-Del.має спеціальне значення. При її знаходженні в двобайтове слово RESET_FLAG, яке знаходиться в BIOS за адресою 0040:0072h, заноситься значення 1234h і виконується перехід на процедуру ініціалізації встановленням в 0 нульового розряду вихідного порту P2. Програма ініціалізації перевіряє RESET_FLAG і, якщо його значення дорівнює1234h – виконується “тепле” перезавантажання.

4). Комбінація Ctrl-Break.

При знаходженні цієї комбінації INT 09h виконує декілька дій. Спочатку очищається буфер клавіатури шляхом встановлення показника початку буфера рівним показнику кінця. Після цього INT 09h встановлює в 1 старший біт байта BIOS_BREAK с адресою 0040:0071h. Будь-яка програма може перевірити значення цього біта для визначення стану Ctrl-Break. Далі INT 09h викликає переривання INT 1Вh. Зазвичай, воно вказує на оброблювач DOS, але будь-яка програма може перехопити цей вектор і самостійно обробити комбінацію. Якщо переривання INT 1Вh викликає оброблювач DOS, то останній встановлює внутрішній прапорець Ctrl-Break DOS. При цьому будь-яка програма, що використовує функції вводу-виводу DOS буде перервана. Останнє що робить INT 09h з Ctrl-Break, це поміщає нульовий символ і скан-код в буфер клавіатури.

Ввод Ctrl-C також інтерпретується, як Ctrl-Break. Виконання цієї команди не є функцією INT 09h. Комбінація обробляється як і будь-який інший символ, а вже DOS сама інтерпретує її як команду переривання.

5). Print Screen.

При натисканні цієї клавіші INT 09h просто викликає переривання INT 05h для копіювання зображення екрана.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]