Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорные системы (книга Комаров) / Модульное программирование.doc
Скачиваний:
82
Добавлен:
08.03.2015
Размер:
276.99 Кб
Скачать

5.2.2. Использование библиотек объектных модулей

Для использования подпрограммы из объектной библиотеки необходимо объявить ее в разрабатываемой программе внешней (с помощью директивы EXTRNсм.подраздел 5.1.2) и вызвать командой CALL.

Затем на этапе компоновки программы сообщить редактору связей LINK имя используемой объектной библиотеки. Редактор связей извлечет вызываемую процедуру из библиотеки и включит ее в состав программы так же, как если бы она была отдельным модулем.

Если в прикладной программе требуются объектные модули из нескольких различных библиотек, то все библиотеки указываются редактору связей (например, в ответ на приглашение Libraries:) через знак сложения +.

Пример 5.8:

Создать библиотеку, содержащую подпрограммы для вычисления суммы S=A+B и разности D=AB слов, и использовать их в прикладной программе.

Для демонстрации модульного подхода к программированию представим каждую из подпрограмм в виде отдельного модуля, которые будут включены в библиотеку, а затем использованы из нее в прикладной программе. С учетом этого все файловые модули программы будут иметь вид:

; Модуль суммирования (файл ADDW.asm)

NAMEAddW ;Описание имени

PUBLICAddW ;Описание обращения

Code SEGMENTPARA PUBLIC;Описание сегмента кода

ASSUMECS:Code

AddW PPOCNEAR;Описание подпрограммы

ADD AX, DX ;Выполнение сложения

RET

AddW ENDP

Code ENDS

END;Конец подчиненного модуля

; Модуль вычитания (файл SUBW.asm)

NAMESubW ;Описание имени

PUBLIC SubW ;Описание обращения

Code SEGMENTPARA PUBLIC;Описание сегмента кода

ASSUMECS:Code

SubW PROC NEAR ;Описание подпрограммы

SUB AX, DX ;Выполнение вычитания

RET

SubW ENDP

Code ENDS

END;Конец подчиненного модуля

; Модуль основной программы (файл PROG.asm)

NAME PROG_AS ;Описание имени

EXTRNAddW:NEAR,SubW:NEAR;Описание обращений

Data SEGMENT ;Описание данных

A DW5h

B DW3h

S DW?

D DW ?

Data ENDS

Code SEGMENTPARA PUBLIC;Описание сегмента кода

ASSUMECS:Code,DS:Data

Start:MOV AX, Data ;Инициализация

MOV DS, AX ;сегментного регистра

MOV AX, A ;Передача входных

MOV DX, B ;параметров

CALL AddW ;Вычисление S=A+B

MOV S, AX ;Передача результата

. . . . . . . . . .

. . . . . . . . . .

MOV AX, A ;Передача входных

MOV DX, B ;параметров

CALL SubW ;Вычисление D=AB

MOV D, AX ;Передача результата

Code ENDS

ENDStart ;Конец главного модуля.

Библиотека объектных модулей создается следующим образом:

1) трансляция файловых модулей ADDW.asm и SUBW.asm с помощью команд:

MASM ADDW; Трансляция файла ADDW.asm

MASM SUBW;Трансляция файла SUBW.asm,

в результате которой создаются объектные файлы ADDW.obj и SUBW.obj;

2) создание библиотеки с помощью команд:

LIB ARITHM+ADDW,, Создание библиотеки ARITHM.lib с включением в нее модуля ADDW.obj

LIB ARITHM+SUBW,,Включение модуля SUBW.obj в библиотеку ARITHM.lib.

В результате создается библиотека ARITHM.lib, содержащая оба модуля (ADDW и SUBW).

Подготовка основной программы к исполнению в этом случае осуществляется следующим образом:

1) трансляция файлового модуля PROG.asm с созданием объектного файла PROG.obj с помощью команды

MASM PROG;

2) компоновка программы редактором связей с подключением библиотеки с помощью команды

LINK PROG,,,ARITHM

При этом создается исполняемый файл прикладной программы PROG.exe, путем исполнения которого в отладчике легко убедиться в достоверности полученного результата.

Соседние файлы в папке Микропроцессорные системы (книга Комаров)