Особенности разработки программ в 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, а описание их ключей можно найти в приложении В(https:// 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 получение объектного модуля исходного файла производится программой (ассемблером)…;

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 - в него входят следующие основные программы:….


Темы и вопросы для самостоятельного обучения

Вопросы для самостоятельного изучения


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: