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

29. Программные (синхронные) прерывания, команды прерывания мп. Сервисы bios, как программные прерывания.

Прерывание (англ. interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.

синхронные или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение, обращение к недопустимым адресам или недопустимый код операции

Каждый обработчик прерываний BIOS и DOS может выполнять несколько различных функций. В команде INT никак не определяется, какую именно функцию должен выполнить обработчик прерываний. Поэтому перед обращением к команде INT в регистры микропроцессора должна быть занесена информация, определяющая, какую функцию необходимо выполнить.

Например, по команде INT 13h могут быть выполнены следующие функции:

00h - сброс дисковой системы;

0lh - определение состояния дисковой системы (успешное завершение, некорректная команда, не найдена адресная метка и т.д.);

02h - чтение секторов в основную память;

03h - запись секторов из основной памяти;

04h - контроль секторов (есть ошибка - нет ошибки);

05h- форматирование дорожки;

06h - для жесткого диска - форматирование дорожки с установкой флагов плохих секторов;

07h - для жесткого диска - форматирование диска, начиная с указанной дорожки;

08h - определение типа и текущих параметров диска...

и т.д.

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

При выполнении команды INT номер функции должен содержаться в регистре АН микропроцессора. Остальные регистры должны включать необходимые для этой функции параметры. Например, для функции 02h остальные регистры микропроцессора должны содержать:

AL - число читаемых секторов;

СН - номер дорожки, на которой расположены читаемые сектора;

CL - номер сектора;

DH - номер головки;

DL - номер дисковода;

ES:BX - адрес буфера для чтения.

В результате выполнения этой функции при возникновении ошибки флаг CF устанавливается в 1; в регистр AL заносится число считанных секторов, в регистр АН записывается код состояния, сформированный после окончания операции:

00 - успешное завершение;

01 - некорректная команда;

02 - адресная метка не найдена;

FF - сбой операции опроса (для жесткого диска).

Кроме команд INT и IRET в IBM PC, с прерываниями работают команды CLI (запрещение маскируемых прерываний) и STI (отмена запрета прерывания).

Сервисы и прерывания 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 0Ah - IRQ2/9;

♦ Int 0Bh- IRQ3;

♦ Int 0Ch-IRQ4;

♦ Int 0Dh — IRQ5;

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

♦ Int 0Fh-IRQ7;

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

♦ Int 7Ih — IRQ9 (перенаправлено на Int 0Ah);

♦ Int 72h- IRQ10;

♦ Int 73h — IRQ11;

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

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

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

♦ Int 77h-IRQ15.

ПРИМЕЧАНИЕ

Прерывания Int 70h-77h имеют место только в AT.

Функции ROM BIOS (16-битные сервисы):

♦ Int 05h (FOOO:FF54h) - печать экрана;

♦ Int 10h — видеосервис;

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

• биты 15:14 — число обнаруженных LPT-портов: 00 —0,... 11 — 3;

• бит 13 — резерв;

• бит 12 — обнаружен игровой адаптер;

482 Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера

• биты 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 — АТ-функции (системный сервис, функции определяются значени

ем АН/АХ):

• 00-ОЗЬ — управление и обмен данными с кассетным магнитофоном (были когда-то и такие «стриммеры»!) на старых PC;

• 4fh — перехват клавиатуры;

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

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

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

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

• 86h — программируемая задержка;

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

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

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

• COh — получение системной конфигурации, при успешном выполнении (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 lAh— системное время, дата, будильник и 16-битные вызовы сервисов PCI;

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

12.8. Сервисы и прерывания BIOS 483

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

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

♦ Int 4Ah — обработчик будильника пользователя, установленного функцией

BIOS Int lAh(6); прерывание вызывается асинхронно, так что при возврате

из процедуры все регистры и флаги должны быть в том же состоянии, что и при

входе; BIOS ставит заглушку (IRET);

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

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

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

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

♦ Int IFh — знакогенератор СGA;

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

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

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