Обробка переривань.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра САПР

Інформація про роботу

Рік:
2007
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
КН-24

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ НУ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра САПР Лабораторна робота №7 «Обробка переривань» Виконав: Ст.гр.КН-24 Перевірив: Колесник К.К. Львів 2007 МЕТА РОБОТИ Мета роботи - вивчення основ організації та реалізації апаратурних та програмних переривань. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ В процесі виконання деякої програми іноді виникає необхідність негайної обробки деякої ситуації, яка ідентифікується апаратурними сигналами чи програмно (наприклад, натискання клавіші клавіатури, отримання сигналу від таймера, програмне переривання (int 21h). Відповідно до причини, переривання бувають програмні та апаратурні. Особливістю апаратурних переривань є відсутність часової координації з програмою, що виконується. Крім того, апаратурні переривання в першу чергу потребують програмної обробки. В процесі виникнення і обробки переривання процесор призупиняє виконання програми, запам’ятовує місце призупинки, переходить на програму обробки відповідного переривання, а по її завершенню відновлює виконання перерваної програми з запам’ятованого місця. Такою є схема обробки переривання. Точка переривання (адреса CS:IP) запам’ятовується в стеці разом з регістром прапорців. Потім в CS:IP завантажується адреса точки входу програми обробки переривання і їй передається управління. Програми обробки переривань іноді називають драйверами переривань. Програма обробки переривань закінчується оператором IRET (повернення із переривання), яка завершує процес обробки переривання, відновлюючи значення CS:IP і регістра прапорців точки переривань, продовжуючи виконання перерваної програми. В процесі виконання програми обробки переривань можливі нові переривання, тобто переривання і відповідні програми обробки можуть бути вкладеними. Запам’ятовування CS:IP та RF забезпечує безконфліктність. Строго кажучи, програмні переривання не є перериваннями,бо вони здійснюються із звичайних програм. Тобто в даному випадку механізм переривань використовується для виклику певних процедур. Однак на відміну від звичайних процедур та підпрограм програми переривання містяться в операційній системі і призначені для виконання певних системних функцій (ввід-вивід символа, ввід командної стрічки, байта, тощо). Адреси програм обробки переривань називають векторами. Кожен вектор має довжину 4 байти. В першому слові зберігається IP, у другому – CS. Таким чином у виділених 1024 байтах оперативної пам’яті зберігається 256 векторів Ця область називається таблицею векторів. (Вектор переривання 0 починається з 0000:0000, переривання 1 – 0000:0004, 2 – 0000:0008 і т.д.). Для управління апаратними перериваннями використовується мікросхема програмного контроллера переривань (керуюча мікроЕОМ) Intel 8259 (або її еквівалент). Оскільки в будь-який момент часу може відбутися не один, а кілька запитів на переривання, то ця схема має 8 рівнів пріоритетів (IRQ 0 – IRQ 7 (IRQ 15)). IRQN – запит на переривання. Максимальний пріоритет відповідає рівню 0. Для машин АТ додаткові 8 рівнів обробляються другою мікросхемою 8259. Цей другий набір рівнів має пріоритет між IRQ 2 та IRQ 3. Переривання 0-7 відповідають векторам від 8Н до OFH. Апаратні переривання впорядковані по зменшенню пріоритету: IRQ 0 – таймер, 1 – клавіатура, 2 – канали в/в, (8 годинник реального часу (АТ), 9 – програмно переводиться в IRQ 2 (AT), 10 -резерв, 12 - резерв, 13 – математичний сопроцесор (АТ), 14 – контроллер жорсткого диску (АТ), 15 – резерв, 3 – COM1 (СОМ2 (АТ)), 4 – СОМ2 (СОМ1 (АТ)), жорсткий диск (LPT2 (AT)), 6 – контроллер дискет, 7 – LPT1. Максимальний пріоритет таймера встановлюється з метою забезпечення правильності системного годинника (відсутність втрат часу за рахунок очікування). Переривання від клавіатури ініціюється натисненням/відпусканням клавіші і його обробка полягає в занесенні коду клавіші в буфер (цей код може бути вибраний за допомогою відповідного програмного переривання). В програмах на Асемблері апаратні переривання можуть бути замасковані (тимчасово заборонена їх обробка). Деякі апаратні переривання (наприклад, ділення на 0) не можуть бути замасковані. Є дві причини блокування переривань: Блокування на час критичної частини коду програми обробки - поки не буде замінений вектор переривань цілком, а не частково). Маскування переривань при виконанні критичних до часу операцій (наприклад, робота з диском, швидкий ввід/вивід) Якщо біт 9 регістру прапорців рівний 0, то дозволені всі переривання, які дозволяє маска, при RF9 = 1 - всі апаратні переривання заборонені. Заборона переривань здійснюється командою CLI, дозвіл – STI. Заборона переривань на довгий період може порушити роботу ОС (зокрема, порушення роботи системного годинника - пропуск синхросигналів). При виклику програми обробки програмних переривань ПЕОМ автоматично забороняє апаратні переривання до їх закінчення. Якщо у програмах обробки програмних переривань допускаються апаратурні, то їх можна дозволити командою STI. Якщо після CLI не вказати пізніше STI, то машина блокується (недоступна клавіатура). Для маскування певних апаратних переривань необхідно заслати послідовність бітів в порт за адресою 21H (адреса регістра маски переривань IMR). Команди роботи з маскою IMR MOV AL,01000000B ; маскування 6 біта (0-7) OUT 21H,AL ------------------- MOV AL,0 OUT 21H,AL ; відновлення маски переривань Встановлення переривання PUSH DS MOV DX,OFFSET ROUT MOV AX,SEGROUT MOV DS,AX MOV AH,25H MOV AH,60H INT 21H POP DS Процедура обробки переривання ROUT PROC FAR PUSH AX -------------- POP AX MOV AL,20H OUT 20H,AL IRET ROUT ENDP Заміна вектора MYPG PROC FAR PUSH DS PUSH AX MOV AX,SEGMYPG PUSH CX MOV DS,AX PUSH DX MOV AL,1CH MOV AH, 0 MOV AH,25H INT 1AH INT 21H MOV CX,NTIME POP DS CMP DX,CX JNE M1 CALL BEEP M1: POP DX POP CX POPAX IRET MYRG ENDP Відновлення вектора MOV DX,0FF53H MOV AX,F000H MOV DX,AX MOV AL,1CH MOV AH,25H INT 21H Переривання по часу доби MOV CH,GG ; встановлення часу сигналізації MOV CL,MM MOV DH,SS MOV AH,06H INT 1AH --------------------- MOV AH, 07H ; відміна сигналізації INT 1AH Заміна вектора програми обробки переривання INT 4AH по часу доби. PUSH DS MOV AX,SEGMYPG MOV DS,AX MOV DX,OFFSET MYPG MOV AL,4AH ; номер вектора переривань MOV AH,25H ; функція заміни вектора переривань INT 21H POP DS КОНТРОЛЬНІ ЗАПИТАННЯ 1. Для чого служить апаратні переривання ? 2. В чому різниця між апаратними та програмними перериваннями ? 3. Як здійснюється обробка апаратних переривань ? Яка роль механізму пріоритетів ? Як використовуються програмні переривання ? Що таке таблиця векторів переривань ? Як і для чого здійснюється заміна вектора переривання ? 4. ЛАБОРАТОРНЕ ЗАВДАННЯ 1. Ознайомтесь з механізмом обробки переривань. 2. Напишіть програми обробки переривань по таймеру і по часу доби. Перевірте роботоздатність програм на прикладах. 5. ОФОРМЛЕННЯ ЗВІТУ 1. Загальна характеристика механізму обробки переривань. 2. Опис алгоритму обробки переривань по таймеру та по часу доби. 3. Тексти програм. 4. Результати тестування програм.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!