assembler. Учебник для вузов_Юров В.И_2003 -637с (862834), страница 32
Текст из файла (страница 32)
Например, буква «М» в названии пакета означает слово «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. Это изменениесделано с целью унификации вызовов компиляторов командной строки для всехподдерживаемых этой фирмой языков программирования. К примеру, компиляцию программы на языке С из командной строки выполняет программа cLexe. Еезадачи — компиляция исходной программы на языках C/C++ и, при отсутствиисинтаксических ошибок, компоновка и формирование исполняемого модуля.
Аналогичные задачи решает и программа ml.exe. Хотя в пакете MASM 6.13 допустимоиспользование программы masm.exe, нужно иметь в виду, что запуск link.exe в этомслучае также должен выполняться отдельно. Наличие программы masm.exe в пакете MASM 6.13 можно объяснить соображениями совместимости с предыдущимиверсиями пакета, поэтому особого смысла в ее использовании нет.Далее приведены форматы командных строк для запуска программ ml.exe,masm.exe и link.exe, а описание их ключей можно найти в приложении В (http://www.piter.com/download).142Глава 6. Первая программаКомандная строка ml.exe имеет видml [ключи] исх_файл_1 [[ключи] исх_файл_2] . . . [ / l i n k ключи_11пК]Ключи командной строки для ml.exe чувствительны к регистру.Командная строка masm.exe имеет видmasm [ключи] исх_файл [, [объектный_файл][, [файл_перекрестных_ссылок]]]][,[файл_листинга]Компоновщик компонует (объединяет) объектные файлы и библиотеки в исполняемый файл или динамически компонуемую библиотеку (DLL).
Команднаястрока Link.exe имеет видlink [ключи] объект_файлы [,[исполн_файл][,[файл_карты][,[файлы_6иблиотек][,[с!ет_файл]]]]][;]Так же как и в случае пакета TASM, для эффективной работы с MASM нужнопровести некоторую дополнительную работу. Исполняемые файлы пакетаMASM 6.13 находятся в двух каталогах: ..\ВШ и ..\BINR. Для удобства работы ихлучше объединить в одном каталоге, к примеру, в каталоге ..\WORK. После этогоостается поместить туда исходный файл. Пример командной строки для получения пригодного к отладке исполняемого модуля может быть следующим:M L . E X E /Zi /Fl Prg_6_l.asmЕсли нет синтаксических ошибок, то можно запускать отладчик:C V .
E X E PRG_6_1.EXEОсобенности разработки программ в MicrosoftVisual StudioС программами на ассемблере можно работать в среде Visual Studio. Доступны дваварианта работы:создание и использование команд меню Tools;- создание полноценного проекта и настройка его параметров.Эти варианты не равнозначны. Первый вариант означает, по сути, скрытыйвызов программ ml.exe и cv.exe. Он хорошо подходит для разработки 16-разрядныхпрограмм и является для них единственно возможным. Второй вариант опираетсяна все возможности интегрированной среды, но подходит только для разработки32-разрядных программ (Windows-приложений). Мы ограничимся первым вариантом, поскольку второй требует изучения интегрированной среды Microsoft VisualStudio, что не относится к теме данной книги.Microsoft Visual Studio является удобной средой для создания и редактирования исходных текстов (и только).
Что касается самого процесса получения исполняемого модуля, то все действия, которые раньше выполнялись с помощью командной строки, здесь выполняются выбором соответствующей команды в меню Tools.Таким образом, задача сводится к созданию в меню Tools дополнительных команд,предназначенных для обращения к инструментальным средствам пакета ассемблера.Для того чтобы обсуждение было однозначным, необходимо условиться о том,что все нужные для работы файлы будут расположены, к примеру, в каталогеg:\MASM613\work. В этот рабочий каталог необходимо поместить содержимое каталогов g:\MASM613\BINR и g:\MASM613\BINR, а также файлы программы, с которой в данное время идет работа.
Для примера будем работать с программой из листинга 6.1.Процесс разработки программы143После открытия среды Visual C++ 6.0 выполняется следующая последовательность шагов.1. Выберите команду Tools > Customize и в появившемся диалоговом окне перейдите на вкладку Tools.Вкладка Tools позволяет добавлять пункты в меню Tools главного окна. Содержимое данной вкладки состоит из списка Menu contents, ряда текстовых полейи переключателей. Каждый пункт списка Menu contents связан со своими значениями остальных элементов вкладки Tools.
Логически эти элементы представляют собой набор параметров для вызова некоторой программы. Чтобы убедиться в этом, достаточно пройтись по нескольким элементам списка. Последнийэлемент списка обозначен пустым прямоугольником. С его помощью производится добавление новых подпунктов в выпадающее меню Tools главного меню.2. Чтобы создать команду для вызова программы ml.exe, введите в пустой пунктсписка Menu contents название новой команды, например Build ASM Program, и нажмите клавишу Enter.3. Настроим теперь параметры вызова программы ml.exe.
Для этого в поле Commandвведите g:\MASM613\Work\ml.exe, в поле Arguments — /Zi $(FileName).asm /link /со,в поле Initial directory — $(FileDir) и установите переключатель Use output window.4. Таким же образом можно добавить в меню Tools команду Debug ASM Program. Дляэтого в поле Command введите g:\MASM613\Work\cv.exe, в поле Arguments —$(FileName), в поле Initial directory — $(FileDir) и установите переключатель Closewindow on exiting.5. Для запуска полученного исполняемого модуля добавим еще одну командуExecute ASM Program.
Для этого в поле Command введите C:\WINDOWS\System32\cmd.exe, в полеАгдитеп15 — /С $(FileName), в поле Initial directory — $(FileDir).После выполнения этих шагов можно закрыть окно Customize и проверить работоспособность созданных команд меню Tools главного окна. Перед испытаниемв среду Visual Studio необходимо загрузить файл с текстом программы prg_6_l.asm(см. листинг 6.1). После открытия файла выберите команду Tools > Build ASM Program.При наличии синтаксических ошибок в окне Output появятся соответствующиесообщения. Для того чтобы перейти к строке исходного текста, вызвавшей недовольство компилятора, достаточно двойного щелчка мышью на строке с текстомошибки в окне Output. В результате этого курсор в окне с исходным текстом будетустановлен на строку с ошибкой.Если программа ml.exe отработала без ошибок, то полученный с ее помощьюисполняемый модуль можно либо сразу запустить, либо предварительно отладить.Запуск производится командой Tools > Execute ASM Program.
Для отладки выбирается команда Tools > Debug ASM Program, в результате чего вызывается отладчик cv.exe.Последний компилятор Visual C++ 7.0 из состава Microsoft Visual Studio Netтакже имеет настраиваемое меню Tools, поэтому при желании его среду также можно настроить для выполнения описанных ранее задач.Выбор пакета ассемблераКакой из пакетов ассемблера выбрать для практической работы? Если этот выборделать с точки зрения долгосрочной перспективы, то, безусловно, MASM. Причи-144Глава 6.
Первая программана для этого — продолжающаяся поддержка и развитие этого пакета фирмойMicrosoft. Для учебных целей более привлекателен TASM. В данном учебникевыбран промежуточный вариант — транслятор TASM в режиме MASM. Этот режим поддерживает почти все возможности транслятора MASM и создан специально для разработки переносимых (на уровне исходных текстов) программ. Такой подход имеет преимущества в том, что читатель, во-первых, получает навыкииспользования двух пакетов и, во-вторых, по мере познания особенностей пакетовстановится свободным в своем выборе.Процесс разработки программ с помощью пакетов TASM и MASM предполагает, что пользователь интенсивно работает с командной строкой. При этом он должен помнить не только последовательность запуска различных программ, формирующих исполняемый модуль, но и задаваемые при этом параметры программ.