3. Використання переривань у програмах

Засобу ініціювання й обробки переривань є важливою складовою частиною будь-якої обчислювальної системи, в тому числі і персональної ЕОМ. Механізм переривань забезпечує ефективна взаємодія пристроїв уведення-висновку з мікропроцесором. Переривання цікавлять нас тому, що обробка переривань - це прерогатива програмування на мові асемблера. У високорівневих мовах відсутні засоби роботи з перериваннями на машинному рівні. Переривання звичайно викликаються зовнішніми пристроями. Переривання сигналізує мікропроцесору, щоб він призупинив виконання поточного завдання і приділив увагу зовнішньому пристрою. У IBM PC клавіатура посилає сигнал переривання кожного раз, коли натискається одна з клавіш. Це переривання повідомляє мікропроцесору, що потрібно припинити поточну роботу і вважати символ із клавіатури. Неважко зрозуміти походження терміна "переривання": сигнал переривання "перериває" поточну роботу мікропроцесора. Переривання є гарним поміч- ником для мікропроцесора, оскільки звільняє його від постійного контролю за зовнішніми пристроями. Якби, наприклад, клавіатура не викликала переривання, то мікропроцесору приходилося б постійно перевіряти стан клавіатури, щоб визначити, чи не була натиснута якась із клавіш. Будь-яка написана для ЕОМ програма повинна була б містити ту саму процедуру, і у процесі свого виконання досить часто здійснювати перевірку стану клавіатури. Однак наявність переривання, знімає це обмеження, і програма може виконуватися без такої перевірки. Клавіатура сигналізує мікропроцесору, щораз, коли їй треба передати інформацію мікропроцесору. Після того, як мікропроцесор задовільнить запит клавіатури, він може відновити нормальний хід виконання програми. У мікропроцесорі 8088 обробка переривань багато в чому схожа на виконання підпрограм. Якщо виникає переривання, то воно не може зупинити мікропроцесор під час виконання ним команди. Насамперед мікропроцесор 8088 завершує виконання поточної команди. Потім, не звертаючи уваги на наступну команду програми, він діє як у випадку виклику підпрограми. Мікропроцесор записує адреса наступної команди в стек і переходить до спеціальної підпрограми, названою обробкою переривання. Ця підпрограма містить команди, що вимагаються пристроєм, який визиває переривання. Для клавіатури, в обробку переривання входять зчитування і запис символу в пам'ять для наступного його використання. Після того, як підпрограма обробки переривання закінчила роботу з пристроєм, він здійснює повернення в крапку програми, де відбулося переривання. Мікропроцесор зчитує зі стека адреса повернення, і програма продовжує виконуватися, начебто нічого не відбулося. Оскільки переривання викликається зовнішніми пристроями, воно може відбутися в будь-який момент виконання програми. Неможливо передбачити в програмі ніяких спеціальних мір підготовки до виникнення переривання, тому що для програми момент уведення символу з клавіатури оператором є непередбаченим. Звідси випливає, що підпрограма обробки переривання не повинна модифікувати значення дані, використо- вувані перерваною програмою. У випадку модифікації їх програма після повернення їй керування не зможе виконуватися правильно. Частина процедури переривання полягає в тому, що коли вона виникає, мікропроцесор 8088 автоматично записує в стек деякі дані перерваної програми. У свою чергу, підпрограма обробки переривань відповідає за запис у пам'ять будь-яких інших даних, що вона може змінити в час свого виконання. Звичайно ці дані записуються в стекову пам'ять. Потім, перед поверненням керування перерваній програмі, підпрограма обробки переривань повинна відновити програмні параметри відповідно до їх значення в момент переривання. Факт виникнення переривання не повинен відбитися на виконуваній програмі. Оскільки існує багато пристроїв, що посилають мікропроцесору сигнали переривання, у мікропроцесорі 8088 мається механізм переривання по вектору. Це означає, що мікропроцесор 8088 визначає, який з пристроїв запросив переривання, і передає керування потрібній програмі обробки переривань, що відповідає цьому пристрою. Мікропроцесор автоматично виконує векторизацію запитів на переривання. Програма обробки переривань не повинна перед обслуговуванням пристрою визначати, яке з них запросило переривання. Це зменшує тривалість переривання і спрощує програму його обробки. У програмах зустрічаються такі ділянки, виконання яких не може бути перервано. Можливо, що частина деякої конкретної програми повинна виконуватися дуже швидко для того, щоб одержати визначений результат, або програма працює з даними, що зберігалися у пам'яті, які можуть бути змінені при обробці переривань. У кожному з цих випадків програма повинна мати можливість заборонити переривання, тобто не допускати виконання переривання на цих критичних ділянках програми. Після прохо- дження цих ділянок, функціонування ситеми переривань повинне бути відновлено програмою. Програма не може блокувати систему переривань занадто довго, інакше в обслуговуванні пристрою, який запросив перерива- ння, може відбутися збій. Якщо програма обробки переривання, яке надійш- ло з клавіатури, не встигне обдумати символ перед тим, як оператор надрукує наступний, то цей другий символ може бути загублений. У мікропроцесорі 8088 є можливість увести заборону на всі зовнішні переривання. У IBM PC, крім того, є можливість задавати пристрою, що можуть викликати переривання. Це дозволяє вибрати в програмі найбільш важливі пристрої, яким дозволене переривання, і одночасно заборонити переривання від інших, менш важливих. Методи заборони переривань будуть розглянуті в наступних главах.

 


Информация о работе «Мова програмування Assembler»
Раздел: Информатика, программирование
Количество знаков с пробелами: 206879
Количество таблиц: 0
Количество изображений: 16

Похожие работы

Скачать
32096
0
0

... кодами сканування клавіатури (scan-коды). Код віджимання є двобайтовим: перший байт рівний F0h, а другий байт збігається з кодом натиснення. Є три рівні програмування підсистеми клавіатури: 1) на фізичному рівні (програмування портів 60h і 64h контроллера клавіатури); 2) за допомогою BIOS ( INT 09h, INT 16h ); 3) за допомогою переривання DOS ( INT 21h ). Для виконання введення даних з клаві ...

Скачать
148745
30
12

... обміну даними з ПЭВМ у процесі виконання програми користувача; 11.      Вкажіть типи буферних схем, використаних в УУМС-2. Їх призначення та особливості роботи. 12.      Дайте визначення адресного простору мікропроцесорної системи та розпишіть його розподіл в УУМС-2. Адресний простір УУМС складається з областей, состав яких показаний у табл.2. Варто звернути увагу, що внутрішні адресні області ...

Скачать
70440
0
5

... Сван Том. – К.: Диалектика, 1997. – 480с., ил. 7.       Секреты Delphi 2: Пер. с англ./Рэй Лишнер. – К.: НИПФ «ДиаСофтЛтд.», 1996. – 800 с. ДОДАТОК ТЕКСТ ПРОГРАМИ “ВІЗУАЛЬНИЙ ОБЛІК ВХІДНИХ ДАНИХ ІНТЕРФЕЙСУ RS-232” Текст основної програми program Project1; uses Forms, MainForm in 'MainForm.pas' {Form1 Головна форма}, GraphicDiagram in 'GraphicDiagram.pas', Unit3 in 'Unit3.pas' ...

Скачать
25738
5
6

... CF (a+b+CF), і розміщує результат замість першого операнда. Обмеження на операнді такі ж, як і в команді ADD. Установлюються прапорці AF, CF, OF, FF, SF, ZF. Ця команда використовується для програмування арифметичних операцій над довгими цілими числами. ІNC a - Збільшення на 1. Команда додає 1 до значення операнда а. Операнд може знаходитися в пам'яті або в регістрі. Установлюються прапорці AF, ...

0 комментариев


Наверх