ПРЕРЫВАНИЯ И ПРОЦЕДУРЫ ПРЕРЫВАНИЯ


Существует необходимость автоматического выполнения некоторых процедур при возникновении определенных условий. Действия, вызывающие выполнения процедуры при возникновении ладанных условий, называются прерыванием, а выполняемая процедура — процедурой прерывания. Существуют два типа прерываний: внутренние, которые инициируются состоянием процессора или специальной командой, и внешние, которые вызываются сигналом, подаваемым на процессор от других устройств вычислительной системы. Типичные внутренние прерывания инициируются при делении на нуль или при выполнении специальной команды, например, отладочного прерывания INT 3. Типичные внешние прерывания связаны с вводом—выводом и возникают, когда устройство ввода-вывода ли внешнее запоминающее устройство требуют обслуживания о стороны процессора.

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

Независимо от вида прерывания, возникающие при прерывании действия называются последовательностью прерывания. Последовательность прерывания для процессора К1810ВМ86 показана на рис. 4.7.

clip_image001

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

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

Загрузка...