Особенности разработки программ в MASM
Для успешной работы с ассемблером MASM корпорации Microsoft в современных операционных средах (WindowsNT\2000\XP) необходимо иметь версию 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 в пакете MASM6.13 можно объяснить соображениями совместимости с предыдущими версиями пакета, поэтому особого смысла в ее использовании нет.
Далее приведены форматы командных строк для запуска программ ml.exe, Masm.exe и link.exe, а описание их ключей можно найти в приложении В(http:// www.piter.com/download).
Командная строка mL.exe имеет вид
ml [ключи] исх_файл_1 [[ключи] исх_файл_2] ... [/link ключи_linк]
Ключи командной строки для ml.exe чувствительны к регистру.
Командная строка masm.exe имеет вид
masm [ключи] исх_файл [, [объектный_файл] [, [файл_листинга]
[, [файл_перекрестных_ссылок]]]]
Компоновщик компонует (объединяет) объектные файлы и библиотеки в исполняемый файл или динамически компонуемую библиотеку (DLL). Командная строка link.exe имеет вид
link[ключи] объект_файлы [,[исполн_файл] [,[файл_карты] [,[файлы_библиотек] [.,def-файл]]][;]
Так же как и в случае пакета TASM, для эффективной работы с MASM нужно провести некоторую дополнительную работу. Исполняемые файлы пакета MASM 6.13 находятся в двух каталогах: ..\BIN и ..\BINR. Для удобства работы их лучше объединить в одном каталоге, к примеру, в каталоге ..\WORK. После этого остается поместить туда исходный файл. Пример командной строки для получения пригодного к отладке исполняемого модуля может быть следующим:
ML.EXE /Zi /Fl Prg_6_l.asm
Если нет синтаксических ошибок, то можно запускать отладчик: CV.EXE PRG_6_1.EXE
Итоги
Структура программы на ассемблере отражает особенности архитектуры процессора. Для процессоров Intel типичная программа состоит из трех сегментов: кода, стека и данных. Но это не обязательное условие; например, если программа не использует стек и для ее работы не требуется определения данных, то она может состоять всего лишь на одного сегмента кода.
- Программа на ассемблере работает на уровне аппаратных средств, входящих в программную модель процессора, которая описана в главе 2.
- При разработке алгоритма работы программы и его реализации на ассемблере программист сам должен беспокоиться о размещении данных в памяти, об эффективном использовании ограниченного количества регистров, об организации связи с операционной системой и другими программами. Специфика разработки программы на ассемблере состоит в том, что программист должен уделять внимание не только и не столько особенностям моделирования предметной области, сколько тому, как при этом наиболее эффективно и корректно использовать ресурсы процессора.
- В результате работы транслятора создаются файл объектного модуля и файл листинга программы, содержащий разнообразную информацию о программе: объектный код, сообщения о синтаксических ошибках, таблицу СИМВОЛОВ и т. д. Имея небольшой опыт, из файла листинга можно извлечь массу полезной информации.
- После получения корректного объектного модуля программу необходимо скомпоновать. Для этого применяется утилита-компоновщик, одним из ОСНОВНЫХ назначений которой является разрешение внешних ссылок. Если целевая программа состоит из нескольких отдельно оттранслированных модулей и в них есть взаимные ссылки на переменные или модули, то компоновщик разрешает их, формируя тем самым правильные перемещаемые адреса.
- Результатом работы компоновщика является исполняемый (загрузочный) модуль, имеющий расширение .ехе. Его уже можно запускать в надежде, что он правильно вы полнит задуманные программистом действия. Но чаше всего при первых запусках программы этого не случается, что говорит о наличии в программе логических ошибок, поиск которых без специальных средств может быть долгим. Для поиска и устранения логических ошибок предназначен специальный вид программного обеспечения - отладчики. С их помощью в большинстве случаев довольно быстро удается снять большинство программных проблем подобного рода.
Контрольные вопросы
1. Жизненный цикл программы – этапы;
2. каждой тетраде можно поставить в соответствие одну…
3. для преобразования кода символа шестнадцатеричной цифры в соответствующее двоичное число есть два пути: …
4. Алгоритм преобразования должен различать прописные и строчные буквенные символы шестнадцатеричных цифр и корректировать значение ASCII-кода на величину…
5. после записи значения шестнадцатеричной цифры следует символ «h» - зачем?
6. общая схема процесса разработки программы на ассемблере - рис.;
7. На этапе трансляции решается несколько задач: …;
8. Итог работы ассемблера — два файла:…;
9. При использовании пакета TASM получение объектного модуля исходного файла производится программой (ассемблером)…;
return false">ссылка скрыта10. Перед работой с программой tasm.exe желательно провести некоторые подготовительные операции. После установки пакета TASM в каталоге \TASM\BIN…;
11. Для устранения ошибок нужно…;
12. файл листинг – для чего?
13. исходный файл наассемблере в общем случае может содержать конструкции следующих типов:…;
14. После устранения ошибок и получения объектного модуля можно приступать к следующему этапу — созданию исполняемого (загрузочного) модуля, или, как еще называют этот процесс, к… - зачем?
15. Результатом работы компоновщика является создание загрузочного файла с расширением …;
16. Отладка программы – назначение?
17. Отладчики бывают двух типов:…;
18. Отладчик позволяет решить две главные задачи:…;
19. Как произвести запуск отладчика?
20. Управление работой отладчика ведется с помощью системы меню. Имеются два тина таких меню:…;
21. Запустить программу в отладчике можно в одном из четырех режимов:;
22. Режим безусловного выполнения программы целесообразно применять…, и как;
23. Режим выполнения программы до текущего положения курсора целесообразно применять…, и как;
24. В режиме выполнения программы с установкой точек прерывания целесообразно применять…, и как;
25. Режим выполнения программы по шагам применяется для детального целесообразно применять…, и как;
26. Окно CPUотражает состояние процессора и состоит из пяти подчиненных окон…;
27. Особенности разработки программ в MASM - в него входят следующие основные программы:….
Темы и вопросы для самостоятельного обучения
Вопросы для самостоятельного изучения