III. Особенности разработки программ в masm
Для успешной работы с ассемблером MASM корпорации Microsoft в современных операционных средах необходимо иметь версию 6.13 этого пакета или выше. В него входят следующие основные программы:
masm.exe — ассемблер;
ml.exe — ассемблер и компоновщик (Masm and Link); link.exe — компоновщик;
cv.exe — отладчик (CodeView);
lib.exe, implib.exe, nmake.exe, cref.exe, h2inc.exe, exehdr.exe, cvpack.exe, helpmake.exe, rm.exe, undel.exe, exp.exe — вспомогательные утилиты.
В пакете MASM изначально предпринимались попытки совместить удобство средств программирования, свойственных языкам высокого уровня, с традиционными средствами машинно-ориентированных языков. Например, буква М в названии пакета означает слово macro, то есть возможность создания макроопределений (или макросов), представляющих собой именованные группы команд. Их можно вставлять в программу в любом месте, указав только имя группы. Когда-то такая возможность действительно была отличительным свойством этого пакета, но сейчас этим никого не удивишь — макросредства есть во всех ассемблерах для платформы Intel (например, TASM), но, тем не менее, название осталось.
С помощью пакета MASM разработка программ выполняется традиционным для ассемблерного программирования способом — запуском отдельных программ трансляции, компоновки и отладки. Для этого используются программы masm.exe, ml.exe, link.exe и cv.exe.
Во избежание путаницы необходимо отметить, что трансляция исходного файла может производиться двумя программами: masm.exe и ml.exe. В чем разница? До выхода MASM версии 5.1 включительно программа masm.exe была самостоятельным транслятором ассемблера. Начиная с MASM версии 6.0 трансляция ассемблерного файла обычно выполняется программой ml.exe, которая кроме трансляции файла вызывает компоновщик link.exe. Это изменение сделано с целью унификации вызовов
компиляторов командной строки для всех поддерживаемых этой фирмой языков программирования. К примеру, компиляцию программы на языке С из командной строки выполняет программа cl.exe. Ее задачи — компиляция исходной программы на языках C/C++ и, при отсутствии синтаксических ошибок, компоновка и формирование исполняемого модуля. Аналогичные задачи решает и программа ml.exe. Хотя в пакете MASM 6.13 допустимо использование программы masm.exe, нужно иметь в виду, что запуск link.exe в этом случае также должен выполняться отдельно. Наличие программы masm.exe в пакете MASM 6.13 можно объяснить соображениями совместимости с предыдущими версиями пакета, поэтому особого смысла в ее использовании нет.
Далее приведены форматы командных строк для запуска программ ml.exe, masm.exe и link.exe, а описание их ключей можно найти в документации.
Командная строка ml.exe имеет вид
ml [ключи] исх_файл_1 [[ключи] исх_файл_2] . . . [/link ключи_11пК]
Ключи командной строки для ml.exe чувствительны к регистру. Командная строка masm.exe имеет вид
masm [ключи] исх_файл [, [объектный_файл] [, [файл_листинга] [, [файл_перекрестных_ссылок]]]]
Компоновщик компонует (объединяет) объектные файлы и библиотеки в исполняемый файл или динамически компонуемую библиотеку (DLL). Командная строка Link.exe имеет вид
link [ключи] объект_файлы [,[исполн_файл] [,[файл_карты] [,[файлы_6иблиотек]
[ , [ с ! е т _ ф а й л ] ] ] ] ] [ ; ]
Для эффективной работы с MASM нужно провести некоторую дополнительную работу. Исполняемые файлы пакета MASM 6.13 и выше находятся в двух каталогах: ..\BIN и ..\BINR. Для удобства работы их лучше объединить в одном каталоге, к примеру, в каталоге ..\WORK. После этого остается поместить туда исходный файл. Пример командной строки для получения пригодного к отладке исполняемого модуля может быть следующим:
ML.EXE /Zi /Fl prg.asm
Если нет синтаксических ошибок, то можно запускать отладчик:
CV.EXE prg.exe
Литература
Юров В.И. Assembler. Учебник для ВУЗов. 2-е изд. – СПб.: Питер, 2003 – 637 с.: ил.
3
