Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3.docx
Скачиваний:
22
Добавлен:
03.08.2021
Размер:
175.43 Кб
Скачать

Федеральное агентство связи

Федеральное государственное бюджетное образовательное

учреждение высшего образования

Поволжский государственный университет

телекоммуникаций и информатики

Кафедра Информационных систем и технологий

Лабораторная работа №3

По дисциплине «Архитектура информационной системы»

Тема: «Изучение команд передачи данных. Основы работы с отладчиком»

Выполнили: студенты группы ИСТ-74У

Гусева Полина и Смолева Вера

Руководитель :

__________________ Куляс О.Л.

Самара 2018

Цель работы: Практическое освоение основных функций TURBO DEBUGGER.

4.1. Как записываются общие команды передачи данных на Ассемблере? Что может использоваться в качестве операндов команды?

Команды передачи данных (команды пересылок) предназначены для организации пересылки данных между регистрами, регистрами и памятью, памятью и регистрами, а также для загрузки регистров или ячеек памяти данными. При выполнении команд передачи данных флаги не устанавливаются.

Наиболее часто используются общие команды передачи данных:

MOV dst, src; dst:= (src).

Команда осуществляет передачу содержимого источника (src) в получатель (dst). Операндами этой команды могут быть:

регистр – регистр;

регистр – память;

память – регистр;

регистр – непосредственные данные;

память – непосредственные данные.

4.2. Для чего предназначена команда lea и что является ее операндами?

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

LEA reg, mem; reg:= [mem].

4.3. Поясните выполнение команд работы со стеком.

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

PUSH src; SP:= (SP) – 2 , [(SP)]:= (src).

Эта команда PUSH - поместить в стек. Она уменьшает на 2 содержимое указателя стека SP и заносит на вершину стека по этому адресу двухбайтовый операнд, указанный в команде. В качестве операнда может использоваться любой 16 разрядный регистр или двухбайтовая ячейка памяти.

Команда извлечь из стека имеет формат

POP dst; dst:= [(SP)], SP:= (SP) + 2.

Команда извлекает 16 разрядные данные из ячеек стека, на которые указывает указатель SP и помещает их в получатель, указанный в команде. Содержимое SP при этом автоматически увеличивается на 2.

4.4. Поясните выполнение команды обмена данными.

Команда обмена данными позволяет обменивать содержимое любого общего регистра и ячейки памяти, либо любой пары общих регистров:

XCHG op1, op2; op1:= (op2), op2:= (op1).

Использование сегментных регистров в командах обмена запрещается.

4.5. Для чего предназначен отладчик Turbo Debugger?

Турбо отладчик (Turbo Debugger) - это современный отладчик, позволяющий отлаживать программы на уровне исходного текста и предназначенный для программистов, работающих на Турбо языках фирмы Borland.

4.6. Объясните смысл пунктов Главного меню в верхней строке отладчика.

File; Edit; View; Run; Breakpoints – контрольные точки;Data; Options; Windows; Help.

4.7. Как загрузить отлаживаемую программу?

Непосредственно после запуска отладчика на экране появится кадр в котором видны два окна – окно Module с исходным текстом отлаживаемой программы и окно Watches для

наблюдения за ходом изменения заданных переменных в процессе выполнения программы.

4.8. Какие окна можно открыть из пункта Главного меню View ?

Окно Breakpoints используется для установки, модификации или удаления точек останова. Точка останова определяет то место в программе, где отладчик приостанавливает выполнение программы.

Окно Stack показывает текущее состояние программного стека. Первая вызванная функция показывается в нижней части окна, а выше ее - каждая последующая.

Окно Log выводит содержимое журнала сообщений с прокручиваемым списком сообщений и информацией, сгенерированной при работе с отладчиком. Это окно можно также использовать для получения информации об использовании памяти, модулях и оконных сообщения приложения Windows.

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

Окно Variables выводит все переменные в данном контексте программы. В верхней области окна перечисляются глобальные переменные, а в нижней - локальные.

Окно Module показывает исходный код отлаживаемого программного модуля.

Окно File выводит содержимое любого файла на диске. В нем можно просматривать шестнадцатеричные байты или текст ASCII и искать нужные байтовые последовательности.

Окно CPU выводит текущее состояние процессора.

Окно Dump выводит в шестнадцатеричном виде содержимое любой области памяти.

Окно Registers показывает содержимое регистров (в области регистров) и флагов ЦП (в области флагов).

Окно Numeric Processor показывает текущее состояние сопроцессора и имеет три области: содержимого регистров с плавающей точкой, значений флагов состояния и значений управляющего флага.

Окно Execution History выводит последние выполненные машинные инструкции или исходные строки программы, номер строки исходного кода и следующую выполняемую инструкцию или строку кода. Используется для обратного выполнения.

Окно Hierarchy выводит на экран дерево иерархии всех используемых текущим модулем классов. Это окно показывает взаимосвязь используемых в модуле классов.

Окно Windows Messages показывает список оконных сообщений программы Windows. Области этого окна показывают задание режима отслеживания сообщений, тип перехватываемых сообщений и перехваченные сообщения.

Окно Clipboard. Используется для вырезания и вставки элементов из одного окна отладчика в другое. Показывает вырезанные элементы и их типы.

Окна Inspector выводят текущее содержимое выбранной переменной.

4.9. Из каких фрагментов состоит окно CPU?

В окне CPU (ЦП) показано все состояние центрального процессора. Это окно в свою очередь состоит, из 5 внутренних окон для наблюдения:

· текста программы на языке ассемблера и в машинных кодах (сегмент кода);

· регистров процессора;

· флагов;

· стека (сегмент стека);

· содержимого памяти (сегмент данных).

4.10. Что такое локальное меню окна и как его открыть?

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

4.11. Какие функции обеспечивает фрагмент кода (CODE) окна CPU?

В сегменте кода с именем Code, после инициализации сегментного регистра DS, следуют команды вывода строки символов на экран. В области исходного текста или Code (Код) для временной коррекции своей программы можно использовать встроенный Ассемблер.

4.12. Какие функции обеспечивает фрагмент памяти окна CPU?

В области данных показано непосредственное содержимое выбранной области памяти. АДРЕС: XX XX XX ... XX AAAA..AAA

Где: XX - шестнадцатеричное значение ячейки памяти;

A - ASCII-представление содержимого соответствующей ячейки.

В качестве адреса указываются пары СЕГМЕНТ: СМЕЩЕНИЕ; вместо числа СЕГМЕНТ может выступать любой из сегментных регистров. Сразу после загрузки TD в этом подокне отображаются данные, начиная с адреса DS:0000.

4.13. Какие функции обеспечивает фрагмент регистров окна CPU?

В области регистров (верхняя область справа от области кода) по умолчанию выводится содержимое 16-и разрядных регистров цен- трального процессора.

4.14. Какие функции обеспечивает фрагмент стека окна CPU?

В нижнем правом углу окна CPU показано содержимое стека. Стек - это LIFO (последний раз, первый раз - последняя запись, которую вы нажимаете на стек, - это первая, которую вы возвращаете, когда вы всплываете) структура данных, которая обычно используется для хранения кадров стека (бит стека которые принадлежат текущей функции).

4.15. Какие функции обеспечивает фрагмент флагов окна CPU?

Верхней правой областью является область флагов, где пока- зано содержимое восьми флагов центрального процессора.

4.16. Каким образом можно редактировать ассемблерную программу?

Программа Turbo Debugger (далее - TD) является мощным и удобным средством, предназначенным для отладки программ, написанных на Ассемблере для IBM-совместимых ПК и языках высокого уровня.

4.17. Как осуществляется изменение содержимого оперативной памяти и регистров средствами отладчика?

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

1.) В подокне просмотра данных установите курсор на первый байт области памяти, которую вы хотите изменить (см. Просмотр данных).

2.) Нажмите [Ctrl+C]. В появившемся окне "Enter new data bytes" введите один или несколько байт, разделенных пробелами, например:

0FDh 18h 0

и нажмите [ENTER].

3.) Если ввод был произведен правильно, окно исчезнет, и новые значения будут побайтно записаны в ячейки ОЗУ, начиная с того байта, на который был установлен курсор. Если Вы ошиблись, появиться окно с сообщением "Syntax error" - синтаксическая ошибка. Скорее всего вы неверно записали одно из чисел, Вам придется повторить все с начала.

Соседние файлы в предмете Архитектура информационных систем