Внутренние прерывания :
♦ Int 00h— деление на 0;
♦ Int 01h— пошаговый режим;
♦ Int 03h— точка останова;
♦ Int 04h— переполнение;
♦ Int 06h— недопустимая команда 286+;
♦ Int 07h— вызов отсутствующего NPU.
Аппаратные прерывания :
♦ Int 02h— немаскируемое прерывание;
♦ Int 08h— таймер 8253/8254;
♦ Int 09h— клавиатура;
♦ Int 0Ah— IRQ2/9;
♦ Int 0Bh— IRQ3;
♦ Int 0Ch— IRQ4;
♦ Int 0Dh— IRQ5;
♦ Int 0Eh— IRQ6— контроллер гибких дисков;
♦ Int 0Fh— IRQ7;
♦ Int 70h— CMOS-таймер;
♦ Int 71h— IRQ9(перенаправлено на Int 0Ah);
♦ Int 72h— IRQ10;
♦ Int 73h— IRQ11;
♦ Int 74h— IRQ12(контроллер мыши PS/2);
♦ Int 75h— IRQ13— исключение сопроцессора;
♦ Int 76h— IRQ14— контроллер жестких дисков;
♦ Int 77h— IRQ15.
ПРИМЕЧАНИЕ
Прерывания Int 70h- 77hимеют место только в AT.
Функции ROM BIOS (16-битные сервисы):
♦ Int 05h(F000:FF54h) — печать экрана;
♦ Int 10h— видеосервис;
♦ Int 11h— чтение списка оборудования (слово из BDA 0040:0010h), возвращает в АХ:
• биты 15:14 — число обнаруженных LPT-портов: 00 — 0, …, 11 — 3;
• бит 13 — резерв;
• бит 12 — обнаружен игровой адаптер;
• биты 11:9 — число обнаруженных СОМ-портов: 000 — 0, …, 111 — 7;
• бит 8 — наличие контроллера DMA;
• биты 7:6 — число обнаруженных НГМД: 00 — 1, …, 11 — 4;
• биты 5:4 — активный видеорежим: 00 — резерв, 10 — 80-колоночный цветной, 01 — 40-колоночный цветной, 11 — монохромный;
• биты 3:2 — размер ОЗУ на системной плате (теперь обычно 00);
• бит 1 — присутствие математического сопроцессора;
• бит 0 — присутствие дисководов;
♦ Int 12h— размер непрерывной памяти;
♦ Int 13h— дисковый сервис (блочный ввод-вывод);
♦ Int 14h— обслуживание СОМ-портов;
♦ Int 15h— AT-функции (системный сервис, функции определяются значением АН/ АХ):
• 00-03h — управление и обмен данными с кассетным магнитофоном (были когда-то и такие «стриммеры»!) на старых PC;
• 4fh — перехват клавиатуры;
• 53xxh — сервисы управления потреблением АРМ (Advanced Power Management);
• 8300h — запуск таймера, устанавливающего флаг в заданной ячейке;
• 8301h — сброс того же таймера;
• 84h — джойстик (см. п. 8.6);
• 86h — программируемая задержка;
• 87h — перемещение блока расширенной памяти;
• 88h — получение размера расширенной памяти;
• 89h — переключение в режим V86;
• C0h — получение системной конфигурации, при успешном выполнении ( CF=0, AH=0) ES:BX указывает на таблицу данных конфигурации;
• 80-82h, 85h, 90h, 91h — функции многозадачных ОС (BIOS устанавливает заглушки);
♦ Int 16h— клавиатурный ввод-вывод;
♦ Int 17h— обслуживание LPT-портов;
♦ Int 18h— процедура восстановления при неудаче начальной загрузки (прежде — ROM-Basic);
♦ Int 19h— начальная загрузка (вызов процедуры Bootstrap);
♦ Int 1Ah— системное время, дата, будильник и 16-битные вызовы сервисов PCI;
♦ Int 1Bh— обработчик нажатия клавиш Ctrl+Break;
♦ Int 1Ch— User Timer Interrupt, процедура, вызываемая обработчиком Int 08hкаждые 55 мс; BIOS устанавливает простую заглушку ( IRET), но программы могут перехватывать это прерывание; на время отработки этой процедуры все аппаратные прерывания запрещены (кроме NMI).
♦ Int 33h— поддержка мыши;
♦ Int 4Ah— обработчик будильника пользователя, установленного функцией BIOS Int 1Ah(6); прерывание вызывается асинхронно, так что при возврате из процедуры все регистры и флаги должны быть в том же состоянии, что и при входе; BIOS ставит заглушку ( IRET);
♦ Int 67h— EMS-функции.
Указатели на таблицы :
♦ Int 1Dh— видеопараметры;
♦ Int 1Eh— параметры дискет;
♦ Int 1Fh— знакогенератор СGA;
♦ Int 41h— параметры HDD 0;
♦ Int 46h— параметры HDD 1;
♦ Int 43h— знакогенератор EGA.
12.8.1. Int 09h, Int 16h — поддержка клавиатуры
Поддержка клавиатуры заключается в обработке прерываний от устройства ввода и предоставлении сервисов ввода прикладным программам.
Прерывания , вызванные приходом кодов нажатия и отпускания клавиш , обрабатывает BIOS Int 9h. Каждый принятый скан-код (или цепочка) обрабатывается с учетом состояния клавиатурных флагов . Результат обработки (как правило, ASCII-символ в младшем байте и скан-код в старшем) помещается в клавиатурный буфер , расположенный в ОЗУ. По приему каждого символа указатель головы буфера увеличивается. Буфер организован в виде кольца, после достижения конца области буфера указатель головы установится на начало области. В случае переполнения буфера (указатель головы «догнал» указатель хвоста) очередное слово не записывается, и подается звуковой сигнал. Размер позволяет хранить описание шестнадцати фактов нажатий клавиш. Нажатие клавиш Ctrl, Shift, Altи некоторых комбинаций в буфере не отмечается, но приводит к модификации бит ячеек флагов клавиатуры. Нажатие «системной» комбинации Ctrl+Alt+Del, клавиши PrintScreen( SysRq) и некоторых других к записи в клавиатурный буфер не приводит, а вызывает специальные процедуры.
Читать дальше