INT 05H - Печать экрана
Прерывания BIOS
Прерывания DOS
- 20h: Завершить программу
- 21h: Сервис DOS
- 25h/26h: Абсолютные чтение/запись диска
- 27h: Завершиться, но остаться резидентным
- 28h: Квант времени DOS (НЕТ В ДОКУМЕНТАЦИИ)
- 2eh: Выполнить команду DOS (НЕТ В ДОКУМЕНТАЦИИ)
- 2fh: Мультиплексное прерывание (спулинг печати)
Адресные указатели (не используются как прерывания)
- 22h: Адрес завершения
- 23h: Адрес Control-Break
- 24h: Адрес обработчика критических ошибок
BIOS
INT 00h - деление на 0.
Процессор автоматически вызывает это прерывание после выполнения команд DIV или IDIV, если результат операции деления (частное) не умещается в поле результата.;
Эта ситуация включает и деление на 0. Например:
mov ax, 4000H ;делимое
mov bl, 2 ;делитель - байт, поэтому частное - тоже байт (AL)
div bl ;4000H/2 = 2000H, что не умещается в байте AL
; поэтому выполняется прерывание INT 00H
или просто:
mov bx,0
div bx ;любое деление на 0
INT 01h - пошаговое выполнение программы
Если установлен флаг трассировки процессора (TF=1), CPU вызывает это прерывание после каждрй команды.
Отладчики, которые позволяют вам осуществлять пошаговое выполнение программы, используют это прерывание, чтобы перехватывать управление и выдавать регистры, память и т.п.
Трассировка отключается (TF=0) при выполнении любой команды INT, так что само INT 01H выполняется не в пошаговом режиме. После выхода из прерывания (через IRET) все флаги восстанавливаются, так что следующая команда вновь вызовет пошаговое прерывание.
Обычный способ начать трассировку - это поместить в стек слово, содержащее все нужные флаги (включая TF=1), поместить в стек требуемые значения CS и IP, а затем выполнить IRET, чтобы начать трассировку с указанного адреса.
INT 02h - Немаскируемое прерывание (NMI).
Немаскируемое прерывание (NMI) - это единственное прерывание, не запрещаемое командой CLI. Поэтому его можно использовать в специальных случаях, которые требуют немедленного действия.
Это прерывание спроектировано для обработки катастрофических ситуаций, таких как сбой питания. В системе, обеспечивающей целостность данных, NMI может, например, выводить образ памяти на диск с целью избежать потери данных. В стандартной системе PC BIOS, NMI аппаратно вызывается в случае "ошибки четности" памяти. Когда это происходит, PC зависает. А теперь скажите мне, чувствуете ли вы себя в безопасности, зная, что будет потеряна вся ваша память, а не несколько бит?
Сопроцессор 8087/80287 подключен к линии NMI, и вызывает прерывание, когда встречает условие исключения (например, деление на 0). Обычно вы должны читать порт 64H, чтобы выяснить, не произошел ли сбой памяти, и если нет, выполнить FNSAVE, чтобы установить причину сбоя 8087, а затем FNCLX для устранения ошибки.
INT 03h - Прерывание по точке.
Вектор прерывания INT 03H используется отладчиками, чтобы перехватывать управление, когда программа достигает указанного пользователем адреса.
Код операции для INT 03H занимает один байт (0ccH), так что им можно временно замещать начало любой команды, не боясь запортить следующую команду.
INT 04H: Прерывание по переполнению.
Вектор INT 04H может использоваться как один из способов оптимизации программ, содержащих большое число арифметических операций.
Выданная после любой арифметической операции, команда INTO осуществляет проверку на арифметическое переполнение, и, если флаг переполнения взведен (OF=1), вызывает прерывание INT 04H.
Вам, возможно, встречался код типа следующего:
mov ax,var_1 add ax,var_2 into ;2-байтовая команда проверки на переполнение ... и т.д. ... ;либо не было переполнения, либо оно уже обработаноINT 05H - Печать экрана.
INT 05H, к ужасу фирмы Intel (которая считала его зарезервированным прерыванием), используется в PC для вызова программы ROM BIOS, печатающей экран.
Это прерывание вызывается обработчиком прерывания INT 09H при распознавании клавиши PrtSc. Оно может также вызываться из программы, и вы можете перехватывать это прерывание, если хотите предоставить свою программу печати экрана.
В "EGA" BIOS есть функция, заменяющая обычное средство Print-Screen программой, которая может обрабатывать различные экранные фонты. См. INT 10H Подф. 12H.
Команда DOS "Graphics" заменяет эту программу своей, которая выдает графический экран (в точечном представлении) на IBM-совместимый графический принтер.
INT 08h –
Зто аппаратно генерируемое прерывание (IRQ 0) вызывается по каждому тику часов реального времени PC. Часы тикают каждые 55мс, или около 18.2 раз в секунду. Код ROM-BIOS для этого прерывания обновляет значение часов на 0:046 сек. этот код также выключает двигатели гибких дисков по истечении примерно двух секунд без операций ввода/вывода.
Если вы хотите использовать это прерывание для обработки событий, зависящих от времени, вы должны предусмотреть код, сообщающий системе, когда прерывание закончено. Магическая последовательность такова:
mov al,20H ;послать сигнал конец-прерывания out 20H,al ; контроллеру прерываний 8259большинство программ используют для этого ROM-BIOS. например, вначале программа пользователя сохраняет вектор ROM-BIOS в переменной с именем cs:[saved_int8]. затем по каждому прерыванию INT 08H выполняется следующий код: