1.3.1          Поняття переривання та обробника переривань.
Таблиця векторів переривань

Мікропроцесори 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.