Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Сервисы и другие векторы прерываний BIOS



При инициализации таблицы прерываний BIOS отвечает за корректное запол­нение части векторов, имеющих отношение к аппаратным средствам компьютера и сервисам BIOS. На некоторые из них могут быть просто установлены заглуш­ки: вектор ссылается на код обработчика, содержащего единственную инструк­цию возврата из прерывания — IRET. BIOS инициализирует векторы прерыва­ний различных назначений:

♦ внутренних прерываний процессора (исключений), которые могут возник­
нуть в реальном режиме работы (об исключениях защищенного режима
в основном заботится соответствующая операционная система);

♦ аппаратных прерываний, маскируемых и немаскируемых;

♦ вызовов функций ROM BIOS (16-битных сервисов);

 

♦ указателей на системные таблицы.
Внутренние прерывания:

♦ Int OOh — деление на 0;

♦ Int Olh — пошаговый режим;

♦ Int 03h — точка останова;

♦ Int 04h — переполнение;

♦ Int 06h — недопустимая команда 286+;

♦________________________________ Int 07h — вызов отсутствующего математического сопроцессора (Numeric Pro­
cessor Unit, NPU).

Аппаратные прерывания:

♦ Int 02h — немаскируемое прерывание;

♦ Int 08h - таймер 8253/8254;

♦ Int 09h — клавиатура;

♦ Int OAh - IRQ2/9;

♦ Int OBh - IRQ3;

♦ Int OCh - IRQ4;

♦ Int ODh - IRQ5;

♦ Int OEh — IRQ6 (контроллер гибких дисков);

♦ Int OFh - IRQ7;

♦ Int 70h - CMOS-таймер;

♦ Int 71h — IRQ9 (перенаправлено на Int OAh);

♦ 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 — видеосервис (см. 10.6);

♦ Int llh — чтение списка оборудования (слово из BDA 0040:001 Oh), возвра­
щает в АХ:

 

• биты 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 — дисковый сервис (блочный ввод-вывод, см. 9.11);

♦ Int 14h — обслуживание СОМ-портов (см. 16.1);

♦ Int 15h — АТ-функции (системный сервис, функции определяются значени­
ем АН/АХ):

 

• 00-03h — управление и обмен данными с кассетным магнитофоном (были
когда-то и такие «стримеры»!) на старых ПК;

• 4fh — перехват событий клавиатуры (см. 11.1);

• 53xxh — сервисы расширенного управления энергопотреблением (АРМ);

• 8300h — запуск таймера, устанавливающего флаг в заданной ячейке
(см. 4.6);

• 830 lh — сброс того же таймера;

• 84h — джойстик (см. 11.6);

• 86h — программируемая задержка (см. 4.6);

• 87h — перемещение блока расширенной памяти;

• 88h — получение размера расширенной памяти;

• 89h — переключение в режим V86;

• COh — получение системной конфигурации, при успешном выполне­
нии (CF e 0, АН = 0) ES:BX указывает на таблицу данных конфигурации
(табл. 5.3);

• 80-82h, 85h, 90h, 91h — функции многозадачных ОС (BIOS устанавлива­
ет заглушки);

 

♦ Int 16h — клавиатурный ввод-вывод (см. 11.1);

♦ Int 17h — обслуживание LPT-портов (см. 15.4);

♦ Int 18h — процедура восстановления при неудаче начальной загрузки (преж­
де - ROM-Basic);

♦ Int 19h — начальная загрузка;

♦ Int lAh — системное время, дата, будильник (см. 4.6) и 16-битные вызовы
сервисов PCI (см. 14.7);

♦ Int lBh — обработчик нажатия клавиш Ctrl+Break;

♦ Int ICh — процедура User Timer Interrupt, вызываемая обработчиком Int 08h
каждые 55 мс; BIOS устанавливает простую заглушку (IRET), но программы
могут перехватывать это прерывание; на время отработки процедуры все ап­
паратные прерывания запрещены
(кроме NMI);

 

♦ Int 33h — поддержка мыши;

♦ Int 4Ah — обработчик будильника пользователя, установленного функцией
Int lAh (6) BIOS (см. 4.6); прерывание вызывается асинхронно, так что при
возврате из процедуры все регистры и флаги должны быть в том же состоя­
нии, что и при входе; BIOS ставит заглушку (IRET);

Int 67h — EMS-функции.

Указатели на таблицы:

♦ Int lDh — видеопараметры;

♦ Int lEh — параметры дискет;

♦ Int lFh — знакогенератор CGA;

♦ Int 41h — параметры HDD 0;

♦ Int 46h — параметры HDD 1;

♦ Int 43h — знакогенератор EGA.

Как видно из приведенных списков, большинство векторов BIOS накладывается на область векторов ОО-lFh, зарезервированную фирмой Intel под внутренние прерывания и исключения процессоров. Во времена 8086 из них использова­лось совсем малое количество, зарезервированной была объявлена вся указан­ная область. Тем не менее творцы IBM PC «влезли» в эту область, что ослож­нило жизнь системных программистов, работающих с более щедрыми на ис­ключения современными процессорами.

 




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

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.