
- •Системне програмування
- •Переривання (Системні виклики). Механізм і типи переривань
- •Обслуговування переривань
- •Io.Sys і msdos.Sys
- •Маскування переривань
- •Зміна таблиці векторів переривань
- •Корекція системних обробників переривань
- •Використання переривань
- •1. Використання групи функцій переривання dos int 21h, при цьому номер функції цього переривання вказується в регістрі ah:
- •2. Посимвольний ввід шляхом звертання до драйвера bios за допомогою переривання int 16h
- •Int 16h
- •3. Звертання до клавіатури, як до файлу.
- •1. Використання групи функцій переривання dos int 21h, при цьому номер функції цього переривання вказується в регістрі ah:
- •2. Звертання до пристрою виводу(монітору), як до файлу.
- •Найбільш важливі переривання bios
- •Найбільш важливі переривання dos
- •Таблиця векторів переривань
Найбільш важливі переривання dos
Під час своєї роботи BIOS використовує два модулі DOS: IO.SYS і MSDOS.SYS. Оскільки модулі DOS забезпечують велику кількість різних додаткових перевірок, то операції DOS, як правило простіші у використанні і менш машинно залежні, аніж їх BIOS аналоги. Модуль IO.SYS забезпечує інтерфейс із BIOS низького рівня. Ця програма виконує керування вводом-виводом при читанні даних із зовнішніх пристроїв у пам'ять і записі з пам'яті на зовнішні пристрої.
Модуль MSDOS.SYS містить засоби керування файлами і ряд сервісних функцій, таких як блокування і деблокування записів. Коли користувацька програма видає запит INT 21H, то в програму MSDOS.SYS через регістри передається визначена інформація. Потім програма MSDOS.SYS транслює цю інформацію в один чи кілька викликів IO.SYS , що у свою чергу викликає BIOS. Зазначені зв'язки приведені на наступній схемі:
Як показано вище, переривання від 20h 62h зарезервовані для операцій DOS. Нижче приведені найбільш основні з них:
INT 20h Завершення програми. Запит завершує виконання програми і передає керування в DOS. Даний запит звичайно знаходиться в основній процедурі.
INT 21h Запит функцій DOS. Основна операція DOS, що викликає визначену функцію відповідно до коду в регістрі AH.
INT 22h Адреса підпрограми обробки завершення задачі. (см.INT 24H).
INT 23h Адреса підпрограми реакції на Ctrl/Break. (см.INT 24H).
INT 24h Адреса підпрограми реакції на фатальну помилку. У цьому елементі й у двох попередніх містяться адреси, що ініціалізуються системою в префіксі програмного сегмента і, які можна змінити для своїх цілей.
INT 27h Завершення програми, що залишає її резидентною. Дозволяє зберегти COM-програму в пам'яті.
Таблиця векторів переривань
Адр.(16) |
Номер |
Опис |
0-3 |
0 |
Помилка ділення. Викликається автоматично після виконання команд DIV або IDIV, якщо в результаті ділення відбулося переповнення. DOS зазвичай при обробці цього переривання виводить повідомлення про помилку й зупиняє виконання програми. Для процесора 8086 при цьому адреса повернення вказує на наступну після команди ділення команду, а в процесорі 80286 - на перший байт команди, що викликала переривання |
4-7 |
1 |
Переривання покрокового режиму. Виникає після виконання кожної машинної команди, якщо в слові прапорів встановлений біт покрокового трасування TF. Використовується для наладки програм. Переривання не виникає після виконання команди MOV у сегментні регістри або після завантаження сегментних регістрів командою POP |
8-B |
2 |
Апаратне немасковане переривання. Це переривання може використовуватися по-різному в різних машинах. Звичайно виникає при помилці парності в оперативній пам'яті і при запиті переривань від сопроцесора |
C-F |
3 |
Переривання для трасування. Це переривання генерується при виконанні однобайтової команди з кодом CCh і звичайно використовується наладчиками для встановлення точки переривання |
10-13 |
4 |
Переповнення. Генерується машинною командою INTO, якщо встановлений прапор OF. Якщо прапор не встановлений, то команда INTO виконується як NOP. Це переривання використовується для обробки помилок при виконанні арифметичних операцій |
14-17 |
5 |
Друк копії екрана. Генерується при натисканні на клавіатурі клавіші PrtScr. Звичайно використовується для друку образу екрана. Для процесора 80286 генерується при виконанні машинної команди BOUND, якщо значення, що перевіряється, вийшло за межі заданого діапазону |
18-1С |
6 |
Невизначений код операції або довжина команди більше 10 байтів (для процесора 80286) |
1D-1F |
7 |
Особливий випадок відсутності сопроцессора |
20-23 |
8 |
IRQ0 - переривання інтервального таймера, виникає 18,2 разів в секунду |
24-27 |
9 |
IRQ1 - переривання від клавіатури. Генерується при натисканні і при відпусканні клавіші. Використовується для читання даних з клавіатури |
28-2B |
A |
IRQ2 - використовується для каскадування апаратних переривань у машинах класу AT |
2C-2F |
B |
IRQ3 - переривання асинхронного порту COM2 |
30-33 |
C |
IRQ4 - переривання асинхронного порту COM1 |
34-37 |
D |
IRQ5 - переривання від контролера жорсткого диска для XT |
38-3B |
E |
IRQ6 - переривання генерується контролером флоппі-диска після завершення операції |
3C-3F |
F |
IRQ7 - переривання принтера. Генерується принтером, коли він готовий до виконання чергової операції. Багато адаптерів принтера не використовують це переривання |
40-43 |
10 |
Обслуговування відеоадаптера |
44-47 |
11 |
Визначення конфігурації пристроїв у системі |
48-4B |
12 |
Визначення розміру оперативної пам'яті в системі |
4C-4F |
13 |
Обслуговування дискової системи |
50-53 |
14 |
Послідовний ввід/вивід |
54-57 |
15 |
Розширений сервіс для AT-комп'ютерів |
58-5B |
16 |
Обслуговування клавіатури |
5C-5F |
17 |
Обслуговування принтера |
60-63 |
18 |
Запуск BASIC у ПЗУ, якщо він є |
64-67 |
19 |
Завантаження операційної системи |
68-6B |
1A |
Обслуговування годинника |
6C-6F |
1B |
Обробник переривань Ctrl-Break |
70-73 |
1C |
Переривання виникає 18,2 разів в секунду, викликається програмно обробником переривання таймера |
74-77 |
1D |
Адреса відеотаблиці для контролера відеоадаптера 6845 |
78-7B |
1E |
Покажчик на таблицю параметрів дискети |
7C-7F |
1F |
Покажчик на графічну таблицю для символів із кодами ASCII 128-255 |
80-83 |
20 |
Нормальне завершення програми (DOS) |
84-87 |
21 |
Звертання до функцій DOS |
88-8B |
22 |
Адреса обробки завершення задачі (DOS) |
8C-8F |
23 |
Адреса реакції по Ctrl/Break (DOS) |
90-93 |
24 |
Адреса реакції на фатальну помилку (DOS) |
94-97 |
25 |
Абсолютне читання з диска (DOS) |
98-9B |
26 |
Абсолютний запис на диск (DOS) |
9C-9F |
27 |
Створення резидентної програми (DOS) |
A0-17F |
28-5F |
Інші функції DOS |
180-19F |
60-67 |
Переривання, зарезервовані для користувача |
1A0-1A3 |
68-6F |
Не використовуються |
1C0-1C3 |
70 |
IRQ8 - переривання від годинника реального часу |
1C4-1C7 |
71 |
IRQ9 - переривання від контролера EGA |
1C8-1CB |
72 |
IRQ10 – зарезервовано |
1CC-1CF |
73 |
IRQ11 – зарезервовано |
1D0-1D3 |
74 |
IRQ12 – зарезервовано |
1D4-1D7 |
75 |
IRQ13 - переривання від сопроцесора |
1D8-1DB |
76 |
IRQ14 - переривання від контролера жорсткого диска |
1DC-1DF |
77 |
IRQ15 – зарезервовано |
1E0-1FF |
78-7F |
Не використовуються |
200-217 |
80-85 |
Зарезервовані для BASIC |
218-3C3 |
86-F0 |
Використовуються інтерпретатором BASIC |
3C4-3FF |
F1-FF |
Не використовуються |