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

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

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






 

У большинства существующих реализаций ассемблера нет интегрированной среды, подобной 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; просмотров: 936. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Что такое пропорции? Это соотношение частей целого между собой. Что может являться частями в образе или в луке...

Растягивание костей и хрящей. Данные способы применимы в случае закрытых зон роста. Врачи-хирурги выяснили...

ФАКТОРЫ, ВЛИЯЮЩИЕ НА ИЗНОС ДЕТАЛЕЙ, И МЕТОДЫ СНИЖЕНИИ СКОРОСТИ ИЗНАШИВАНИЯ Кроме названных причин разрушений и износов, знание которых можно использовать в системе технического обслуживания и ремонта машин для повышения их долговечности, немаловажное значение имеют знания о причинах разрушения деталей в результате старения...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Ваготомия. Дренирующие операции Ваготомия – денервация зон желудка, секретирующих соляную кислоту, путем пересечения блуждающих нервов или их ветвей...

Билиодигестивные анастомозы Показания для наложения билиодигестивных анастомозов: 1. нарушения проходимости терминального отдела холедоха при доброкачественной патологии (стенозы и стриктуры холедоха) 2. опухоли большого дуоденального сосочка...

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