Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка.doc
Скачиваний:
20
Добавлен:
08.11.2018
Размер:
1.15 Mб
Скачать

4.3 Організація переходу до програми оброблення переривання

Вектор переривання - вектор початкового стану перериваючої програми. Він містить всю необхідну інформацію для переходу до перериваючої програми, в т.ч. її початкову адресу( у IBM PC це тільки початкова адреса ) . Кожному запиту переривання відповідає свій вектор переривання. Вектори переривання зазвичай знаходяться в спеціально виділених фіксованих елементах пам'яті. ( У IBM PC 1024 перших байта =256 векторів* 4байти адреси). Вектори переривань зберігаються в елементах пам'яті з молодшими адресами, довжина кожного вектора - 2 слова.

Приклад: Вектор переривання 5h має адресу (5*4=20) 20 =14h - debug - D 0000:0014 L 4 54 FF 00 F0

Вектор переривання у цьому випадку є адресою програми оборки переривання F000:FF54.

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

При переході до перериваючої програми поточний вектор стану програми, що переривається, передається з відповідних регістрів в пам'ять (наприклад, в стек) .У IBM PC стек при переході до перериваючої програми виглядатиме таким чином:

Вершина SP - Old IP( молодша частина адреси повернення) Old CS( старша частина адреси повернення) Old Flag Register (старий регістр прапорів)

Після цього відбувається завантаження в регістри процесора вектора переривання.

4.4 Пріоритети

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

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

Відносний пріоритет. Запит з відносним пріоритетом є першим кандидатом на обслуговування після завершення виконання поточної програми. Тобто такий запит по рівню пріоритета не перевершує програму, що виконується.

Жорстко фіксований пріоритет - визначається порядком приєднання ліній сигналів запитів до входів системи переривання. При появі декількох запитів переривання першим сприймається запит, що поступив на вхід з меншим номером.

Є можливість програмно керувати пріоритетом перериваючих програм. Один зі способів – використання маски переривань.

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

4.5 Лабораторна робота 6 Тема: Стек і його використання для виклику процедур

Мета: Ознайомитися з використанням стека під час виклику процедур, обробці переривань.