Иванова Г.С., Ничушкина Т.Н. - Программирование на ассемблере MASM32 в среде RADAsm с использованием 32-разрядного отладчика OlleDBG
Описание файла
PDF-файл из архива "Иванова Г.С., Ничушкина Т.Н. - Программирование на ассемблере MASM32 в среде RADAsm с использованием 32-разрядного отладчика OlleDBG", который расположен в категории "". Всё это находится в предмете "языки интернет-программирования" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "языки интернет-программирования" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
ОглавлениеАннотация ..........................................................................................................3Лабораторная работа № 1. Изучение среды и отладчика ассемблера . .41. Начало работы со средой ....................................................................................................52. Запуск заготовки приложения ............................................................................................83. Создание простейшей программы ...................................................................................114.
Просмотр выполнения программы в отладчике .............................................................125. Описание данных в программе на ассемблере ................................................................14Задание ....................................................................................................................................16Контрольные вопросы ...........................................................................................................18Лабораторная работа № 2.
Программирование целочисленныхвычислений .....................................................................................................191. Форматы машинных команд IA-32 ..................................................................................202. Команды целочисленной арифметики IA-32 ..................................................................233. Пример линейной программы ..........................................................................................274. Организация ввода-вывода ...............................................................................................28Задание ....................................................................................................................................31Контрольные вопросы ...........................................................................................................32Литература ..............................................................................................................................33Приложение.
Наиболее важные настройки среды RADAsm .................342МГТУ им. Н.Э. БауманаФакультет «Информатика и Системы Управления»Кафедра ИУ-6 «Компьютерные системы и сети»Иванова Галина Сергеевна, Ничушкина Татьяна НиколаевнаПрограммирование на ассемблере MASM32 в среде RADAsm с использованием 32-разрядного отладчика OlleDBGМетодические указания к лабораторным работам по курсу Системное программное обеспечениеМОСКВА2010 год МГТУ им. БауманаОглавление3АннотацияМетодические указания предназначены для студентов, слушающих курс Системного программного обеспечения. Большая часть лабораторных по этому курсу выполняется на ассемблере MASM32. В качестве среды программирования при этом используется RADAsm.
Данная среда позволяет осуществлять ввод программ на ассемблере, их ассемблирование, компоновку и выполнение в консольном и обычном режимах Windows.Для отладки программ к среде подключен 32-разрядный отладчик OlleDBG.Настоящие указания содержат необходимые теоретические сведения, практические рекомендации и задания по выполнению двух первых работ в указанной среде программирования.Оглавление4Лабораторная работа № 1.
Изучение среды и отладчика ассемблераMasm32 – специализированный пакет программирования на языке ассемблера IA32. Являясь продуктом фирмы Microsoft, он максимально приспособлен для созданияWindows-приложений на ассемблере. Кроме транслятора, компоновщика и необходимыхбиблиотек пакет Masm32 включает сравнительно простой текстовый редактор и некоторые инструменты, предназначенные для облегчения программирования на ассемблере.Однако набор инструментов не содержит 32-х разрядного отладчика и предполагает работу в командном режиме, что не очень удобно.В лабораторных работах для создания программ будет использоваться специализированная интегрированная среда RADAsm, которая помимо других ассемблеров позволяет использовать Masm32.
Точнее будет использоваться специально настроенная среда –«сборка» RADAsm + OlleDBG, где OlleDBG – 32-х разрядный отладчик.Целью лабораторной работы является изучение среды RADAsm, а также структурыпрограммы на ассемблере и форматов директив объявления констант и переменных.Оглавление51. Начало работы со средойПрограммная среда инициируется запуском программы RADAsm.exe.После вызова на экране появляется окно среды RADAsm, в котором обычно высвечивается последняя программа, отлаживаемая предыдущий раз (см. рисунок 1).Рисунок 1 – Окно интегрированной среды RADAsmДля создания нового проекта необходимо выбрать пункт меню Файл/Новыйпроект, после чего на экране появится первое окно четырехоконного Мастера созданияпроекта (см.
рисунок 2).Рисунок 2 – Окно мастера создания нового проектаОглавление6В этом окне необходимо выбрать тип проекта – в нашем случае Console App (консольное приложение), а также ввести его имя, например, Lab01, описание, например,«Лабораторная работа № 1», и путь к создаваемой средой новой папке с именем проекта.В следующем окне Мастера выбирается шаблон проекта – conapp.tpl – специальносозданный для лабораторных работ шаблон консольного приложения.Предпоследнее окно Мастера предлагает выбрать типы создаваемых файлов – выбираем Asm (исходные файлы ассемблера), и папки – выбираем папку Bak, используемую для размещения предыдущих копий файлов.Последнее окно Мастера определяет доступные для работы с проектом пунктыменю запуска приложения Создать и выполняемые команды.
В данной сборке выполняемые команды уже настроены, поэтому в нем можно ничего не менять, хотя использоваться будут не все пункты созданного меню, а только следующие: Assemble (транслироватьили, точнее, ассемблировать), Link (компоновать), Run (выполнить) и Run w/Debug (выполнить в подключенном отладчике).В результате будет получена заготовка консольного приложения Windows. Просмотреть эту заготовку можно, дважды щелкнув левой клавишей мыши по файлуLab01.asm в окне навигатора Project, расположенном справа вверху.Заготовка содержит:•директивы, определяющие набор команд, модель памяти, конвенциюпередачи данных и опцию различия строчных и прописных букв;•директивы подключения библиотек;•разделы констант, инициализированных и неинициализированных дан-ных с минимально необходимыми директивами определения данных;•раздел кода, процедуры в котором обеспечивают задержку закрытия окнадо нажатия любой клавиши.; Template for console application.586.MODEL- комментарий; подключение набора команд Реntiumflat, stdcall ; модель памяти и; конвенция о передаче параметровOPTION CASEMAP:NONE ; опция различия строчных;и прописных буквОглавление7Include kernel32.inc; подключение описаний процедур иInclude masm32.inc; константIncludeLib kernel32.lib ; подключение библиотекIncludeLib masm32.lib.CONSTMsgExitDB.DATA; начало раздела констант"Press Enter to Exit",0AH,0DH,0;раздел инициализированных переменных.DATA? ;раздел неинициализированных переменныхinbufDB.CODE100 DUP (?); начало сегмента кодаStart:;;Место, кудаAdd you statementsдобавляется код;Invoke StdOut,ADDR MsgExit; вывод сообщенияInvoke StdIn,ADDR inbuf,LengthOf inbuf; ввод строкиInvoke ExitProcess,0; завершение программыEnd; конец модуляStartЗаготовку, как в других средах программирования, можно запустить на выполнение.
Она содержит вызовы процедур, обеспечивающие вывод на экран запроса «PressEnter to Exit» (Нажмите клавишу Enter для выхода) и ввод строки. Это сделано для того,чтобы задержать автоматическое закрытие окна консоли при завершении программы донажатия клавиши Enter.Оглавление82. Запуск заготовки приложенияДля запуска заготовки необходимо выполнить:•трансляцию Создать/Assemble,•компоновку Создать/Link,•запуск на выполнение Создать/Run.В процессе трансляции (ассемблирования) исходная программа на ассемблерепреобразуется в двоичный эквивалент. Если трансляция проходит нормально, то в окнеOutput, которое появляется под окном программы, выводится текст:C:\Masm32\Bin\ML.EXE /c /coff /Cp /nologo/I"C:\Masm32\Include" "Lab01.asm"Assembling: Lab01.asmMake finished.Total compile time 78 msПримечание – Окно Output появляется и закрывается.
Чтобы повторно посмотреть результаты, необходимо установить курсор мыши на верхнюю часть строки состояния под окном текста программы (нижнюю рамку окна Output).Первая строка сообщения об ассемблировании – вызов ассемблера:C:\Masm32\Bin\ML.EXE – полное имя файла транслятора ассемблера masm32 (путь +имя), за которым следуют опции:/c – заказывает ассемблирование без автоматической компоновки,/coff – определяет формат объектного модуля Microsoft (coff),/Cp – означает сохранение регистра строчных и прописных букв всех идентификаторов программы,/nologo – осуществляет подавление вывода сообщений на экран в случаеуспешного завершения ассемблирования,/I"C:\Masm32\Include" – определяет местонахождение вставляемых (.inc)файлов,и параметр "Lab01.asm" – задает имя обрабатываемого файла.Оглавление9Остальные строки – сообщение о начале и завершении процесса ассемблирования ивремени выполнения этого процесса.Результатом нормального завершения ассемблирования является создание файла,содержащего объектный модуль программы, – файла Lab01.obj.Если при ассемблировании обнаружены ошибки, то объектный модуль не создаетсяи после сообщения о начале ассемблирования идут сообщения об ошибках, например:Lab01.asm(26) : error A2006: undefined symbol : EAYВ сообщении указывается:• номер строки исходного текста (в скобках),• номер ошибки, под которым она описана в документации,• возможная причина.После исправления ошибок процесс ассемблирования повторяют.Следующий этап – компоновка программы.