Узагальнена процедура обробки переривання.
Як відомо, переривання можуть бути ініційовані зовнішнім пристроєм ПК чи спеціальною командою переривання з програми. У будь-якому випадку, якщо переривання дозволені, то виконується наступна процедура:
1. У стек поміщається регістр флагів PSW.
2. Флаг включення/вимикання переривань IF і флаг трасування TF, що знаходяться в регістрі PSW, обнуляются для блокування інших маскованих переривань і виключення покрокового режиму виконання команд.
3. Значення регістрів CS і IP зберігаються в стеці слідом за PSW.
4. Обчислюється адреса вектора переривання, і з вектора, який відповідає номеру переривання, завантажуються нові значення IP і CS.
Коли системна підпрограма приймає керування, вона може знову дозволити масковані переривання командою STI (set interrupt flag, установити флаг переривань), що переводить флаг IF у стан 1, що дозволяє мікропроцесору знову реагувати на переривання, ініціалізовані зовнішніми пристроями, оскільки стекова організація дозволяє вкладення переривань одне в одного.
Закінчивши роботу, підпрограма обробки переривання повинна виконати інструкцію IRET (interrupt return), що витягає зі стека три 16-бітових значення і завантажує їх у покажчик команд IP, регістр сегмента команд CS і регістр PSW відповідно. Таким чином, процесор зможе продовжити роботу з того місця, де він був перерваний.
У випадку зовнішніх переривань процедура переходу на підпрограму обробки переривання доповнюється наступними кроками:
1. Контролер переривань одержує заявку від визначеного периферійного
пристрою і, дотримуючи схеми пріоритетів, генерує сигнал INTR (interrupt request), що є вхідним для мікропроцесора.
2.Мікропроцесор перевіряє флаг IF у регістрі PSW. Якщо він встановлений у 1, то переходимо до кроку 3. У противному випадку робота процесора не переривається. Часто говорять, що переривання замасковані, хоча вірніше говорити, що вони відключені. Маскуються (забороняються) окремі лінії запиту на переривання за допомогою програмування контролера переривань.
3.Мікропроцесор генерує сигнал INTA (підтвердження переривання). У відповідь на цей сигнал контролер переривання посилає по шині даних номер переривання. Після цього виконується описана нами раніше процедура передачі керування відповідній програмі обробки переривання.
Номер переривання і його пріоритет установлюються на етапі ініціалізації системи. Після запуску ОС користувач, як ми уже відзначали, може змінити таблицю векторів переривання, оскільки вона йому доступна.
Дата добавления: 2016-07-27; просмотров: 1599;