![]()
PUSH BP для обслуживания
mov BP, SP стека

![]()
![]()
PUSH сохранение регистров,
используемых в процедуре
![]()
![]()

тело проц.

![]()
РОР... восстановление регистров

![]()
РОР ВР восстановление BP
![]()
![]()

RET {cnt}


{имя проц} ENDP
Основные средства обработки программ на ЯА
Программные пакеты MASM и TASM
Процесс подготовки и отладки программы на ЯА включает в себя этапы подготовки исходного модуля (ИМ), трансляции, компоновки и отладки.
1. Подготовка исходного модуля (текста программы) может выполняться с помощью любого текстового редактора. Файл с исходным текстом должен иметь расширение. ASM.
Следует использовать редакторы, формирующие выходной файл в формате ASCII без дополнительных символов, которые вставляют специализированные текстовые редакторы (например, MS Word). Рекомендуются редакторы Norton Editor, WordPad.
При работе в интегрированных средах можно пользоваться редакторами, строенными в эти среды. Например, программные пакеты фирмы Borland, такие как C, C++, Pascal, содержат средства создания ассемблерных программ и фрагментов.
2. Трансляция ИМ состоит в преобразовании строк исходного языка в коды машинных команд и выполняется с помощью транслятора (ассемблера).
Можно пользоваться трансляторами
MASM фирмы Microsoft или
TASM фирмы Borland.
Ассемблеры различаются в основном в чести написания макросредств, но входной язык для всех ассемблеров одинаков. После трансляции образуется объектный модуль (ОМ), т. е. файл с расширением. OBJ.
Трансляторы вызываются командами MS DOS
MASM name
TASM name
где name – имя файла ИМ без расширения.
Ассемблер формирует ОМ с тем же именем, кроме того, формируются файлы:
- листинга. LST (list)
- перекрестных ссылок. CRF (Cross reference).
В команде ассемблирования можно указать путь к файлу или при помощи опций трансляции внести изменения.
Например,
MASM D:\SRC\bild
Здесь обрабатывается файл bild. asm из папки SRC.
Общий вид команды ассемблирования на примере MASM:
MASM {ИМ} [,{ОМ} [,{list}[,{cross}]]] [/{опции}]
Имена {ИМ} ,{ОМ} ,{list},{cross} могут указываться без расширения или с ним; можно отменить формирование одного из файлов или их группы. Т. К. порядок файлов фиксирован, то исключение из середины списка обозначается появление двух запятых подряд, а отключение конца списка обозначается точкой с запятой. Например,
TASM FIL1
эквивалентно
TASM FIL1;
Для MASM возможны три эквивалентные записи:
MASM FIL1.asm, FIL1.obj, FIL1.lst, FIL1.crf
MASM FIL1,,,
MASM FIL1, FIL1, FIL1, FIL1
Опции управляют работой ассемблера и форматом генерируемых файлов. Опции предваряются знаком «/» или «-». Набор опций варьируется в зависимости от пакета TASM или MASM, а также от версии.
Ниже приведен список общих опций:
/А – упорядочить сегменты в алфавитном порядке
/С – формировать файл перекрестных ссылок
/L – формировать файл листинга
/ML – считать заглавные и строчные латинские буквы в именах различными
/T – отменить сообщение об успешном ассемблировании
/Zi - воспроизводить на экране ошибочные строки
Опций может быть несколько, они разделяются пробелами и размещаются:
- в MASM – в любом месте списка,
- в TASM – в начале перед списком имен.
Например,
TASM /L /Zi P, P1
Здесь обрабатывается файл P. asm, формируются файлы P. lst и P1.obj
MASM /Zi St,,Stest
Обрабатывается файл St. asm, формируется файл Stest. lst
3. Компоновка ОМ выполняется с помощью компоновщика (редактора связей), вызывается командами MS DOS
LINK name – совместимо с MASM
TLINK name – совместимо с TASM
Основное назначение – подключение к файлу с основной программой файлов с подпрограммами и настройка связей, изменение формата ОМ и преобразование его в загрузочный файл (.EXE).
Полный формат команды на примере LINK:
LINK {ОМ} [,{загр.}[,{карта}[,{библ.} ]]] [/{опции}]
где {ОМ} – имя файла или их последовательность, разделенная знаком «плюс» или пробелами;
{загр.} – имя загрузочного файла;
{карта} – имя файла, содержащего т. н. карту сборки, описывающую все общие символы, с расширением. MAP;
{библ.} - имя файла библиотеки или их последовательность, разделенная знаком «плюс» или пробелами.
Имена файлов могут указываться без расширения.
Опции в LINK и TLINK не совпадают!
Примеры:
TLINK P1;
формируются файлы P1.exe, P1.map
LINK P1;
формируется файл P1.exe
Использование опций:
LINK/MAP P1;
формируются файлы P1.exe, P1.map
LINK/C0 P1+P2,P3,P3,LIB1+LIB2
Компоновка и подключение библиотек, опция /C0 была рассмотрена ранее в разделе «расположение процедур».
В TASM можно подключить библиотеки в программе и нет необходимости указывать файлы в команде TLINK. В этом случае используется директива INCLUDE.
После компоновки загрузочный файл с расширением. EXE можно запускать.
4. Отладчики – это специальные программы, облегчающие отладку программ на ЯА. Наибольшее распространение получили три отладчика:
Debug – отладчик, входящий в MS DOS,
CV (Code View) – фирмы Microsoft, входит в пакет MASM,
TD (Turbo Debugger) – фирмы Borland, входит в пакет TASM.
Вызов на примере Debug производится командой
Debug P[.exe]
Общее требование – наличие загрузочного файла.
Рассмотрим подробнее использование отладчиков.
а) Debug позволяет записать программу на ЯА или в машинных кодах, запускать ее в разных режимах (с точками останова или без них, а также в пошаговом режиме), просматривать области памяти, регистры и при необходимости вносить изменения;
б) Code View – интерактивный отладчик, вся работа с ним осуществляется в непрерывном диалоге с пользователем;
в) Turbo Debugger – также интерактивный отладчик.
CV и TD имеют общие свойства, а именно они:
- имеют систему многооконного изображения на экране, позволяющую при выполнении программы видеть изменение содержимого регистров МП, флагов, выбранных ячеек памяти;
- позволяют запускать программу в пошаговом режиме, по участкам или по циклам;
- позволяют в ходе отладки вносить изменения в содержимое регистров МП и областей памяти.
Основное общее неудобство отладчиков CV и TD состоит в том, что нельзя вносить изменения в текст программы, хотя он и отражается на экране монитора. Изменения в текст приходится вносить в редакторах, затем необходимы ассемблирование и компоновка, после чего можно проверять исправленную программу на отладчике или без него.
Модели памяти
Пакет TASM дает возможность упрощенного описания сегментной структуры программ на ЯА. Для этого введено понятие «модели памяти», которое объединяет особенности автоматического распределения памяти при ассемблировании.
Модель памяти определяет следующие параметры:
- количество сегментов, их расположение, перекрытие и т. п.;
- размерности и свойства переменных и предопределенных значений в программе (например, тип процедур NEAR или FAR).
Обычно модель памяти используется по умолчанию и определяется ассемблером в зависимости от числа сегментов, но можно задать модель памяти с помощью директивы ЯА, располагаемой в начале файла с программой, что позволяет использовать упрощенные формы описания сегментов. Общий вид директивы
.MODEL {тип}
где {тип} – может принимать следующие значения:
а) tiny – ИМ состоит из одного сегмента, т. е. регистры CS, DS и SS имеют одно и то же значение; наиболее компактная программа, занимающая £64КБ, все переходы – типа NEAR;
б) small – сегмент кода отделен от сегментов данных и стека, последние объединены в одну группу, т. е. DS и SS имеют одно и то же значение; наиболее распространенная модель памяти, все переходы – типа NEAR;
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 |


