Резидентные в памяти программы (TSR-программы) используются, как правило, для организации обработкиаппаратных или программных прерываний в фоновом режиме. Реализациятаких программ имеет ряд особенностей как при установке, так и в процедуре обработки прерываний.
Завершение TSR-программы выполняется с помощью функции 27Н прерывания DOS INT 21H. При этом в DX помещается смещение от начала префикса программного сегмента (PSP) задачи до последнего байта +1.
Для перехвата вектора прерывания используется "функция 25Н прерывания INT 21H (см. описание лабораторной работы N 5).
Пример структуры TSR-программы, оформленной в виде СОМ-файла, приведен ниже.
.MODEL TINY ;генерировать.СОМ - файл
.286 ;разрешение использования
;PUSHA, РОРА
;-------------------------------------------------------------------------------------------------------
VECT EQU 60H ;перехватываемый вектор
;-------------------------------------------------------------------------------------------------------
.STACK lOOh ;стек 256 байт
.CODE ;начало кодового сегмента
.STARTUP ;инициализировать сегменты
;-------------------------------------------------------------------------------------------------------
MOV, DX, OFFSET new_lnt ; DS:DX - адрес обработчика
MOV АН, 25Н
MOV AL, VECT
INT 21H ;установка нового вектора
LEA DX, last ;адрес последнего байта + 1
INT 27H ;TSR
;-------------------------------------------------------------------------------------------------------
new_lnt PROC FAR ;обработчик прерывания
PUSHA ;сохранение всех регистров
;Здесь реализуется обработка ;прерываний
РОРА ; восстановление всех регистров
IRET ; возврат из прерывания
last:
new_int ENDP
;--------------------------------------------------------
END
3. Методические указания
В лабораторной работе требуется реализовать TSR-программу, выполняющую определенные функции по запросу другой программы (по аналогии с обращениями к DOS). TSR-программа должна использовать любой свободный вектор прерывания, начиная с бон. оформить ее следует в виде СОM-файла (установите соответствующий режим компоновщика!).
Для реализации действий в TSR - программе используйте обращения к BIOS. Описание функций см. в лабораторной работе N3. Обращения к TSR-программе должны выполняться из другой программы, написанной на СИ с ассемблерными вставками.
При отладке TSR-программы нельзя использовать оболочку QU-ICK-C. Перед ее запуском выйдите из QUICK-C и из Norton Commander. Если требуется повторно запустить TSR-программу - рестартуйте компьютер.
4. Порядок выполнения работы
1.Написать TSR-программу на Ассемблере для обработки прерываний, выполняющую действия (функции) в соответствии с вариантами заданий, приведенными ниже.
2. Написать СИ-программу для тестирования TSR-програмиы. Программа должна выполнять обращения к TSR-программе через вектор прерывания. Обращение выполнить в виде ассемблерных вставок (директива _asm).
3. Произвести отладку этих программ.
Задания к лабораторной работе.
(функции, выполняемые TSR-программой)
Вариант 1.
1. Очисткаэкрана
2. Вывод символа с заданными координатами
3. Позиционирование курсора в начало экрана
Вариант 2.
1. Очисткаэкрана
2. Вывод заданного символа в начале последней строки
3. Позиционирование курсора в начало текущей строки
Вариант 3.
1. Очистка экрана
2. Вывод заданного символа в левом верхнем углу экрана
3. Позиционирование курсора в конец последней строки
Вариант 4.
1. Очистка экрана
2. Выдача звукового сигнала (Печать символа с кодом 7)
3. Позиционирование курсора в конец текущей строки
Вариант 5.
1. Очистка экрана
2. Вывод заданного символа в центре экрана
3. Позиционирование курсора в конец первой строки
Вариант 6.
1. Очистка экрана
2. Вывод заданного символа в конце текущей строки
3. Позиционирование курсора в центр экрана
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.