Существует необходимость автоматического выполнения некоторых процедур при возникновении определенных условий. Действия, вызывающие выполнения процедуры при возникновении ладанных условий, называются прерыванием, а выполняемая процедура — процедурой прерывания. Существуют два типа прерываний: внутренние, которые инициируются состоянием процессора или специальной командой, и внешние, которые вызываются сигналом, подаваемым на процессор от других устройств вычислительной системы. Типичные внутренние прерывания инициируются при делении на нуль или при выполнении специальной команды, например, отладочного прерывания INT 3. Типичные внешние прерывания связаны с вводом—выводом и возникают, когда устройство ввода-вывода ли внешнее запоминающее устройство требуют обслуживания о стороны процессора.
Процедура прерывания аналогична процедуре в том отношении, что переход к ней осуществляется путем приостановки (прерывания работы) текущей исполняемой программы, после выполнения процедуры прерывания происходит возврат в прерванную программу в место, где это прерывание произошло. Это означает, что процедура прерывания должна охранить содержимое не только используемых ею регистров, о также и состояние процессора при выполнении прерываемой программы (сохранить регистр флагов).
Независимо от вида прерывания, возникающие при прерывании действия называются последовательностью прерывания. Последовательность прерывания для процессора К1810ВМ86 показана на рис. 4.7.
00000h Ошибка
деления
00004h Трассировка
программы
(при TF=1)
0008h Немаскируемое
прерывание (сигнал NMI)
0000Ch Отладочное
прерывание
(команда INT3)
Прерывание переполнения
(команда INTO)
00010h
Прерывания, вызываемые
4*N по команде INT
или внешним
сигналом INTR
4*N+2 (тип прерывания
определяется
вторым байтом
команды или
003FCh передается
внешним
устройством)
SS:SP
(после прерывания)
…
SS:SP
. . . (до прерывания)
Рис. 4.7. Последовательность прерывания
Некоторыми типами прерываний управляют флажки IF и TF из регистра флагов процессора, которые для восприятия условия прерывания процессором должны быть установлены. Если условие для прерывания удовлетворяется и необходимые флажки установлены, процессор по завершении текущей исполняемой команды реализует последовательность прерывания:
1) текущее значение регистров FL (флаги), CS и IP включается в стек;
2) в регистры IP и CS помещается новое содержимое (адрес процедуры прерывания), которое определяется типом прерывания и извлекается из предопределенных ячеек памяти, определяемых типом прерывания;
3) флаги IF и TF сбрасываются, тем самым запрещается многократное выполнение последовательности прерывания по одному и тому же условию. Четыре байта (двойное слово), в которых находится новое содержимое IP и CS, называются вектором прерывания. Процессором поддерживаются 256 типов прерываний, каждому из которых выделяется соответствующий вектор. Первые 5 векторов резервируются для специальных целей. Например, прерывание типа 0 связано с ошибками деления и при возникновении переполнения при выполнении команд DIV или IDIV текущее содержимое IP, CS и FL включается в стек, а в IP и CS заносится адрес процедуры прерывания из ячеек памяти OOOOOh и 00002Н.
Для запрещения выполнения последовательности прерывания используется флажок IF, который управляется командами STI и CLI. Нулевое состояние флага запрещает (маскирует) прерывания. Действие флага IF распространяется на все типы прерываний, кроме немаскируемого прерывания (тип 2), которое инициируется сигналом, подаваемым на вход процессора NMI.
Выполнение последовательности прерывания процессором может быть вызвано двумя причинами: выполнением команды программного прерывания INT или подачей сигнала прерывания на вход процессора INTR с последующим выполнением процессором специального цикла шины для чтения типа прерывания, передаваемого устройством, установившим сигнал INTR по линиям DO-D7. К командам программного прерывания относятся следующие команды: INT3, INTO и INT п, где n — тип прерывания. Форматы перечисленных команд приведены в приложении. Каждая процедура прерывания должна заканчиваться командой возврата из прерывания IRET, которая восстанавливает содержимое регистров IP, CS и FL из стека.
4.3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ N 4
Перед началом выполнения работы изучите порядок ее проведения, получите индивидуальное задание и ознакомьтесь с ним.
