Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Prakt2.doc
Скачиваний:
9
Добавлен:
12.02.2016
Размер:
204.8 Кб
Скачать

Обслуговування переривань

У комп'ютерах IBM PC ROM знаходиться за адресою FFFF0H. При включенні комп'ютера процесор встановлює стан скидання, виконує контроль парності, встановлює в регістрі CS значення FFFFh, а в регістрі IP – нуль, тому перша команда, що буде виконуватися знаходиться за адресою FFFF:0 чи FFFF0, що є точкою входу в BIOS. BIOS перевіряє різні порти комп'ютера для визначення й ініціалізації підключених пристроїв. Потім BIOS створює на початку пам'яті (за адресою 0) таблицю переривань, що містить адреси обробників переривань, і виконує дві операції INT 11H (запит списку приєднаного обладнання) і INT 12H (запит розміру фізичної пам'яті). Наступним кроком BIOS визначає чи є на чи диску, дискеті операційна система DOS. Якщо виявлена системна дискета, то BIOS виконує переривання INT 19H для доступу до першого сектора диска, що містить блок початкового завантаження. Цей блок являє собою програму, що зчитує системні файли IO.SYS, MSDOS.SYS і COMMAND.COM з диска в пам'ять. Після цього пам'ять має наступний розподіл:

Таблиця векторів переривань

Дані BIOS

Io.Sys і msdos.Sys

Резидентная частина COMMAND.COM

Доступна пам'ять для прикладних програм

Транзитна частина COMMAND.COM

Кінець RAM (ОЗУ)

ROM BASIC

ROM BIOS

Зовнішні пристрої передають сигнал готовності через контакт INTR у процесор. Процесор реагує на цей запит, якщо прапорець переривання IF встановлений у 1 (переривання дозволене), і (у більшості випадків) ігнорує запит, якщо прапорець IF встановлений у 0 (переривання заборонене). Операнд у команді переривання, наприклад, INT 12H, містить тип переривання, що ідентифікує запит. Для того щоб зв'язати номер переривання з адресою програми реакції на переривання (обробника переривань), використовується таблиця векторів переривань, що займає перший кілобайт оперативної пам'яті - адреси від 0000:0000 до 0000:03FF. Перериванню з номером 0 відповідає адреса 0000:0000, перериванню з номером 1 - 0000:0004 і т.д. Перериванню з номером n буде відповідати адреса 0000:4*n. Таблиця складається з 256 елементів - 4-байтних адрес обробників переривань. Ці елементи називаються векторами переривань. У першому слові елемента таблиці записане зміщення, що при перериванні встановлюються в регістри IP а в другому - сегмент адреси обробника переривань, що при перериванні встановлюються в регістри CS. Ініціалізація таблиці відбувається частково програмою BIOS, частково при завантаженні DOS. DOS може переключити на себе деякі переривання BIOS. Список елементів таблиці векторів переривань приведений нижче.

Переривання заносить у стек вміст регістра прапорців FLAGS, регістра CS і регістра IP. Наприклад, для переривання 12H (яке повертає в регістрі AX розмір пам'яті) адреса елемента таблиці дорівнює 0048h ((12 х 4)h = .48h). Операція виділяє чотирибайтний елемент за адресою 0048h і заносить два байти в регістр IP і два байти в регістр CS. Адреса, що отримується у регістровій парі CS:IP, являє собою адресу початку підпрограми в області BIOS, що одержує керування. Повернення з цієї підпрограми здійснюється командою IRET (Interrupt Return), що відновлює регістр прапорців і регістри CS і IP зі стеку і передає керування на команду, що випливає за виконаною командою переривання.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]