Методические указания к лабораторным работам по курсу "Информатика", страница 8

Завершение 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-программа должна исполь­зовать любой свободный вектор прерывания,  начиная с 60H. офор­мить ее следует в виде  СОM-файла  (установите  соответствующий режим компоновщика!).

Для реализации действий в TSR - программе используйте  об­ращения к BIOS.  Описание функций см. в лабораторной работе №3. Обращения к 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. Позиционирование курсора в центр экрана