Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler (Уч_пос_Лаб_Ч1).doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.43 Mб
Скачать

9.2.6. Ассемблирование и компоновка отдельных модулей в программу. Создание библиотеки объектных модулей

Выше, в параграфе п. 9.2.5 нами была рассмотрена структура программных модулей, допускающих независимое ассемблирование с помощью команды tasm в том же формате, который первоначально был рассмотрен в первой лабораторной работе. Например, пускай имеется главный модуль main.asm и два вспомогательных x.asm и y.asm. Производим последовательное ассемблирование (порядок произвольный):

tasm main.asm

tasm x.asm

tasm y.asm

Если в вашем рабочем каталоге находятся только эти модули с расширеним .asm, то ассемблирование можно произвести одной командой tasm *.asm. Следующим шагом на пути получения единого исполняемого файла программы является сборка полученных объектных модулей с помощью команды компоновщика tlink. Если мы хотим, чтобы имя исполняемого файла совпадало с именем главного модуля (типовой случай), то он должен быть первым в списке объектных модулей (разделяются пробелами или знаком плюс):

Tlink main.obj x.obj y.obj

Для определения другого имени программы, например, calculator – имя добавляется в конце после запятой:

Tlink main.obj x.obj y.obj ,calculator

  

Перейдём теперь к вопросу создания библиотеки объектных модулей. Если Вы в процессе разработки ассемблерных программ создали несколько хороших процедур, которые могут использоваться в других ваших программах, то данные процедуры (однородные по своему функциональному назначению) можно скомпоновать в ассемблерные модули, допускающие независимое ассемблирование. Полученный таким образом объектный модуль может быть с помощью утилиты tlib (Turbo Library) загружен в библиотеку объектных модулей (БОМ). БОМ – это дисковый файл с расширением .lib, содержащий объектные модули, прошедшие стадию ассемблирования и включающие процедуры, часто используемые при создании новых программ. Чтобы воспользоваться процедурой, входящей в состав БОМ, надо вызвать её из вашей программы командой Call, предварительно определив её в качестве внешней процедуры директивой Extrn. В процессе компоновки tlink самостоятельно просмотрит БОМ и подсоединит к программе объектный код того модуля, в котором содержится соответствующая процедура. Библиотекарь можно вызвать, набрав команду tlib в командной строке. Общая форма вызова следующая:

TLIB 4.00 Copyright (c) 1987, 1996 Borland International

Syntax: TLIB libname [/C] [/E] [/P] commands, listfile

Libname Имя создаваемой или существующей библиотеки (полный путь)

/C Устанавливает чувствительность к регистру в именах

/E Создаёт расширенный словарь библиотечных имён. Помещается в

конце файла библиотеки и служит для облегчения поиска компонов-

щиком нужной процедуры

/Psize Устанавливает размер библиотечной страницы

Commands Последовательность операторов (опций) для исполнения

+ Добавить имя модуля в библиотеку

– Удалить имя модуля из библиотеки

* Извлечь имя модуля без удаления

–+ или +– Заменить имя модуля в библиотеке

–* или *– Извлечь имя модуля и удалить

listfile Имя для файла листинга

Рассмотрим примеры работы с библиотекарем Turbo Library

  • Создание библиотеки mylib.lib из двух модулей x.obj и y.obj:

Tlib/E mylib +x.obj +y.obj

  • Создание библиотеки mylib.lib и получение листинга. Листинг – это алфавитный список модулей вместе с общими переменными (процедурами), которые в них объявлены:

Tlib/E mylib +x.obj +y.obj, mylib.lst

  • Получение листинга mylib.lst существующей библиотеки mylib.lib:

Tlib mylib, mylib.lst

  • Замена модуля x.obj на новую копию и удаление из библиотеки модуля y.obj: Tlib mylib –+x.obj –y.obj

В случае, если модули x.obj и y.obj и есть те самые вспомогательные модули программы, главный модуль которой является main.obj, то исполняемый файл с именем main можно создать командой (обратите внимание на три запятые после имени главного модуля):

Tlink main.obj ,,, mylib.lib

В общем случае в команде формирования исполняемого файла указываются все необходимые объектные модули, которые не вошли в библиотеку. Если программа использует несколько библиотек, то они записываются через пробелы:

Tlink main.obj ,,, mylib1.lib mylib2.lib

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