Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга_Вычисл техн и микропроц_2 автора_130709.doc
Скачиваний:
9
Добавлен:
07.05.2019
Размер:
5.26 Mб
Скачать

7.2.4 Режим переривань мп і8086

Вхідний контроль:

  1. Які режими роботи МП Ви знаєте?

  2. З якого типу периферійними пристроями повинен працювати МП у режимі переривань?

Переривання – це режим мікропроцесора, коли він тимчасово перериває виконання поточної програми і переходить до підпрограми обробки переривань, яка є більш терміновою або важливою. Після повернення з підпрограми процесор продовжує виконувати поточну програму. Для цього у стеку запам’ятовується адреса повернення (CS та IP), а також вміст регістра прапорців FLAGS, які потрібні для виконання також підпрограми обробки переривань. Значення IP перед завантаженням у стек коригується до адреси команди, перед якою МП почав обслуговувати переривання. Це пов’язано з наявністю у процесорі конвеєра команд, завдяки якому IP адресує команди з випередженням. Слід зазначити, що вміст регістрів CS, IP та FLAGS запам’ятовується у стеку автоматично, а вміст усіх інших регістрів, які будуть задіяні потім у підпрограмі, треба запам’ятати на її початку, а потім наприкінці її вивантажити зі стека.

Переривання за видами можуть ідентифікуватись як зовнішні і внутрішні, апаратні та програмні, масковані (ті, що можна забороняти) і немасковані. Всього МП підтримує 256 типів переривань. Можливі джерела переривань показані на рис. 7.13.

Рисунок 7.13 – Джерела переривань

Зовнішні переривання можуть виникати як реакція на запит переривань від зовнішніх пристроїв, вони є апаратні. Запити на масковані переривання надходять від периферійних пристроїв на контролер переривань, який формує вхідний сигнал МП INTR. У відповідь МП, якщо переривання дозволені програмно, видає сигнал підтвердження переривань INTA, після чого контролер посилає у МП по шині даних байт, який визначає тип переривання і МП його обробляє. Якщо програмно переривання заборонені, МП ігнорує запит, і продовжує виконання програми.

Запити на немасковане переривання надходять по входу NMI і використовуються для переривання роботи МП у таких випадках, як аварійне вимкнення живлення, помилка пам’яті тощо. Реакція на немасковані переривання не залежить від їх програмного дозволу. У більшості випадків МП реагує на запит будь-якого переривання після закінчення поточної команди. Винятком є строкові команди та команда WAIT, які можуть бути перервані під час виконання.

Пріоритети переривань наведені у табл. 7.2.

Таблиця 7.2 – Пріоритети переривань

Вид переривання

Тип переривання

Пріоритет

Час виклику

підпрограми

переривань

За командою “помилка ділення”

За командою INTn

За командою INT0

За командою INT3

По входу NMI

По входу INTR

За прапорцем TF

0

5-31

4

3

2

32-255

1

1

1

1

1

2

3

4

50

51

53

52

50

61

50

Оскільки зовнішні пріоритети можна маскувати, це може призвести до перерозподілу призначених різним перериванням пріоритетів. Немасковані переривання, як такі, що мають найвищий пріоритет, можуть маскувати зовнішні до закінчення обслуговування немаскованого переривання. Обслуговування запиту маскованого переривання може бути дозволено програмно шляхом установлення прапорця IF.

Внутрішні переривання можуть бути апаратними та програмними.

Переривання через помилку ділення (тип 0) генеруються МП відразу після виконання команд ділення, якщо формат частки перевищує формат приймача, або при діленні на нуль.

Покрокове переривання (тип 1) виробляється автоматично при установленні прапорця TF після виконання кожної команди, яка змінює вміст сегментного регістра, або у режимі налагодження. Підпрограма обробки покрокового переривання здійснює індикацію внутрішніх регістрів МП та деяких комірок пам’яті.

Переривання за командою INT3 реалізуються у вказаних точках програми.

Переривання за переповненням (тип 4) генерується після виконання команди INTO, якщо установлено прапорець ОF.

Переривання, яке визначається користувачем при складанні програм, здійснюється двобайтовою командою INTn.

Програмні переривання дозволяють процедурам викликати одна одну через таблицю вказівників векторів (адрес) переривань, яка розміщена у пам’яті фіксовано, починаючи з адреси 00000Н до адреси 003FFН, і займає 1 кбайт пам’яті (рис. 7.14).

Кожний елемент таблиці вміщує два слова, які визначають початкову логічну адресу підпрограми. Слово з більшою адресою вміщує базову адресу сегмента, а слово з меншою адресою – зміщення підпрограми від початку кодового сегмента. При переході на підпрограму адреса сегмента завантажується у регістр CS, а зміщення – у регістр IP. Розмір кожного елемента таблиці складає 4 байти, МП обчислює адресу кожного елемента шляхом множення потрібного n на 4. При адресуванні елементів таблиці значення жодного сегментного регістра не використовується. На початку при виконанні підпрограм за командою INTn зовнішні переривання забороняються, але сама підпрограма може їх дозволити. Немасковані та внутрішні переривання можуть перервати виконання підпрограми, але у ній не припустимі переривання того типу, який вона обслуговує.

Рисунок 7.14 – Таблиця вказівників векторів переривань

Внутрішні апаратні переривання у більшості моделей мікропроцесорів обумовлені перш за все роботою системного таймера.

Контрольні питання:

  1. Які типи переривань підтримує МП І8086?

  2. Де зберігаються вказівники векторів переривань у МП І8086?

  3. До якого типу переривань призведе вимкнення живлення або помилка пам’яті?

Контрольні питання підвищеної складності:

  1. Визначіть фізичну адресу сегмента таблиці переривань типу 20.

  2. З якою метою забороняються зовнішні переривання на початку виконання підпрограм оброблення переривань?