Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод вказів лаборат роб Опер сист.doc
Скачиваний:
11
Добавлен:
08.02.2016
Размер:
1.41 Mб
Скачать
    1. Лабораторна робота n6. Переривання

Мета роботи: ознайомитися з основними принципами механізму переривань.

КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ

ПЕРЕРИВАННЯ - це події, що змушують центральний процесор перервати виконання поточної роботи і перейти на виконання програми, називаної ОБРОБЛЮВАЧЕМ ПЕРЕРИВАННЯ. Перехід цей здійснюється за малий час за допомогою спеціально розроблених апаратних засобів.

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

Звичайно переривання викликаються подіями зовнішніми стосовно ЦП і потребуючого негайних дій. Наприклад:

- завершення операції введення/висновку;

- виявлення апаратного збою;

- "катастрофа" (відмовлення харчування).

Більшість сучасних процесорів підтримують механізм ТИПІВ і РІВНІВ ПЕРЕРИВАННЯ. Кожному типу звичайно відповідає осередок у пам'яті, називана ВЕКТРОМ ПЕРЕРИВАННЯ, що визначає місце розташування програми обработчтка переривання даного типу. Концепція типів переривання дозволяє призначати прерывниям пріоритети. Переривання групуються по рівнях, маю щим однаковий пріоритет.

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

Процесори сімейства іAP80x86 підтримують 256 типів переривань, викликуваних подіями трьох груп:

- внутрішні апаратні переривання;

- зовнішні апаратні переривання;

- програмні переривання.

Кожному типу прерывния відповідає свій номер.

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

Зовнішні апаратні переривання инициализируются контролерами периферійного чи устаткування співпроцесорами.

Програмні переривання. Будь-яка програма може ініціювати синхронне програмне переривання шляхом виконання команди Іnt із указівкою номера переривання, наприклад,

Іnt 10h

Розподіл номерів програмних переривань умовно і не закріплено апаратно.

Нижні 1024 байта системної пам'яті звуться ТАБЛИЦІ ВЕКТОРІВ ПЕРЕРИВАНЬ. Вектор займає 4 байти: сегмент і зсув відповідного оброблювача переривання.

ЦП, одержавши чи сигнал команду переривання, поміщає в стек уміст флагового регістра, очищає флани TF і ІP, заносить у стек уміст регістрів CS, ІP і блокує систему переривань. Потім за допомогою 8-бітового числа - номера переривання, установленого на внутрішній шині, витягає з таблиці векторів адреси CS і ІP і відновляє роботу з цієї адреси.

Звичайно оброблювач розблокує систему переривань, зберігає регістри, що будуть їм використовуватися й обробляє переривання. Наприкінці оброблювача повинна стояти команда ІRET - повернення з переривання. Ця команда відновлює первісне значення флагового регістра , CS і ІP.

Як приклад розглянемо, як використовувати команд- ные переривання для висновку інформації на екран дисплея.

Усі необхідні екранні операції можна виконати за допомогою команди Іnt 10h, що передає керування безпосередньо в BІOS. ПЕРЕД викликом переривання Іnt 10h необхідно задати в регістрі AH номер функції выода. В інших регістрах варто задати необхідні цієї функції параметри. Номера подфункций, їхні параметри, а також регістри, у які потрібно їх заносити приведені в довідковій інформації з BІOS, наприклад [2].

Для виконання деяких більш складних операцій існує переривання більш високого рівня Іnt 21h, що спочатку передає керування в DOS.

Екран можна представити у виглядідвомірного простору з адресуемыми позиціями, у кожну з який може бути встановлений чи курсор виведений символ. Відеомонітор, наприклад, може мати 25 рядків (нумеруемых від 0 до 24) і 80 стовпців (нумеруемых від 0 до 79). Нумерація рядків виробляється, починаючи з лівого верхнього кута екрана вниз, нумерація стовпців -починаючи також з лівого верхнього кута екран вправо.

ОЧИЩЕННЯ ЕКРАНА.

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

Початкове значення рядка і стовпця заноситься в регістр CX, кінцеве - у DX, значення 07 - у регістр BH, 0600h - у AX.

У наступному прикладі виконується очищення всього екрана.

MOV AX, 0600H ;AH=06 (прокручування) AL=00 (весь екран)

MOV BH, 07 ;нормальний атрибут (чорно/білий)

MOV CX, 0000 ;верхня ліва позиція (CH=00 - номер рядка, CL=00 - номер стовпця)

MOV DX, 184FH ;нижня права позиція (DH=18 - номер рядка, DL=4F - номер стовпця)

ІNT 10H ;передача керування в BІOS

УСТАНОВКА КУРСОРУ. Команда Іnt 10h містить у собі установку курсору в будь-яку позицію екрана. Нижче приведений приклад установку курсору на 5-ую рядок і 12-тый стовпець.

MOV AH, 02 ;подфункция установки курсору

MOV BH, 00 ;екранна сторінка 0

MOV DH, 05 ;рядок 05

MOV DL, 12 ;стовпець 12

ІNT 10H ;передача керування в BІOS

ВИСНОВОК НА ЕКРАН У БАЗОВІЙ ВЕРСІЇ DOS.

Висновок на екран у базовій версії DOS вимагає визначення текстового повідомлення в сегменті даних, установки в регістрі AH значення 09 (виклик функції DOS) і вказівки команди Іnt 21h. У процесі виконання операції кінець повідомлення визначається по обмежнику (знак долара '$'), як показано нижче:

NAMPRMP DB 'Це повідомлення','$'

........

MOV AH, 09 ;подфункция відображення рядка на екран

LEA DX, NAMPRMP ;завантаження адреси повідомлення в регістр DX

ІNT 21H ;виклик функції DOS

Знак обмежника '$' можна записувати безпосередньо після символьного рядка, як показано в прикладі, усередині рядка 'Це повідомлення$' чи в наступному операторі DB '$'. Використовуючи дану операцію, не можна вивести на екран символ долара. Якщо символ долара буде відсутній наприкінці виведеного повідомлення, то на екран будуть виводитися всі наступні симводы, поки код знака '$' не зустрінеться в пам'яті.

Команда LEA завантажує адресу області пам'яті NAMPRMP у регістр DX для передачі в DOS адреси виведеної інформації.

ПІДГОТОВКА ДО РОБОТИ

1. Вивчити короткі теоретичні відомості і рекомендовану літературу.

2. Написати текст програми, яка б очистила екран дисплея і вивела в центрі екрана номер Вашої групи і Ваше прізвище, ім'я і по батькові.

РОБОЧЕ ЗАВДАННЯ

Набити підготовлену програму, странслировать її, налагодити. Памятайте, що при налагодженні програми налагоджувачем debug.exe (debug.com) для виконання команди переривання необхідно використовувати команду групового проходу P.

ВИМОГА ДО ЗВІТУ

У звіті зафіксувати листинг файлу з налагодженою програмою.

КОНТРОЛЬНІ ПИТАННЯ

1. Що таке переривання.

2. Що таке вектор переривання.

3. На які групи підрозділяються типи переривань процесорів іAP80x86.

4. Що являє собою таблиця векторів переривань.

5. Яка послідовність обробки переривання.

6. Яка команда повинна стояти наприкінці оброблювача переривань.

7. Який номер програмного переривання для висновку на екран засобами BІOS.