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

4. Требования к структуре резидентной программы, запускаемой командой call

Пример такой резидентной программы PRER1.ASM приведен на рис.3. Прог­рамма в инициализирующей части должна загрузить свой адрес в область межзадачных связей, являющуюся частью области данных BIOS и рас­положенную по адресам 40H:0F0H.....40H:0FFH.

Например, в слово по адресу 40H:0F0H программа может записать относительный адрес точки входа в процедуру, оставляемую в памяти, а в слово 40H:0F2H - содержимое сегментного регистра CS.

Процедура должна завершаться оператором возврата из процедуры RET, а программа - системным прерыванием 27Н. При этом в регистре DX следует указать размер оставляемой в памяти программы.

Пример транзитной программы START1.ASM , из которой вызывается резидентная, дан на рис.4.

Транзитная программа, желая передать управление резидентной, нас­траивает регистр ES на начало области данных BIOS и выполняет команду дальнего вызова

CALL DWORD PTR ES:0F0H.

Транзитная программа может передать параметры, используя область межзадачных связей. Их начальный адрес программа записывает в обусловленное место области, например, в двухсловную ячейку по адресу40H:0F4H.

В этом случае резидентная программа загружает в регистр SI относительный адрес параметров из ячейки 40H:0F4H, а в регистр DS- сегментный адрес из ячейки 40H:F6H ,и после этого забирает сами пара­метры, например, командами:

MOV AX, DS:[SI]

MOV BX, DS:[SI+2] и т.д.

5. Последовательность выполнения работы

5.1 Изучение взаимодействия резидентной и транзитной программ через прерывание.

1. Запустить программу Far Manager.

2. Подготовить с помощью текстового редактора (Shift+F4) файлы программ PRER.ASM и START.ASM.

3. Выполнить трансляцию резидентной программы PRER.ASM и получить файл PRER.OBJ: TASM /zi PRER,,

4. С помощью программы TLINK получить исполняемый файл PRER.COM: TLINK /t PRER,,

5.Выполнить трансляцию стартовой программы START.ASM и получить файл START.OBJ: TASM /zi START,,

6. С помощью программы TLINK получить исполняемый файл START.EXE: TLINK /v START,,

7. Загрузить отладчик TD и программу PRER.COM в оперативную память командой TD.EXE PRER.COM. Убрать предупреждение с окна отладчика.

8. Открыть окно CPU отладчика: View > CPU

Выполнить в шаговом режиме несколько команд до команды INT 27h.

9. Клавишей табуляции сделать активным окно памяти, нажать правую кнопку, выбрать GO TO, ввести адрес 00:180h и найти в памяти установленный программой вектор прерывания.

10. Выполнить программу до конца. Появиться сообщение, что программа оставлена в памяти резидентной.

11. Выйти из отладчика (ALT+X). На экране появится окно системной программы COMMAND.COM с командной строкой.

12. Введите в командную строку имя файла START.EXE и нажмите Enter. На экране появится информация об успешном запуске резидентной программы.

13. Ввести в командную строку команду EXIT и нажать Enter.

Внимание!

Запускать программы на исполнение можно без использования отладчика TD.EXE в такой последовательности: первой следует запустить из командной строки программу PRER.COM, второй – START.COM.

В случае появления сообщений о системных ошибках следует обратиться к преподавателю.

Соседние файлы в папке Резидентные_программы