Команды микропроцессорной техники




ASSUME CS:CODSEG, DS:DATSEG - часть 6


Каждое имя, определяемое в данном модуле, может быть указано в директиве PUBLIC только один раз. Рекомендуется директивы PUBLIC и EXTRN сгруппировать в начале модуля.

            Тип, фигурирующий в директиве EXTRN, должен совпадать с типом имени , определенным в другом модуле.

            Примеры:

                                   PUBLUC                    NED, MUR, SVAL

                                   EXTRN                       DAD:BYTE, IVN:FAR, KRN:ABS

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

Директива END.

            Каждый модуль должен заканчиваться этой директивой, для указания транслятору, что текст данного модуля закончен.

Директива END  имеет формат

                                               END [<пусковой адрес>]

В каждом исходном модуле может быть только одна директива END в последней строке модуля. Пусковым адресом является метка той команды, с которой должно начаться выполнение программы. При объединении нескольких модулей только в одном из модулей (главном) должен быть указан пусковой адрес.

Директивы объединения логических элементов.

            При объединении модулей в одну программу возникает задача объединения логических сегментов, из которых состоит каждый модуль. Если эту задачу не решать, то при передаче управления одного модуля к другому необходимо изменять содержимое сегментного регистра CS, а при обращении к данным - сегментного регистра DS. Возникают сложности и при организации стека при объединении модулей.

            Поэтому, если объединенный размер сегментов кода объединенных модулей размером меньше 64 Кбайт, то сегменты кодов модулей лучше объединять так, чтобы к содержащимся в них командам можно было обращаться при одном и том же содержимом регистра CS.




Содержание  Назад  Вперед