Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
архитектура 2.docx
Скачиваний:
6
Добавлен:
28.10.2018
Размер:
583.61 Кб
Скачать

8. Прерывания ibm pc. Вектор прерывания.

Прерывание – переход на спец. подпрограмму (обработчик прерывания) с после- дующим возвратом в прерванную программу.

Виды прерываний:

1)Программные прерывания. Вызываются командой Int номер прерывания.

mov AH, 4Ch; завершает работу программы

int 21h и передает управление ОС.

2)Исключения или ловушки. Формируются блоками микропроцессора. Например, при делении на 0. Фирма Intel для этого вида прерываний выделила первые 32 вектора.

3)Аппаратные прерывания. Запросы формируются контроллерами внешних уст- ройств или другими устройствами компа, например, системный таймер.

Вектор прерывания хранит логический адрес обработчика прерываний. Разрядно- сть вектора прерываний 4 Б.

Младшее слово хранит относительный адрес, старшее слово хранит селектор.

Для векторов прерывания в нулевом сегменте выделяется область с адресами 00000h- 003FFh.

Max. кол-во векторов – 256.

Векторы прерывания в ОП размещает программа Post.

9. Функции контроллера прерываний.

1)Принимает запросы прерываний от внешних источников, поступающих по линии IRQ.

2)Программное маскирование поступивших запросов через регистр IMR.

3)Присвоение фиксированных или циклически изменяемых приоритетов к входам ПКП.

4)Формирует и передает МП по ШД код команды Call и адрес вектора прерываний.

Call – переход на подпрограмму.

10. Реакция системы прерываний на запрос irq.

Запрос поступил от контроллера НГМД на 6 вход ведущего ПКП. 6 разряд в регистре IRR устанавливается в 1 (IRR[6]=1). ПКП проверяет содержимое 6 разряда регистра IMR. Если 6 разряд IMR = 0, ПКП разрешено реагировать на 6 вход.

Запрос поступает на шифратор приоритета. Если запросов с более высоким приорите- том нет, шифратор приоритета формирует сигнал на выходе INT ПКП.

Запрос поступает на вход INT R МП. МП проверяет состояние флага прерывания IF. Если IF = 1, МП разрешено реагировать на запрос.

МП завершает выполнение текущей команды и переходит на выполнение цикла ма- гистрали подтверждения прерываний. На линии, указывающей тип цикла магистра- ли (M/IO#, D/C#, W/R#), выдает код 000. По этому коду системный контроллер фо- рмирует сигнал на выходе INT A ПКП. ПКП обнуляет 6 разряд в регистре ISR. По шине данных ПКП передает МП код команды Call и адрес вектора прерывания 0Е (адрес вектора = БАвектора + № входа = 08h+6=0Eh).

Т.к. вектор прерывания имеет разрядность 4 Б, полученный от ПКП адрес вектора МП умножаем на 4 (сдвиг влево на 2 разряда), и получаем относительный адрес вектора прерывания в памяти.

ОА вектора прерываний = 0Eh*4h=38h.

00001110

000011000

ЛА вектора прерывания в памяти:

0000h : 0038h.

МП считывает содержимое вектора прерывания. ОА загружает в счетчик команд IP, селектор загружает в CS.

Диспетчер памяти МП рассчитывает физ.адрес первой команды обработчика пре- рываний. И начинает выполнять обработчик прерываний.

Пример:

1)Ведомый ПКП подключен к 6 входу ведущего ПКП, не автоматическое завершение прерываний, запрос по уровню, шина не буферизирована, вложенность приорите- тов запросов ведомого и ведущего ПКП. Базовые адреса векторов прерываний ве- дущего ПКП 030h, ведомого 040h; адреса ведущего ПКП 300h и 301h, ведомого ПКП 400h и 401h. Составить программу инициализации ведомого ПКП.

IRQ6

ICW1

7 6 5 4 3 2 1 0

0 0 0 1 1 0 0 1

ICW2

78 64 52 41 38 24 12 01

0 1 0 0 0 0 0 0 ; 40h

ICW3

7 6 532 416 38 24 12 01

0 0 0 0 0 1 1 0 ; 06h

ICW4

7 6 5 4 3 2 1 0 ; 11h

0 0 0 1 0 0 0 1

CLI ; IF = 0

mov AL , 00011001b

mov DX , 400h

out DX , AL

; ICW2

mov DX , 401h

mov AL , 40h

out DX , AL

; ICW3

mov AL , 06h

out DX , AL

; ICW4

mov AL , 11h

out DX , AL

STI

END

2)Запрос на аппаратное прерывание поступил на вход 2 ведомого ПКП. Опреде- лить:

1)адрес вектора прерывания от ПКП.

2)адрес вектора прерывания в памяти.

3)содержимое вектора прерывания, если логический адрес первой команды под программы обработки прерывания 0C20h : 00D0h.

1)БАвектора + № входа = 40h + 2 = 42h

2)42h * 4h = 108h

3)