Page 105 - 4875
P. 105
резидентного модулів). В основному резидентні програми виконують
фонові операції, які не потребують значних обчислювальних ресурсів:
- друк файлів;
- програвання аудіо;
- обробка нестандартних периферійних пристроїв (обмін
даними);
- організація зв’язку між комп’ютерами.
В DOS є дві можливості для реалізації резидентних програм
(залишення в пам’яті резидентної частини):
1 переривання int 27h (Використовується тільки для
командних файлів);
2 функція 31h переривання int 21h (може використовуватись
для *.com i *.exe модулів).
Для int 27h адрес початку сегменту резидентної частини
програми приймає значення регістру CS, а розмір блоку в байтах
задається в регістрі DX.
Для int 21h довжина резидентного блоку задається в параграфах
(1 параграф – 16 байт) в регістрі DX, а за початок блоку приймається
ідентифікатор активної програми. Тобто, параграф по якому
розташований префікс сегменту активної програми. В регістрі AL
вказується код, що повертається в операційну систему.
Фактично TSR – програма складена з двох секцій:
- ініціалізуючої частини;
- резидентної частини.
Ініціалізація виконуються лише один раз при першому запуску
такої програми. Вона повинна виконувати наступні дії:
- перехопити всі переривання необхідні для роботи резидентної
частини програми;
- завершити роботу програми, записавши основний обробник в
пам’яті.
Коректно написана ініціалізуюча частина також виконує
функції:
- запобігає повторному встановленні резидентної частини в
пам’ять, звільняє зайняту пам’ять резидентної частини після
вигрузки (завершення роботи);
104