Мікропроцесори 8086/88 підтримують механізм переривань. В загальному вигляді це наявність в апаратурі спеціальних засобів, за допомогою яких виконання поточної програми призупиняється та процесор переходить до так званої програми обслуговування переривань (Interrupt Servise Routine - ISR). Механізм переривань дозволяє організувати виконання тих чи інших функцій ядра та швидку реакцію процесору на виникнення будь-яких зовнішніх подій: помилок в арифметичних операціях, активізації периферійних пристроїв тощо.
Мікропроцесори 8086/88 підтримують 256 переривань. Кожне з них має власний номер та ISR. Адресу точки входу в ISR називають вектором переривання, який зберігається в таблиці векторів переривання (ТВП). Код ISR може розташовуватись в будь-якому місті пам’яті. Тому вектор переривання займає 4 байти: 2 байти відводиться на значення сегментного регістру, що встановлюється в CS (старше слово), 2 байти - на значення зміщення, що встановлюється в IP (молодше слово). Вся ТВП займає 256*4=1024 байт та розміщується в оперативній пам’яті, починаючи з адреси 0000:0000.
При виникненні переривання процесор розміщує в стек 6 байт: поточне значення CS, поточне значення IP (пара цих регістрів визначає точку, з якої виконання програми, що переривається, поновлюється), а також 2 байти прапорів процесору. В CS та IP встановлюються значення із ТВП, які задають адресу початку ISR. Перериванню 0 відповідає вектор переривання за адресою 0000:0000, перериванню 1 - за адресою 0000:0004h, перериванню 2 - за адресою 0000:0008h і т.д.
ISR- це програма, яка побудована з дотриманням спеціальних правил:
1) з самого початку вона зберігає всі регістри процесору, які надалі будуть змінюватись;
2) перед завершенням регістри, що змінені поновлюють своє попереднє значення;
3) останньою інструкцією ISR, як правило, є інструкція повернення з переривання IRET. Виконуючи IRET, процесор вивільнює із стека 6 слів інформації, які послідовно розміщує в регістри IP, CS і регістр прапорів, повертаючись до виконання перерваної програми.
Часто обробникам програмних переривань необхідно передати будь-які значення, які задають конкретну дію, характеристики ситуації, та отримати будь-які результати по завершенню виконання ISR. Для такого обміну даними використовують внутрішні регістри процесору.
Деякі вектори переривання в ТВП насправді задають не точки входу в ISR, а використовуються для зберігання важливої системної інформації: адрес даних та таблиць. Крім цього, за деякі вектори «закріплені» ISR, які не виконують ніяких дій. Вони служать заглушками для підключення додаткових обробників. Так, наприклад, в нормальному стані обробник переривань 1Ch не виконує ніяких дій та містить єдину інструкцію повернення з переривання IRET. Переривання 1Ch викликається з меж ISR таймеру. Переривання від таймера, в свою чергу, генерується 18.2 рази в секунду апаратурою системного таймера. Є й інші обробники-заглушки які викликаються при функціонуванні ISR BIOS та MS-DOS.
![]() |
![]() |
![]() |