На этом шаге мы рассмотрим порядок получения исполняемых файлов.
Рассмотрим основные этапы перевода программы из ASCII-кода в машинный код. Текст программы на Ассемблере набирается в любом текстовом редакторе и сохраняется в файле с расширением ASM. Перевод этого файла в EXE-программу происходит в два этапа:
Для ассемблирования используется программа MASM.EXE. При выполнении этой программы запрашиваются имена четырех файлов:
Если в результате ассемблирования не обнаружено ошибок, то можно переходить к компоновке объектного модуля. Для ее проведения используется программа LINK.EXE. Она запрашивает имена четырех файлов:
Если процесс линковки произошел без ошибок, то получится файл с расширением EXE.
EXE-файл получается и тогда, когда планировалось получить COM-файл. Если программа создается как COM-файл, то компоновщиком будет выдано сообщение:
Warning: No STACK Segment.
Это сообщение можно игнорировать, так как определение стека в программе не предполагалось. Для преобразования EXE-файла в COM-файл используется программа EXE2BIN, общий вид использования которой следующий:
EXE2BIN <EXE-файл> <COM-файл> .
Таким образом, на диске будут находиться два файла с одинаковыми именами, но различными расширениями.
В качестве примера получим COM-файл из приведенной на предыдущем шаге программы.
MASM.EXE PR25_1.ASM .
В результате на диске получим файл PR25_1.OBJ.
LINK.EXE PR25_1.OBJ .
В результате на диске получим файл PR25_1.EXE. Однако, помимо EXE-файла на экран будет выведено сообщение:
Warning: No STACK Segment.
EXE2BIN.EXE PR25_1.EXE PR25_1.COM .
Формат использования этой программы следующий (приводится содержимое командной строки):
SETVER.EXE EXE2BIN.EXE 6.22
Здесь 6.22 - номер версии DOS.
Отметим также, что в последних версиях операционной системы Windows в папке Windows/System32 находится программа EXE2BIN.EXE. В этом случае можно воспользоваться ею и не обновлять таблицу версий.
В программе из предыдущего шага на экран выводится число, состоящее из одной цифры. А как вывести на экран многозначное число? Ответ на этот вопрос мы дадим после рассмотрения других способов передачи управления (шаг 40: "Процедуры ввода и вывода многозначных чисел").
На следующем шаге мы начнем рассматривать команды условного перехода.