Приложение 1
Ассемблирование программ (получение машинного кода из ассемблерного листинга)
Шаг 1. Загрузка MASM 6.10—6.13
Для перевода ассемблерного файла в машинный код необходимо воспользоваться специальной программой-ассемблером. Наиболее популярным можно назвать мощный и свободно распространяемый Microsoft Macro Assembler версий 6.10—6.13, который позволяет создавать машинный код как для операционной системы MS-DOS, так и для Windows. Если у вас уже установлено необходимое программное обеспечение, то просто переходите ко второму шагу.
Загрузите с сайта http://www.Kalashnikoff.ru самораспаковывающийся архив самой программы MASM.EXE (около 6 Мбайт). Эта программа уже распакованная также находится на прилагаемом компакт-диске; достаточно просто переписать её на ваш жёсткий диск и можно работать.
Если же вы скачали архив с сайта, то распакуйте полученный архив. Для этого запустите загруженный файл MASM.EXE в ОС Windows и укажите каталог, в который необходимо сохранить файлы из архива.
Зайдите в каталог, в который был распакован архив с MASM (то, что вы указали в п. 2 выше).
В подкаталоге BIN находятся основные программы. В нем вы можете создавать ASM-файлы и ассемблировать их так, как описывается ниже.
Шаг 2. Ассемблирование
Программа-ассемблер (MASM, TASM, WASM, NASM и пр.) создает объектный файл с расширением obj. Данный файл является переходным между ассемблерным файлом (asm) и программой (com/exe).
В случае если ассемблерный листинг слишком большой, то программу разбивают на несколько частей. В большинстве случаев обходятся директивой include (таким образом мы ассемблировали нашу оболочку).
Однако, если файлы, присоединяемые указанной выше директивой, большие и в основном неизменяемые (т. е. готовые процедуры, не требующие редактирования), то постоянное ассемблирование этих процедур может занять много времени. В таком случае, каждая отдельно взятая часть программы (ассемблерный код) ассемблируется по отдельности, при этом создается один или несколько объектных файлов (с расширением obj), которые не требуют постоянного ассемблирования, только компоновки (линковки) (см. шаг 3).
Шаг 3. Компоновка
Если в процессе ассемблирования не было выявлено ошибок в ассемблерном листинге, то программа-ассемблер создаcт объектный файл (с расширением obj).
Затем необходимо воспользоваться компоновщиком (линковщиком), которые входят в комплект программы-ассемблера. Данная процедура выполняется гораздо быстрее ассемблирования.
Именно компоновщик создает готовый к запуску файл (программу) с расширением com или exe из объектного файла (obj). Оба типа имеют отличия в структуре ассемблерной программы. Первый тип (COM) не может превышать 64 Кбайта и используется только в MS-DOS (и для совместимости поддерживается в Windows), однако он очень компактный и удобный для написания небольших программ и резидентов. В большинстве случаев, если программа написана на чистом ассемблере под MS-DOS, нет необходимости создавать EXE-файлы. В настоящей книге в первой части рассматриваются именно программы типа COM.
В отличие от создания программ типа COM, при создании стандартных EXE-программ под MS-DOS нет необходимости указывать какие-либо параметры линковщику при компоновке. Дело в том, что компоновщик не может автоматически определить какой тип подвергается компоновке.
Линковщик также проверяет, нет ли каких-либо ошибок в объектном файле, но не грамматических, а логических. Например, отсутствие необходимой объектной библиотеки, указанной в самом файле либо в командной строке (программа-ассемблер этого не делает).
Если ошибок не было обнаружено, компоновщик создает машинный код (программу типа COM или EXE), которую можно запускать на выполнение.

Исходя из всего вышеизложенного, делаем вывод, что для создания машинного кода необходимо воспользоваться как минимум двумя программами: программой-ассемблером и компоновщиком. Однако для MASM версий 6.00—6.13 достаточно запустить файл ml.exe, указав в командной строке параметр /AT в процессе ассемблирования. В таком случае MASM (если не было ошибок в ассемблерном листинге) автоматически запустит компоновщик (LINK.EXE), который создаст файл типа COM.
Ассемблирование и компоновка программ пакетами Microsoft (MASM)
Допустим, вы создали в текстовом редакторе файл с именем PROG.ASM.
Если вы используете MASM 6.11—6.13, в командной строке необходимо указать следующее:
> ML.EXE PROG.ASM /AT
В результате будут созданы два файла: PROG.OBJ и PROG.COM. Файл PROG.OBJ, скорее всего, вам больше не понадобится, и его можно удалить, а PROG.COM можно запускать на выполнение. Это и будет машинный код ассемблерной программы. Параметр /AT указывает программе-ассемблеру (MASM), что после ассемблирования, в случае, если ошибок не будет обнаружено, следует запустить компоновщик (LINK.EXE) и передать ему параметры для создания файла типа COM.

Параметр /AT должен быть набран ЗАГЛАВНЫМИ символами!