Студопедия — Процедуры формирования программы
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Процедуры формирования программы






 

У большинства существующих реализаций ассемблера нет интегрированной среды, подобной Turbo Pascal или Turbo C. Поэтому для выполнения функций по вводу кода программы, ее трансляции, редактированию и отладке необходимо использовать отдельные служебные программы.

Последовательность процедур формирования программы на языке ассемблера и совокупность порождаемых файлов показана на рисунке 2.

 
 

 

 


Рис. 2. Процесс обработки ассемблер-программы

 

В процессе формирования программы на языке ассемблера выделено 4 этапа:

- ввод исходного кода программы текстовым редактором,

- трансляция программы,

- создание загрузочного модуля,

- отладка программы.

Начальной процедурой создания программы на языке Ассемблера является ввод исходного текста программы в файл с расширением.asm. При этом может быть использован любой текстовый редактор, сохраняющий текст в виде стандартных кодов ASCII, например, редактор NC или блокнот. Основное требование к редактору, заключается в том, чтобы он (редактор) не вставлял посторонних символов (специальных символов форматирования).

Следующим шагом формирования программы является компиляция, которая носит специфическое название ассемблирование. Этот этап может быть выполнен программами ASM, MASM или TASM (сложность программ-компиляторов растет в указанной последовательности). Результатом выполнения этого этапа является программа в машинных кодах с расширением.obj, или, иначе, объектная программа, уже “понятная” микропроцессору. Естественно перевод состоится лишь в том случае, если исходный текст программы не содержит ошибок. Одновременно с объектным файлом могут быть созданы файлы листинга (*.lst) и перекрестных ссылок (*.crf). Рекомендуется файл листинга создавать обязательно, поскольку при наличии ошибок в листинге описывается характер ошибки сразу после ошибочной команды, что значительно упрощает внесение исправлений, особенно на этапе обучения.

Файл листинга содержит код ассемблера исходной программы, машинный (объектный) код каждой команды и ее смещение в кодовом сегменте (значение регистра IP). Кроме того, сообщения о найденных синтаксических ошибках в программе помещаются непосредственно после ошибочной команды (бывают исключения, когда ошибка не в самой команде, а ранее нее, но эти ситуации встречаются редко). Строки в файле листинга имеют следующий формат:

< глубина_вложенности>, < номер_строки>, < смещение>, < машинный_код>, < исходный код>,

где < глубина_вложенности> - уровень вхождения программного блока (программы, модуля, макроопределения, процедуры) в файл, < номер_строки> - номер строки в файле листинга, он фигурирует в сообщениях об ошибках, но не обязательно совпадает с номером команды в исходном тексте, < смещение> - смещение в байтах текущей команды относительно начала сегмента кода, < машинный_код> - машинное представление команды ассемблера, записанной правее в той же строке в поле < исходный код>;, а < исходный код> является не чем иным, как записанной Вами командой языка ассемблер.

Однако объектная программа еще не является законченной и исполняемой, т.к. в ней определены не все адреса (программа не является “перемещаемой”) и не объединены части (блоки) программы, которые могут транслироваться отдельно с целью более простой отладки. Преобразование объектной программы в исполняемую (компоновка) выполняется загрузчиком (редактором связей) LINK либо TLINK (в зависимости от используемой программы ассемблирования: для ASM, MASM – LINK, для TASM – TLINK).

Для макроассемблера MASM ассемблирование исходного текста выполняет утилита ml.exe, входящая в его состав, а сборку всей программы — утилита link.exe. Эти утилиты могут выполняться как из командной строки, так и включаться в состав программных сценариев (командных файлов). Как ml, так и link принимают множество параметров. Создание командного.bat файла позволит совместить фазы компиляции и компоновки и избавиться от утомительного набора команд вызова. Для облегчения поиска командного файла его можно назвать a.bat. В этом случае он будет располагать в самом верху рабочего каталога. Содержимое файла следующее:

ml /c /coff " %1.asm"
link /SUBSYSTEM: CONSOLE " %1.obj"

В первой строке вызывается компилятор ml. Компилятор управляется двумя ключами / c и / coff: / c означает, что создается только объектный файл. obj, а / coff – определяет его формат. Если параметр /coff не задан, то форматом созданного объектного файла будет OMF.

Во второй строке запускает компоновщик link. Компоновщиком управляет один ключ / SUBSYSTEM: CONSOLE, определяющий тип программы, как консольное приложение. Компоновщик link.exe оперирует с OBJ-файлами как в формате COFF, так и в формате OMF, при этом выполняется автоматическое преобразование формата файла из OMF в COFF. Обычно при генерации исполняемых файлов используется формат COFF. Кроме того, и это очень важно, если файл объектного модуля должен применяться в приложении, написанном на Visual C++.NET, то формат его обязательно должен быть COFF. В то же время при применении объектного файла в приложении, разработанном в Borland Delphi 2005, единственным воспринимаемым форматом является OMF.

Запуск командного файла a.bat с пользовательским исходным файлом moy.asm осуществляется из командной строки. Например:

A moy

Следует обратить внимание, что расширение для обоих файлов не указывается. При выполнении командного файла расширения добавляются автоматически, и в результате выполняются команды ml / c / coff " moy. asm " и link / SUBSYSTEM: CONSOLE " moy. obj ".

Чтобы проверить работоспособность созданной программы и увидеть результаты ее работы (если не использован вывод на дисплей), применяют программу отладчик. Тестирование и отладка исполняемой программы выполняется встроенным отладчиком MASM или, например, отладчиком ollydbg.

Отладчик ollydbg представляет собой оконную среду отладки программ на уровне исходного текста на языках Pascal, C, ассемблер. Основные возможности отладчика:

- выполнение трассировки программы в прямом направлении, при котором за 1 шаг выполняется одна машинная инструкция;

- просмотр и изменения состояния аппаратных ресурсов микропроцессора во время командного выполнения программы.

- управление работой отладчика можно с помощью меню.

Более подробно с возможностями отладчика можно ознакомиться в Приложении 3

Специфика программы на ассемблере в том, что делать выводы о правильности ее функционирования можно, отслеживая работу на уровне микропроцессора, обращая внимание на то, как изменяется состояние ресурсов микропроцессора и компьютера в целом. Общее поведение программы позволяет просмотреть режим безусловного выполнения, который вызывается нажатием клавиши F9. Однако для детального изучения работы программы рекомендуется применять режим выполнения программы по шагам, для вызова которых выбираются пункты меню Run -> Trace into ( прерывание или внутренняя процедура будут выполняться по шагам) или Run -> Step over (вызов процедуры или прерывание отрабатываются как одна обычная команда). При этом используется окно CPU, вызов которого осуществляется через глобальное меню командой View -> CPU. Окно CPU состоит из 4 подчиненных окон:

- окно с исходной программой в машинных кодах,

- Register – окно регистров микропроцессора, отражающее текущее состояние регистров и окно флагов, отражающее состояние флагов микропроцессора в соответствии с таблицей 1;

Таблица 1

Обозначения и значения флагов

Имя флага Обозначение флага Установлен Сброшен
Флаг переполнения O    
Флаг направления D    
Флаг прерывания I    
Флаг знака S 1(< 0) 0(> 0)
Флаг нуля Z    
Флаг вспомогатель-ного переноса A    
Флаг четности P    
Флаг переноса C    

- окно стека, в котором отражается содержимое области памяти, отведенной для стека,

- окно дампа оперативной памяти Dump, отражающее содержимое области памяти по адресу, указанному в левой части окна. В окне можно увидеть содержимое произвольной области памяти, для этого нужно в локальном меню, вызываемом по щелчку правой кнопки мыши, выбрать нужную команду.

Рекомендуемый порядок работы с отладчиком:

а) вызвать на выполнение ollydbg.exe.;

б) выбрать файл исполняемой программы, набрав комбинации клавиш FILE -> OPEN и имя Вашей программы в окне запроса. После ответа OK на сообщение об отсутствии символьной таблицы в окно CPU загружается программа с нулевого адреса относительно начала сегментного регистра кодов (для приведенного в конце описания лабораторной работы примера это будет команда PUSH DS);

в) выбрать режим пошагового выполнения Run -> Step over. В окне CPU выполняемая команда подсвечивается серым цветом. Он показывает очередную команду, которая будет выполнена процессором после нажатия функциональной клавиши F8. Изменения, которые происходят в сегментных регистрах после выполнения команды, отмечаются красным соответствующей строки в окне регистров. Пошаговый процесс выполнять до тех пор, пока не появится сообщение об окончании программы (с ключевым словом terminated);

г) после выполнения команд, связанных с изменением содержимого ячеек памяти, нужно просматривать эти изменения в окне дампа памяти.

 







Дата добавления: 2014-11-10; просмотров: 932. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Классификация холодных блюд и закусок. Урок №2 Тема: Холодные блюда и закуски. Значение холодных блюд и закусок. Классификация холодных блюд и закусок. Кулинарная обработка продуктов...

ТЕРМОДИНАМИКА БИОЛОГИЧЕСКИХ СИСТЕМ. 1. Особенности термодинамического метода изучения биологических систем. Основные понятия термодинамики. Термодинамикой называется раздел физики...

Травматическая окклюзия и ее клинические признаки При пародонтите и парадонтозе резистентность тканей пародонта падает...

Устройство рабочих органов мясорубки Независимо от марки мясорубки и её технических характеристик, все они имеют принципиально одинаковые устройства...

Ведение учета результатов боевой подготовки в роте и во взводе Содержание журнала учета боевой подготовки во взводе. Учет результатов боевой подготовки - есть отражение количественных и качественных показателей выполнения планов подготовки соединений...

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия