Читать «Assembler. Программирование на языке ассемблера IBM PC» онлайн - страница 153

Unknown Author

Отметим, что имена и расширения файлов с объектным модулем и листингом могут быть любыми. Однако рекомендуется этим файлам давать то же имя, что было у файла с исходным модулем (Ml), иначе при наличии многих м&улей легко запутаться в том, какой файл к.какому модулю относится. Это общий принцип именования файлов в ПК: файлам, относящимся к одной и той же программе (модулю), рекомендуется давать одинаковые имена, а вот различать эти файлы следует по расширениям. При этом обычно придерживаются определенной системы в использовании расширений, например, файлам с текстами программ наЯА дают расширение ASM, файлам с объектными модулями - расширение OBJ (object), файлам с листингом - расширение LST (listing) и т. д. Выгода от этих расширений в том, что их можно опускать: если в качестве первого параметра приказа MASM указано имя файла без точки и расширения, то подразумевается именно расширение ASM, во втором параметре по умолчанию подразумевается расширение OBJ и т. д.

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

Объединение (компоновка) модулей

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

btNK M1.0BJ+...+Mk.OBJ, М.ЕХЕ;

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

Ml.OBJ Mk.OBJ

М.ЕХЕ

Отметим, что если файлы с объектными модулями имеют расширение OBJ, то это расширение вместе с точкой можно опустить. Файл же, в который записывается единая машинная программа, обязан иметь расширение EXE, а его имя может быть любым (обычно ему дают имя одного из модулей).

Запуск программы на счет

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

М.ЕХЕ (расширение EXE вместе с точкой можно и опустить).

По этому приказу СЮ отыскивает на диске файл с указанным именем, записывает его в оперативную память и, считая, что в файле хранится машинная программа, передает ей управление. (Более точно, по приказу вызывается специальная программа - загрузчик, который и выполняет указанные действия, корректируя при этом вызванную машинную программу - настраивая ее на то место памяти, в которое она была помещена.) Получив управление, машинная программа начинает выполняться. Когда ее выполнение закончится (по команде FINISH), то управление возвращается в СЮ и мы снова получаем право выполнить любой приказ ОС.