Мова програмування Assembler
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
язки приведені на наступній схемі:
Користувальницький Вищий Нижчий ROM Зовнішній
Як показано вище, переривання від тичина 20 до тичина 62 зарезервовані для операцій DOS. Нижче приведені найбільш основні з них:
INT 20H Завершення програми. Запит завершує виконання програми і передає керування в DOS. Даний запит звичайно знаходиться в основній процедурі.
INT 21H Запит функцій DOS. Основна операція DOS, яка визиває визначену функцію відповідно до коду в регістрі AH. Призначення функцій DOS описано в наступному розділі.
INT 22H Адреса підпрограми обробки завершення задачі. (см.INT 24H).
INT 23H Адреса підпрограми реакції на Ctrl/Break. (см.INT 24H).
INT 24H Адреса підпрограми реакції на фатальну помилку. У цьому елементі й у двох попередніх містяться адреси, які ініціалізуються системою в префіксі програмного сегмента і, які можна змінити для своїх цілей. Подробиці приведені в технічному описі DOS.
INT 25H Абсолютне читання з диска. Див.гл.17.
INT 26H Абсолютний запис на диск. Див.гл.17.
INT 27H Завершення програми, що залишає її резедентною.
Дозволяє зберегти COM-програму в памяті. Докладно дана операція показана в наступному розділі "Резидентні програми".
3. Використання переривань у програмах
Засобу ініціювання й обробки переривань є важливою складовою частиною будь-якої обчислювальної системи, в тому числі і персональної ЕОМ. Механізм переривань забезпечує ефективна взаємодія пристроїв уведення-висновку з мікропроцесором. Переривання цікавлять нас тому, що обробка переривань - це прерогатива програмування на мові асемблера. У високорівневих мовах відсутні засоби роботи з перериваннями на машинному рівні. Переривання звичайно викликаються зовнішніми пристроями. Переривання сигналізує мікропроцесору, щоб він призупинив виконання поточного завдання і приділив увагу зовнішньому пристрою. У IBM PC клавіатура посилає сигнал переривання кожного раз, коли натискається одна з клавіш. Це переривання повідомляє мікропроцесору, що потрібно припинити поточну роботу і вважати символ із клавіатури. Неважко зрозуміти походження терміна "переривання": сигнал переривання "перериває" поточну роботу мікропроцесора. Переривання є гарним поміч- ником для мікропроцесора, оскільки звільняє його від постійного контролю за зовнішніми пристроями. Якби, наприклад, клавіатура не викликала переривання, то мікропроцесору приходилося б постійно перевіряти стан клавіатури, щоб визначити, чи не була натиснута якась із клавіш. Будь-яка написана для ЕОМ програма повинна була б містити ту саму процедуру, і у процесі свого виконання досить часто здійснювати перевірку стану клавіатури. Однак наявність переривання, знімає це обмеження, і програма може виконуватися без такої перевірки. Клавіатура сигналізує мікропроцесору, щораз, коли їй треба передати інформацію мікропроцесору. Після того, як мікропроцесор задовільнить запит клавіатури, він може відновити нормальний хід виконання програми. У мікропроцесорі 8088 обробка переривань багато в чому схожа на виконання підпрограм. Якщо виникає переривання, то воно не може зупинити мікропроцесор під час виконання ним команди. Насамперед мікропроцесор 8088 завершує виконання поточної команди. Потім, не звертаючи уваги на наступну команду програми, він діє як у випадку виклику підпрограми. Мікропроцесор записує адреса наступної команди в стек і переходить до спеціальної підпрограми, названою обробкою переривання. Ця підпрограма містить команди, що вимагаються пристроєм, який визиває переривання. Для клавіатури, в обробку переривання входять зчитування і запис символу в память для наступного його використання. Після того, як підпрограма обробки переривання закінчила роботу з пристроєм, він здійснює повернення в крапку програми, де відбулося переривання. Мікропроцесор зчитує зі стека адреса повернення, і програма продовжує виконуватися, начебто нічого не відбулося. Оскільки переривання викликається зовнішніми пристроями, воно може відбутися в будь-який момент виконання програми. Неможливо передбачити в програмі ніяких спеціальних мір підготовки до виникнення переривання, тому що для програми момент уведення символу з клавіатури оператором є непередбаченим. Звідси випливає, що підпрограма обробки переривання не повинна модифікувати значення дані, використо- вувані перерваною програмою. У випадку модифікації їх програма після повернення їй керування не зможе виконуватися правильно. Частина процедури переривання полягає в тому, що коли вона виникає, мікропроцесор 8088 автоматично записує в стек деякі дані перерваної програми. У свою чергу, підпрограма обробки переривань відповідає за запис у память будь-яких інших даних, що вона може змінити в час свого виконання. Звичайно ці дані записуються в стекову память. Потім, перед поверненням керування перерваній програмі, підпрограма обробки переривань повинна відновити програмні параметри відповідно до їх значення в момент переривання. Факт виникнення переривання не повинен відбитися на виконуваній програмі. Оскільки існує багато пристроїв, що посилають мікропроцесору сигнали переривання, у мікропроцесорі 8088 мається механізм переривання по вектору. Це означає, що мікропроцесор 8088 визначає, який з пристроїв запросив переривання, і передає керування потрібній програмі обробки переривань, що відповідає цьому пристрою. Мікропроцесор автоматично виконує векторизацію запитів на переривання. Програма обробки переривань