Поділ переривань між BIOS та операційною системою



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

Основні переривання та їх функції (крім 21 h )

1. Поняття "переривання"

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

Інструкції цієї групи дозволяють використовувати в програмах сервісні функції, забезпечувані через апарат переривань операційної системи. З цією метою генерується програмне переривання, ефект якого подібний ефекту апаратних переривань. Однак, процесор не виконує цикл передачі підтвердження переривання, якщо переривання ініційовано або програмою зв'язане з NMI. Інструкції переривань кожна по-своєму впли- вають на стан прапорів процесора.

ПЕРЕРИВАННЯ

Інструкція INT активізує процедуру, передбачену для обробки переривання з зазначеним номером. Покажчик стека SP зменшується на 2, у стек містяться прапори (у форматі інструкції PUSHF) і прапори TF і IF устанавливаютя в 0 (для заборони покрокового режиму і маскируемых переривань). Потім SP зменшується ще на 2, і в стек заноситься вміст регістра CS. Адреса покажчика переривання (тобто місцезнаходження адреси програми обробки переривання) обчислюється шляхом множення зазначеного в інструкції INT номера на 4: друге слово покажчика заміщає значення регістра CS. SP знову зменшується на 2, і в стек міститься

вміст регістра IP, а в сам IP заноситься перше слово покажчика. Якщо зазначений номер переривання 3, асемблер генерує коротку (1 байт) форму інструкції, відому як переривання по досягненню крапки виходу. Програмні переривання можуть використовуватися як "виклики супервізора", тобто для запиту сервісу операційної системи, зокрема, процедур, написаних для обробки апаратних переривань.

ПЕРЕРИВАННЯ, ЯКЩО Є ПЕРЕПОВНЕННЯ

По інструкції INTO генерується програмне переривання, якщо встановлений у 1 прапор OF; у противному випадку керування передається наступної інструкції без активізації процедури обробки переривання. Інструкція INTO звертається до необхідній процедурі (номер переривання - 4) через покажчик переривання, розташований по 16-ричному адресі 10, встановлює в 0 прапори TF і IF і в іншому працює також, як INT. Інструкція INTO може використовуватися після арифметичних чи логічних операцій для обробки можливих переповнень.

КРАПКА ВИХОДУ

Виконання цієї інструкції еквівалентно перериванню з номером 3 ("досягнута крапка виходу"). Асемблер генерує коротку, 1-байтную машинну інструкцію.

ПОВЕРНЕННЯ З ПЕРЕРИВАННЯ

По інструкції IRET керування повертається в крапку переривання шляхом відновлення зі стека вмісту регістрів IP і CS і значень прапорів, поміщених туди при виникненні переривання. Ця інструкція використовується для виходу як із програмних, так і з апаратних переривань.


Поділ переривань між BIOS та операційною системою

 

У даному розділі представлені основні переривання BIOS. INT 05H (Печатка екрана). Приводить до передачі вмісту екрана на друкувальний пристрій. INT 05H застосовується для внутрішніх цілей, тобто з програм, клавіші Ctrl/PrtSc активізують печатка з клавіатури. Дана операція маскує перери- вання і зберігає позицію курсору.

 


Примітка: Переривання 00-1F відносяться до BIOS, переривання 20-FF відносяться до DOS і BASIC.

ПЕРЕРИВАННЯ BIOS

У даному розділі приведені основні переривання BIOS. INT 05H Печатка екрана. Виконує виведення вмісту екрана на друкувальний пристрій. Команда INT 05H виконує дану операцію з програми, а натискання клавішею Ctrl/PrtSc - з клавіатури. Операція забороняє переривання і зберігає позицію курсору. INT 10H Керування дисплеєм. Забезпечує екранні і клавіатурні операції, детально описані в главі 9. INT 11H Запит списку приєднаного устаткування. Визначає наявність різних пристроїв у системі, що результують значення і повертає в регістр AX. При включенні комп'ютера система виконує цю операцію і зберігає вміст AX у пам'яті за адресою тичина.410. Значення бітів у регістрі AX:

 

 

INT 12H Запит розміру фізичної пам'яті. Повертає в регістрі AX розмір пам'яті в кілобайтах, наприклад, тичина.200 відповідає пам'яті в 512 ДО. Дана операція корисна для вирівнювання розміру програми відповідно до доступного пам'яттю.

INT 13H Дискові операції введення-висновку. Забезпечує операції введення-висновку для дискет і вінчестера, розглянуті в главі 16.

INT 14H Керування комунікаційним адаптером. Забезпечує послідовний введення-виведення через комунікаційний порт RS232. Регістр DX повинний містити номер (0 чи 1) адаптера стику RS232. Чотири типи операції, обумовлені регістром AH, виконують прийом і передачу символів і повертають у регістрі AX байт стану комунікаційного порту.

INT 15H Касетні операції введення-висновку і спеціальні функції для комп'ютерів AT. Забезпечує операції введення-висновку для касетного магнітофона, а також розширені операції для комп'ютерів AT.

INT 16H Уведення з клавіатури. Забезпечує три типи команд уведення з клавіатури, докладно описані в главі 9.

INT 17H Виведення на принтер. Забезпечує виведення даних на друкуючий пристрій. Докладно розглянуто в главі 19.

INT 18H Звертання до BASIC, убудованому в ROM. Викликає BASIC-інтер- претатор, що знаходиться в постійній пам'яті ROM.

INT 19H Перезапуск системи. Дана операція при доступному диску зчитує сектор 1 з доріжки 0 в область початкової завантаження в пам'яті (сегмент 0, зсув 7C00) і передає керування по цій адресі. Якщо дисковод не доступний, то операція передає керування через INT 18H у ROM BASIC. Дана операція не очищає екран і не інніціалізує дані у ROM BASIC, тому її можна використовувати з програми.

INT 1AH Запит і установка поточного часу і дати. Зчитує і записує показання годин у відповідності із значенням у регістрі AH. Для визначення тривалості виконання програми можна перед початком виконання установити годинник у 0, а після вважати поточний час. Відлік часу йде приблизно 18,2 рази в секунду. Значення в регістрі AH відповідає наступним операціям:

AH=00 - Запит часу. У регістрі CX установлюється старийшая частина значення, а в регістрі DX - молодша. Якщо після останнього запиту пройшло 24 години, то в регістрі AL буде не нульове значення.

AH=01 - Установка часу. Час установлюється по регістрам CX (старша частина значення) і DX (молодша частина значення).

Коди 02 і 06 керують часом і датою для AT.

INT 1FH Адреса таблиці графічних символів. У графічному режимі існує доступ до символів з кодами 128-255 у 1ДО таблиці, що містить по вісім байт на кожен символ. Прямийдоступ у графічному режимі забезпечується тільки до перших 128 ASCII-символів (від 0 до 127).

ПЕРЕРИВАННЯ DOS

Під час своєї роботи BIOS використовує два модулі DOS: IBMBIO.COM і IBMDOS.COM. Оскільки модулі DOS забезпечують велику кількість різних додаткових перевірок, то операція DOS звичайно простіша у використан- ні і менш машинно залежна, чим їх BIOS аналоги.

Модуль IBMBIO.COM забезпечує інтерфейс із BIOS низького рівня. Ця програма виконує керування введенням-висновком при читанні даних із зовнішніх пристроїв у пам'ять і записи з пам'яті на зовнішні пристрої.

Модуль IBMDOS.COM містить засоби керування файлами і ряд сервісних функцій, таких як блокування і деблокування записів. Коли користуваль- ницька програма видає запит INT 21H, то в програму IBMDOS через регістри передається визначена інформація. Потім програма IBMDOS транслює цю інформацію в один чи декілька викликів IBMBIO, що в свою чергу викликає BIOS. Зазначені зв'язки приведені на наступній схемі:

Користувальницький Вищий Нижчий 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-програму в пам'яті. Докладно дана операція показана в наступному розділі "Резидентні програми".

 


Дата добавления: 2019-07-15; просмотров: 798; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!