Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Система прерываний.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
129.02 Кб
Скачать

Команды, работающие по прерываниям:

По команде INT – программное прерывание - должна быть выполнена следующая последовательность операций:

(SP)← (SP) -2

(Вершина стека) ← (FLAG) ; запоминание состояния регистра флагов в стеке

(SP)← (SP) -2

(Вершина стека) ← (CS)

(SP)← (SP) -2

(Вершина стека) ← (IP) ; сохранение адреса возврата CS:IP в стеке

(IF) ← 0 ; запрет на выполнение маскируемых прерываний

(TF) ← 0 ; запрет пошагового режима работы

(CS) ← (TYPE x 4 +2) ; передача управления на первую команду

(IP) ← (TYPE x 4) ; подпрограммы обработки данного прерывания.

(Отличие от вызова обычной подпрограммы – сохраняется не только CS и IP, но и FLAG.)

Итак, по команде INT выполняется передача управления подпрограмме обработки прерываний, адрес которой генерируется в соответствии с типом прерываний. Текущее состояние FLAG, CS, IP заносится в стек, что позволяет осуществлять выход из процедуры обработки прерывания по команде IRET с последующей передачей управления очередной выполняемой команде. Флаги IF и TF сбрасываются, что предотвращает возможность осуществления маскируемых и пошаговых прерываний. Абсолютное значение адреса вектора прерывания, соответствующего типу прерывания, который определяется операндом команды INT, вычисляется умножением типа прерывания на 4 (т.к. вектора располагаются в ОП с адреса 00000h, занимают 1 Кбайт, под каждый вектор отводится 4 байт). Содержимое двойного слова этой области памяти передается, соответственно, в регистры IP и CS.

Iret – возврат из прерывания.

(IP)← (вершина стека)

(SP)← (SP) +2

(CS)← (Вершина стека)

(SP)← (SP) +2

(FLAG)← (Вершина стека)

(SP) ← (SP)+2

Осуществляет обратную передачу управления в то место, с которого произошло прерывание, восстанавливая по информации из стека содержимое регистров IP, CS и регистра флагов FLAG. Каждая процедура обработки прерываний должна заканчиваться командой IRET. Влияние на флаги: флаги восстанавливает.

Машинный код CF. Операндов нет.

Таблица 2. Соответствие векторов прерываний устройствам компьютера для машин типа IBM PC/AT.

Уровень прерывания

Вектор прерывания

Устройство

IRQ0

08h

Таймер

IRQ1

09h

Клавиатура

IRQ2

0Ah

Резерв для подключения нестандартных устройств

IRQ8

70h

КМОП микросхема

IRQ9

71h

Перенаправлено на int 0Ah

IRQ10

72h

Зарезервировано

IRQ11

73h

Зарезервировано

IRQ12

74h

Мышь (PS/2)

IRQ13

75h

Исключение сопроцессора

IRQ14

76h

Жесткий диск

IRQ15

77h

Зарезервировано

IRQ3

0Bh

Последовательный порт COM1

IRQ4

0Ch

Последовательный порт COM2

IRQ5

0Dh

Жесткий диск

IRQ6

0Eh

Гибкий диск

IRQ7

0Fh

Принтер LPT1