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

Лабораторная работа n 6 программы, резидентные в памяти (tsr).

1. Цель работы

Ознакомиться с особенностями реализации TSR-программ в операционной системе MS-DOS.

2. Краткие теоретические сведения

Резидентные в памяти программы (TSR-программы) используют­ся, как правило, для организации обработки аппаратных или прог­раммных прерываний в фоновом режиме. Реализация таких программ имеет ряд особенностей, как при установке, так и в процедуре об­работки прерываний.

Завершение TSR-программы выполняется с помощью функции 27Н прерывания DOS INT 21H. При этом в DX помещается смещение от начала префикса программного сегмента (PSP) задачи до последне­го байта +1.

Для перехвата вектора прерывания используется "функция 25Н прерывания INT 21H (см. описание лабораторной работы N 5).

Пример структуры TSR-программы, оформленной в виде СОМ-файла, приведен ниже.

.MODEL TINY ;генерировать .СОМ - файл

.286 ;разрешение использования

;PUSHA, РОРА

;-------------------------------------------------------------------------------------------------------

VECT EQU 60H ;перехватываемый вектор

;-------------------------------------------------------------------------------------------------------

.STACK 1OOh ;стек 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 Comman­der. Если требуется повторно запустить 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. Позиционирование курсора в центр экрана

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