6. Типи переривань 16-розрядних мікропроцесорів

Процесор i8086 може обробляти до 256 типів переривань. Кожному перериванню відповідає свій век­тор — подвійне слово, що містить адресу CS: IP під­програми, що викликається. Під вектори переривань у загальному просторі адрес пам'яті відводиться 1 Кбайт, починаючи з нульової адре­си (рис. 7).

 

Рисунок 7 -  Карта векторів пере­ривань

 

Під час переходу на підпрограму обробки перери­вань INT п (п — тип переривання) процесор переміщує у стек вміст регістрів IP, CS, регістр прапорців F і скидає прапорець дозволу перериван­ня IF; обчислює адресу 4 х п і перше слово за цією адресою переміщує у IP, друге — у CS. Послідовність цих дій еквіва­лентна командам:

  

PUSHF

Запам'ятовування у стеку пра­порців

CALL FAR i_proc_4n

Далекий виклик підпрограми об­робки переривання

Скидання прапорця переривання IF не дозволяє перерва­ти виконання підпрограми обробки переривання до її завер­шення або виконання команди дозволу STI. Останньою командою підпрограми обробки переривання є команда ІRET. За цією командою процесор вибирає зі стеку адресу повер­нення (адресу команди, наступної за командою ІNT) і вміст регістра прапорців.

Рисунок 8 - Типи переривань

 

Типи переривань показано на рисунку 8. Переривання поді­ляють на зовнішні апаратні та внутрішні. Запити IRQ і зовнішніх апаратних переривань надходять до системи пере­ривань або на вивід немаскованого переривання NMI МП. Система переривання формує сигнал INTR маскованого пе­реривання МП. Зазначимо, що масковане переривання відрізняється від немаскованого тим, що перше може бути заборонено програмно — командою скидання прапорця дозволу переривань IF. У цьому разі під час надходження запитів переривання вони будуть ігноруватися. Внутрішні перери­вання процесора поділяють на програмні та апаратні. Дже­релами внутрішніх програмних переривань (рис. 10) є помилка ділення (тип 0), покроковий режим (тип 1) і коман­да INTO (тип 4).

Внутрішні програмні переривання І NT п та INT З викону­ються за командами переривання і дозволяють викликати підпрограми обробки переривань (наприклад, сервісні підпро­грами BIOS і DOS) без застосування дальніх викликів. На відміну від ІNTп, переривання ІNT3 є однобайтовою командою і зазвичай використовується для передавання керування підпрограмі-налагоджувачу. Слід зазначити, що виконання програмних переривань не залежить від прапорця дозволу переривань IF. Внутрішні апаратні переривання процесора виникають у таких випадках:

• під час ділення на нуль (тип 0);

• за встановленого прапорця трасування (тип 1). У цьому ра­зі переривання відбувається після виконання кожної команди;

• після команди INTO (тип 4), якщо встановлений прапо­рець переповнення OF.

Апаратні переривання виникають у разі активного рівня сигналів на контактах MU-NMI (немасковане переривання — тип 2) і INTR (масковані, переривання типи 5 — 255). Маско­вані переривання виконуються за встановленого прапорця IF. Під час переходу до підпрограми обробки апаратного переривання процесор формує два цикли підтвердження переривання один за одним, в яких генерується сигнал . За другим імпульсом  контролер переривань передає по шині даних номер вектора переривання п. Далі дії процесо­ра аналогічні виконанню програмного переривання. Оброб­ка поточного переривання може бути перервана немаскованим перериванням або іншим маскованим перериванням ви­щого пріоритету тоді, якщо підпрограма-обробник встановить прапорець дозволу переривання IF. Немасковане переривання виконується незалежно від стану прапорця IF.