Прерывания
(классификация и описание)

Введение

Все прерывания в компьютере делятся на аппаратные, программные и исключения. Аппаратные прерывания могут быть маскируемыми и немаскируемыми. Маскируемые прерывания могут быть запрещены установкой флага IF, немаскируемые прерывания не могут быть запрещены и возникают при сбоях и ошибках аппаратуры (например, ошибка паритета памяти). Аппаратные прерывания - это запросы от периферийных устройств на обработку данных. Программные прерывания - это, как правило, вызов каких-либо функций DOS или BIOS, а также вызов пользовательских функций. Исключения возникают при возникновении какой-либо критической ошибки (например, деление на 0, отсутствие сопроцессора и т.д.) или при пошаговом выполнении программы (трассировка). Каждому прерыванию сопоставляется некоторая программа - обработчик прерывания, которая выполняет те или иные действия при возникновении прерывания. Для аппаратных прерываний обработчики, помимо всего прочего, выполняют управление аппаратурой. Обработчики программных прерываний обычно выполняют некоторые функции, в зависимости от входных параметров, заданных в регистрах, и могут возвращать результаты в регистрах или иным образом. Обработчики исключений выполняют специфические задачи, зависящие от конкретного случая (например, обработчик прерывания "деление на 0" обычно выдаёт сообщение об ошибке на экран). Для привязки каждого прерывания к его обработчику существует специальная таблица - так называемая таблица векторов прерываний, в которой для каждого прерывания хранится адрес обработчика в формате сегмент:смещение. Таблица располагается в памяти по абсолютному адресу 0x00000000 и собержит 256 ячеек - столько прерываний может быть в компьютере IBM PC. Сюда включены аппаратные и программные прерывания, а также исключения. Размер таблицы - 1024 байта, а размер ячейки - 4 байта (2 байта на сегмент и 2 на смещение). Некоторые ячейки в таблице векторов прерываний зарезервированы и не должны использоваться. Некоторые являются свободными и предназначены для установки пользовательских обработчиков.

Ниже представлены таблицы с описанием прерываний DOS, BIOS и некоторых других прерываний.

Прерывания BIOS

Номер прерывания Описание
0x00 Деление на 0
0x01 Пошаговый режим (отладка)
0x02 Немаскируемое прерывание
0x03 Точка останова (breakpoint)
0x04 Переполнение
0x05 Печать экрана (Print Screen)
0x06 Недопустимая команда (для 286 и выше)
0x07 Вызов отсутствующего сопроцессора
0x08 Таймер (IRQ0)
0x09 Клавиатура (IRQ1)
0x0A-0x0F IRQ2-IRQ7
0x10 Видеосервис BIOS
0x11 Список оборудования
0x12 Размер нижней памяти (640 или 512Кб)
0x13 Дисковый ввод/вывод (работа с физическими секторами на низком уровне)
0x14 Обслуживание COM портов
0x15 AT функции (задержка, работа с джойстиком и др.)
0x16 Клавиатурный ввод/вывод (чтение клавиш и др.)
0x17 Обслуживание LPT портов
0x18 ROM-Basic
0x19 Начальная загрузка
0x1A Системное время
0x1B Обработчик Ctrl+Break
0x1C Процедура, вызываемая обработчиком INT 08h (заглушка)
0x1D Адрес таблицы параметров дисплея
0x1E Адрес таблицы параметров дисковода
0x1F Адрес таблицы графических символов
0x33 Функции драйвера мыши
0x40 Функции BIOS для дискет
0x41 Параметры жёсткого диска 0
0x42 Перемещённый обработчик видео
0x43 Знакогенератор EGA
0x44 Nowell Netware API
0x45 Зарезервировано
0x46 Параметры жёсткого диска 1
0x47-0x49 Зарезервировано
0x4A Будильник пользователя
0x67 Память EMS

Прерывания DOS

Номер прерывания Описание
0x20 Завершение программы (обычно, для COM файлов)
0x21 Обращение к функциям DOS
0x22 Адрес обработчика завершения задачи
0x23 Адрес обработчика Ctrl+Break
0x24 Адрес обработчика критической ошибки
0x25 Чтение логических секторов
0x26 Запись логических секторов
0x27 Создание резидентной программы
0x28 Ожидание нажатия клавиши
0x29 Вывод символа (используется DOS)
0x2A Сеть Microsoft
0x2B-0x2D Зарезервировано
0x2E Выполнение команды DOS
0x2F Мультиплексное прерывание (связь процессов)
0x30-0x32 Зарезервировано
0x34-0x3E Зарезервировано
0x3F Обработчик оверлеев

Другие прерывания

Номер прерывания Описание
0x4B-0x5F Зарезервировано
0x60-0x63 Резерв прикладных программ
0x64 Nowell Netware API
0x65-0x66 Резерв прикладных программ
0x68-0x6F Зарезервировано
0x78-0x79 Зарезервировано
0x7A Nowell Netware API
0x7B-0x7F Зарезервировано
0x80-0xF0 Зарезервировано для ROM BASIC
0xF1-0xFF Резерв прикладных программ

Примечание: Некоторые приведённые выше прерывания DOS (например, 0x28h, 0x29) являются недокументированными. Это означает, что в последующих версиях DOS они могут быть заменены другими или вообще удалены. Использовать эти прерывания не рекомендуется.

 

Возврат в раздел "Писанина"Переход на главную страницу

Copyright © 1999 by HackMaster

Hosted by uCoz