Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет ОМТ 123.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
478 Кб
Скачать
☆
    1. Получение исполняемого файла

Рассмотрим основные этапы перевода программы из ASCII-кода в машинный код. Текст программы на Ассемблере набирается в любом текстовом редакторе и сохраняется в файле с расширением ASM. Перевод этого файла в EXE-программу происходит в два этапа:

перевод текста программы в машинные коды (ассемблирование);

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

Для ассемблирования используется программа MASM.EXE. При выполнении этой программы запрашиваются имена четырех файлов:

SOURCE FILENAME - имя исходного файла.

OBJECT FILENAME - имя OBJ-файла. В результате работы этой программы получается файл с расширениемOBJ;

SOURCE LISTING - имя файла, содержащего листинг трансляции. В этом файле находится, наряду с исходным текстом программы, его машинное представление;

CROSS-REFERENCE - имя файла, содержащего ссылки команд на различные поля данных. Этот файл полезен при написании больших программ.

    Если в результате ассемблирования не обнаружено ошибок, то можно переходить к компоновке объектного модуля. Для ее проведения используется программа LINK.EXE. Она запрашивает имена четырех файлов:

OBJECT MODULES - список OBJ-файлов, из которых компонуется окончательная программа;

RUN FILE - имя исполняемого файла;

LIST FILE - имя файла, где будут находиться таблица имен и размеров сегментов и ошибки, обнаруженныеLINK;

LIBRARIES - имена подключаемых библиотек.

    Если процесс линковки произошел без ошибок, то получится файл с расширением EXE.

    EXE-файл получается и тогда, когда планировалось получить COM-файл. Если программа создается как COM-файл, то компоновщиком будет выдано сообщение:

Warning: No STACK Segment.

    Это сообщение можно игнорировать, так как определение стека в программе не предполагалось. Для преобразованияEXE-файла в COM-файл используется программа EXE2BIN, общий вид использования которой следующий:

EXE2BIN <EXE-файл> <COM-файл> .

    Таким образом, на диске будут находиться два файла с одинаковыми именами, но различными расширениями.

    В качестве примера получим COM-файл из приведенной на предыдущем шаге программы.

Получим OBJ-файл. Для этого сформируем следующую командную строку:

MASM.EXE PR25_1.ASM .

    В результате на диске получим файл PR25_1.OBJ.

   

Получим EXE-файл. Для этого сформируем следующую командную строку:

LINK.EXE PR25_1.OBJ .

    В результате на диске получим файл PR25_1.EXE. Однако, помимо EXE-файла на экран будет выведено сообщение:

Warning: No STACK Segment.

Поэтому нужно перевести полученный EXE-файл в соответствующий COM-файл (понятно, что следующий пункт не выполняется для создаваемых EXE-файлов).

   

Получим COM-файл. Для этого сформируем следующую командную строку:

EXE2BIN.EXE PR25_1.EXE PR25_1.COM .

В результате на диске получим файл PR25_1.COM, который можно выполнить. На экране появится число 8.

    Замечание. В некоторых случаях при выполнении последнего шага программа EXE2BIN генерирует следующее сообщение: Incorrect DOS version. В этом случае нужно обновить таблицу версий, воспользовавшись служебной программой SETVER.EXE, входящей в операционную систему Windows.

    Формат использования этой программы следующий (приводится содержимое командной строки):

SETVER.EXE EXE2BIN.EXE 6.22

    Отметим также, что в последних версиях операционной системы Windows в папке Windows/System32находится программа EXE2BIN.EXE. В этом случае можно воспользоваться ею и не обновлять таблицу версий.