Главная » Просмотр файлов » Иванова Г.С., Ничушкина Т.Н. - Программирование на ассемблере MASM32 в среде RADAsm с использованием 32-разрядного отладчика OlleDBG

Иванова Г.С., Ничушкина Т.Н. - Программирование на ассемблере MASM32 в среде RADAsm с использованием 32-разрядного отладчика OlleDBG (1075573), страница 2

Файл №1075573 Иванова Г.С., Ничушкина Т.Н. - Программирование на ассемблере MASM32 в среде RADAsm с использованием 32-разрядного отладчика OlleDBG (Иванова Г.С., Ничушкина Т.Н. - Программирование на ассемблере MASM32 в среде RADAsm с использованием 32-разрядного отладчика OlleDBG) 2 страницаИванова Г.С., Ничушкина Т.Н. - Программирование на ассемблере MASM32 в среде RADAsm с использованием 32-разрядного отладчика OlleDBG (1075573) страниц2017-12-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

На этом этапе к объектному (двоичному) коду программы добавляются объектные коды используемых подпрограмм. Приэтом в тех местах программы, где происходит вызов процедур, указывается их относительный адрес в модуле. Сведения о компоновке также выводятся в окно Output:C:\Masm32\Bin\LINK.EXE /SUBSYSTEM:CONSOLE /RELEASE/VERSION:4.0 /LIBPATH:"C:\Masm32\Lib"/OUT:"Lab01.exe""Lab01.obj"Microsoft (R) Incremental Linker Version 5.12.8078Copyright (C) Microsoft Corp 1992-1998.

All rights reserved.Make finished.Total compile time 109 msПервая строка вывода также является командной строкой вызова компоновщикаC:\Masm32\Bin\LINK.EXE – полное имя компоновщика, за которым следуют опции:/SUBSYSTEM:CONSOLE – подключить стандартное окно консоли,/RELEASE – создать реализацию (а не отладочный вариант),/VERSION:4.0 – минимальная версия компоновщика,/LIBPATH:"C:\Masm32\Lib" – путь к файлам библиотек,/OUT:"Lab01.exe" – имя результата компоновки – загрузочного файлаОглавление10и параметр "Lab01.obj" – имя объектного файла.В следующих строках также возможны сообщения об ошибках. В основном в лабораторных работах вы будете получать сообщение о неразрешенных внешних ссылках,например:Lab01.obj:errorLNK2001:unresolvedexternalsymbol_ExitPro-cess@4Lab01.exe : fatal error LNK1120: 1 unresolved externalsMake error(s) occured.Как правило, такое сообщение говорит о наличии в программе вызовов процедур,для которых в указанных библиотеках не найдены коды.

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

рисунок 3).Рисунок 3 – Окно консолиОкно закрывается при нажатии клавиши Enter.Оглавление113. Создание простейшей программыДля изучения возможностей отладчика необходимо ввести программу, которая выполняет несколько простых команд, например, вычисляет результат следующего выражения:X=A+5-BДанные для программы зададим константами, поместив их описание в раздел инициированных данных:.DATAASDWORD-30BSDWORD21Для результата вычислений – переменной X – необходимо зарезервировать место,поместив описание соответствующейнеинициализированной переменной в разделнеинициализированных данных:.DATA?XSDWORD?Размещение неинициализированной переменной в этом разделе не обязательно, ноболее грамотно, поскольку неинициализированные переменные в образе исполняемойпрограммы на диске не хранятся, а размещаются при загрузке на выполнение.Фрагмент кода программы, выполняющей сложение и вычитание, необходимо поместить в сегменте кодов после метки Start:Start:movEAX,A ; поместить число в регистр EAXaddEAX,5;сложить EAX и 5, результат в EAXsubEAX,B ;вычесть B, результат в EAXmovX,EAX ; сохранить результат в памятиПоскольку программа ничего не выводит, результат операции следует посмотреть вотладчике.Оглавление124.

Просмотр выполнения программы в отладчикеДля запуска программы в режиме отладки следует последовательно инициироватьследующие пункты меню:•трансляцию Создать/Assemble,•компоновку Создать/Link,•запуск на выполнение в отладчике Создать/Run w/Debug.После запуска на экране появляется окно отладчика OlleDBG (см. рисунок 4).Рисунок 4 – Окно OlleDBGВ окне можно выделить четыре области:•дочернее окно CPU – окно процессора, в котором высвечиваются адреса команд,их шестнадцатеричные коды, результаты дисассемблирования и результаты выделенияпараметров процедур;•область Registers – окно содержимого регистров процессора,•окно данных, в котором высвечиваются адреса памяти (Address) и ее шестнадца-теричный (Hex dump) и символьный (ASCII) дампы;• окно стека, в котором показывается содержимое вершины стека.Оглавление13В исходный момент времени курсор находится в окне CPU, т.е.

программа готова квыполнению. Для выполнения команды отладчика используют следующие комбинацииклавиш:F7 – выполнить шаг с заходом в тело процедуры;F8 – выполнить шаг, не заходя в тело процедуры.Адрес начала программы 00401000h. К сожалению, отладчик не всегда правильнодисассемблирует двоичный код программы, и какие-то команды могут остаться не распознанными. Так на рисунке 4 видно, что команда mov X,EAX оказалась не распознанной.Вместо нее в отладчике указан код, соответствующий определению данных: DB A3 и т.д.Однако выполнение программы будет осуществляться правильно.Адрес начала раздела инициированных данных – 00403000h.

Каждое значениезанимает столько байт, сколько резервируется директивой. В отладчике каждый байтпредставлен двумя шестнадцатеричными цифрами. Кроме того, используется обратныйпорядок байт, т.е. младший байт числа находится в младших адресах памяти (перед старшим). Если шестнадцатеричная комбинация соответствует коду символа, то он высвечивается в следующем столбце (ASCII), иначе в нем высвечивается точка.Не инициированные данные располагаются после инициированных с адреса, кратного 16.При каждом выполнении команды мы можем наблюдать изменение данных в памяти и/или в регистрах, отслеживая процесс выполнения программы и контролируя правильность промежуточных результатов.Так после выполнения первой команды число A копируется в регистр EAX, который при этом подсвечивается красным.

При записи в регистр порядок байт меняется напрямой, при котором первым записан старший байт.Оглавление145. Описание данных в программе на ассемблереВсе данные, используемые в программах на ассемблере, обязательно должны бытьобъявлены с использованием соответствующих директив, которые определяют тип данных и количество байт, необходимое для размещения этих данных в памяти:[<Имя>] <Директива>[<Константа>DUP(]<Список инициализаторов>[)]где <Имя> – имя поля данных, которое может не присваиваться;<Директива> – команда, объявляющая тип описываемых данных (см.

таблицу 1);<Константа> DUP – используются при описании повторяющихся данных, тогдаконстанта определяет количество повторений;<Список инициализаторов> – последовательность инициализирующих констант через запятую или символ «?», если инициализирующее значение не определяется.Таблица 1 – Директивы определения данныхДирективаBYTE / SBYTEОписание типа данных8-разрядное целое без знака / со знакомWORD / SWORD16-разрядное целое без знака / со знакомDWORD / SDWORD 32-разрядное целое без знака / со знаком или ближний указательFWORD48-разрядное целое или дальний указательQWORD64-разрядное целоеTBYTE80-разрядное целоеREAL432-х разрядное короткое вещественноеREAL864-х разрядное длинное вещественноеREAL1080-ти разрядное расширенное вещественноеПримечание – В качестве директив также могут применяться:•DB – определить байт,•DW – определить слово,•DD – определить двойное слово (4 байта),•DQ – определить четыре слова (8 байт),•DT – определить 10 байт.В качестве инициализаторов при описании данных применяются:•целые константы [<знак>]<целое> [<основание системы счисления>],например:Оглавление15o-43236, 236d – целые десятичные числа,o23h, 0ADh – целые шестнадцатеричные числа (если шестнадцатеричнаяконстанта начинается с буквы, то перед ней указывается 0),o•0111010b – целое двоичное;вещественные константы [<знак>] <целое> .

[E|e [<знак>] <целое>],например: -2., 34E-28;•символы в кодировке ASCII (MS DOS) или ANSI (Windows) в апострофах или кавычках, например: 'A' или ″A″;•строковые константы в апострофах или кавычках, например, 'ABCD' или ″ABCD″.Примеры определения данных различных типов приведены далее.Оглавление16Задание1.Запустите RADAsm, создайте файл проекта по шаблону консольного приложе-ния.

Внимательно изучите структуру программы и зафиксируйте текст с комментариямив отчете.2. Запустите шаблон на выполнение и просмотрите все полученные сообщения.Убедитесь, что текст программы и настройки среды не содержат ошибок.3. Добавьте директивы определения данных и команды сложения и вычитания,описанные в разделе 3 настоящих методических указаний. Найдите в отладчике внутреннее представление исходных данных, зафиксируйте его в отчете и поясните.Проследите в отладчике выполнение набранной вами программы и зафиксируйте вотчете результаты выполнения каждой добавленной команды (изменение регистров, флагов и полей данных).4. Введите следующие строки в раздел описания инициированных данных и определите с помощью отладчика внутренние представление этих данных в памяти. Результаты проанализируйте и занесите в отчет.val1BYTE255chartWORD256lue3SWORD-128aluBYTE?v5BYTE10hBYTE100101BbetaBYTE23,23h,0chsdkBYTE″ Hello″ ,0minSWORD-32767arDWORD12345678hvalarBYTE5 DUP (1, 2, 8)5.

Определите в памяти следующие данные:а) целое число 25 размером 2 байта со знаком;б) двойное слово, содержащее число -35;в) символьную строку, содержащую ваше имя (русскими буквами и латинскимибуквами).Оглавление17Зафиксируйте в отчете внутреннее представление этих данных и дайте пояснение.6.Определите несколькими способами в программе числа, которые во внутреннемпредставлении (в отладчике) будут выглядеть как 25 00 и 00 25. Проверьте правильность ваших предположений, введя соответствующие строки в программу. Зафиксируйтерезультаты в отчете.7. Замените директивы описания знаковых данных на беззнаковые:ADWORD-30BDWORD21XDWORD?Запустите программу и прокомментируйте результат.8.Добавьте в программу переменную F1=65535 размером слово и переменную F2=65535 размером двойное слово. Вставьте в программу команды сложения этих чисел с 1:addF1,1addF2,1Проанализируйте и прокомментируйте в отчете полученный результат (обратитевнимание на флаги).Оглавление18Контрольные вопросы1.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее