
- •Лабораторна робота n6
- •Зміст роботи
- •Довідкові дані
- •Суть переривань від зовнішніх пристроїв.
- •Використання апаратних переривань, пріоритети.
- •Вимоги до процедур обробки переривань.
- •"Перехоплення" переривань.
- •Повторне входження
- •Організація однопроцесорних мультипрограмних систем.
- •Порядок виконання роботи.
- •Ознайомлення з прикладом організації обробки переривань від зовнішніх пристроїв
- •Ознайомлення з прикладом організації мультипрограмного режиму
- •Виконання варіанту завдання
- •Послідовність дій для зупинки задачі.
- •Послідовність дій для зняття задачі з виконання.
- •Початковий модуль моделі мультипрограмної системи
- •Int 21h ; закінчити роботу
- •Завдання на лабораторну роботу.
- •Питання для перевірки:
Лабораторна робота n6
Мета роботи
Вивчення методики програмування переривань від зовнішніх пристроїв, ознайомлення з організацією мультипрограмних систем.
Необхідні апаратні і програмні засоби:
ПЭОМ на мікропроцесорі 80х86, Pentium ;
операційна система Windows, додаток Far;
макроассемблер МАSM (файл masm. exe), або TASM (файл tasm. exe)
редактор зв'язків (компоновщик) LINK (файл link. exe), або TLINK (файл tlink.exe)
налагоджувач AFD (файл afd. exe), або TDEBUG (файл td. exe),;
редактор текстів - додаток Блокнот.
Інформаційні матеріали:
лекції по курсу "Системне програмування";
посібник з мови Ассемблера, (наприклад, кн. ASSEMBLER. Учебный курс. В.Юров, С.Хорошенко,Санкт-Петербург,1999,Урок 15, Прерывания. стор.377-406);
посібник з програмування зовнішніх пристроїв ПЕОМ (наприклад, кн. Assembler. С.В.Зубков, М.,1999, Раздел 5.10 "Программирование на уровне портов ввода-вывода", п. 5.10.1 "Клавиатура", п.5.10.5 "Таймер", п.5.10.10. "Контроллер прерываний"
Зміст роботи
В даній лабораторній роботі студенти на прикладі процедур, поданих в початковому програмному модулі, вивчають методику створення та використовування процедур обробки переривань від зовнішніх пристроїв, методику безпосередньої роботи із зовнішніми пристроями ПЕОМ через регістри зовнішніх пристроїв, методику організації процедур із повторним входженням, методику організації мультипрограмних систем. Результатом виконання лабораторної роботи є проведення експериментів на моделі мультипрограмної системи та її модифікація згідно з завданням.
Довідкові дані
Суть переривань від зовнішніх пристроїв.
Послідовність дій, які відбуваються в ПЕОМ при обробці переривань від зовнішніх пристроїв полягає в наступному:
В результаті функціонування зовнішнього пристрою (наприклад, при натисканні або відтисканні клавіш клавіатури, або із системного таймера через проміжки часу приблизно в 65,5 млсек) на контролер переривання поступає сигнал, в результаті якого контролер може сформувати для процесора сигнал "Запит переривання".
Процесор закінчує виконання чергової команди програми (в деяких випадках, в залежності від чергової команди процесор безумовно виконує ще одну команду - див. п.f).
Процесор аналізує ознаку дозволу на переривання (if), яка міститься в регістрі ознак (flags). Якщо if=0 процесор ігнорує запит і продовжує виконувати програму
Якщо if=1 процесор подає на контролер переривання сигнал "Підтвердження запиту"
Одержавши сигнал "Підтвердження запиту", контролер переривань передає процесору байт даних N (N - номер вектора переривань), значення якого ідентифікує зовнішній пристрій, наприклад в MS-DOS N=8 для таймера і N=9 для клавіатури.
Процесор записує в стек вміст регістра ознак, після чого встановлює if=0, та записує в стек вміст регістрів CS та IP. При запису в стек використовується логічна адреса SS:SP, тобто стек програми, яка переривається. Якщо запит на переривання з'явиться під час виконання команди запису в сегментний регістр SS (наприклад, під час виконання команди MOV SS,AX), то в результаті повна логічна адреса стека може бути помилковою, оскільки залишиться "старе" значення SP. Для унеможливлення такої помилки в разі появи сигналу "Запит переривання" під час виконання любої команди запису в сегментний регістр SS, сигнал "Підтвердження запиту" формується після виконання іще однієї команди, якою, звісно, повинна бути команда завантаження регістра SP. А взагалі заміну повної логічної адреси стека рекомендується виконувати за допомогою команди LSS SP,mem32, де mem32 - адреса повної логічної адреси нового стека.
Процесор завантажує регістр IP значенням слова пам'яті по адресі 0000:N*4, а регістр CS - значенням слова пам'яті по адресі 0000:N*4+2. Таким чином в реальному режимі перші 1000 байт ОЗП призначаються для таблиці, яку називають таблицею векторів переривань. Таблиця містить 256 рядків по 4 байта на рядок. Кожний рядок таблиці переривань використовується для зберігання повної логічної адреси (слово для сегментної складової та слово для зміщення в сегменті) процедури обробки переривань. Самі ж процедури обробки переривань можуть розміщуватись в любій області ОЗП. Оскільки байт N ідентифікує зовнішній пристрій, то в свою чергу рядки (вектори) також можуть ідентифікувати зовнішні пристрої
Процедура обробки переривань повинна закінчуватись командою IRET. Ця команда відновлює із стека вміст регістра ознак, включаючи попередній стан ознаки дозволу на переривання (if), який згідно з п.d) повинен дорівнювати 1, а також завантажує зі стека регістри IP та CS.