Для процессоров 386+ оптимальным по эффективности является 32-разрядный защищенный режим. Для того чтобы из этого режима можно было пользоваться сервисами BIOS (правда, не всеми) без промежуточных переключений, по инициативе фирмы Phoenix ввели 32-разрядные вызовы BIOS32. Адрес точки входа BIOS32 заранее не известен, но известен способ его нахождения: в диапазоне адресов памяти 0E0000-0FFFFFh на границе параграфов (младшие 4 бита адреса нулевые) ищется строка-сигнатура '_32_' (число 325F5F33h) заголовка, за которой следует физический адрес точки входа. Сами сервисы вызываются дальними вызовами точки входа в сервис. Номер, параметры вызываемых функций и результаты передаются на регистрах процессора.

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

Внутренние прерывания:

♦ Int 00h — деление на 0;

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

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

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

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

♦ Int 07h — вызов отсутствующего NPU.

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

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

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

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

♦ Int 0AhIRQ2/9;

♦ Int 0BhIRQ3;

♦ Int 0ChIRQ4;

♦ Int 0DhIRQ5;

♦ Int 0EhIRQ6 — контроллер гибких дисков;

♦ Int 0FhIRQ7;

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

♦ Int 71hIRQ9 (перенаправлено на Int 0Ah);

♦ Int 72hIRQ10;

♦ Int 73hIRQ11;

♦ Int 74hIRQ12 (контроллер мыши PS/2);

♦ Int 75hIRQ13 — исключение сопроцессора;

♦ Int 76hIRQ14 — контроллер жестких дисков;

♦ Int 77hIRQ15.

ПРИМЕЧАНИЕ

Прерывания 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;

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату