ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.07.2019

Просмотров: 409

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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


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

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


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

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


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




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

По дисциплине «Инструментальные средства информационных систем»

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

с турбо отладчиком»















Руководитель доцент к. п. н.

__________________ Никитин К.А.












Самара 2018

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

5 вариант.




Вариант 5

строки

Команда

Ассемблера

Машинный код

Длина машинного кода

Логический адрес в памяти

Физичес-кий адрес в памяти

Состояние регистров и флагов

5



Mov C,1Fh

C60602001F

5 байт

5349:000F

5349F h

6

Mov D,6

C606030006

5 байт

5349:0014

534A4 h

17



Mov BX,DI

8BDF

2 байт

5349:0031

534C1 h

18

Pop CX

59

1 байт

5349:0033

534C3 h

Hello2

5



Int 21

CD21

2 байт

534B:000A

534BA h

6

Mov ah,09

B409

2 байт

534B:000C

534BC h


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

Прочитайте в трех ячейках памяти начиная с адреса F000:FFF5h дату выпуска ПЗУ BIOS в формате месяц/число/год.


4. Контрольные вопросы

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. Объясните смысл пунктов Главного меню в верхней строке отладчика.

Ё: Repaint desktop – обновить экран

Restore standard – перейти в начало программы

About – описание turbo debugger

Меню File

Open – Загружает в отладчик новую программу

Change Dir – Выполняет смену диска и/или директории

Get Info – Выдает информацию о программе

DOS Shell – Запускает командный процессор ДОС

Resident – Делает Turbo Debugger резидентным


Symbol Load – Загружает таблицу символических имен, независимую от файла .EXE.

Table Relocate – Устанавливает базовый адрес таблицы символических имен

Quit – Выполняет возврат в ДОС

Меню View

Breakpoints – Просмотр точек останова

Stack – Просмотр стека вызова

Log – Просмотр журнала событий и данных

Watche– Просмотр значений отслеживаемых переменных

Variables – Просмотр списка локальных и глобальных переменных

Module – Просмотр исходного текста модуля программы

File – Просмотр содержимого дискового файла в текстовом или шестнадцатеричном формате

CPU – Просмотр машинных команд, данных исодержимого стека

Dump – Просмотр построчного дампа области памяти

Registers – Просмотр состояния регистров и флагов процессора

Numeric Processor– Просмотр состояния сопроцессора или его эмулятора

Execution History– Выводит ассемблерный код, который был запомнен для обратной трассировки или обратного воспроизведения нажатий клавиш

Hierarchy– Выводит список объектов или типов класса и иерархическое дерево

Another

Module – Открывает еще одно окно модуля

Dump – Открывает еще одно окно дампа

File – Открывает еще одно окно файла

Меню Run

Run – Запускает программу без остановок

Go To Cursor – Выполняет программу до текущей позиции курсора

Trace Into – Выполняет одну строку исходного текста или команду

Step Over – Выполняет одну строку исходного текста без вхождения в подпрограмму

Execute To – Выполняет программу до указанного адреса

Until Return – Выполняет программу до возврата из функции

Animate – Запускает программу в непрерывном пошаговом режиме

Back Trace – Реверсирует выполнение программы на одну исходную строку или команду

Instruction Trace– Выполняет одну команду

Arguments– Устанавливает аргументы командной строки

Program Reset– Заново загружает текущую программу

Меню Breakpoint

Toggle – Переключает точку останова в текущей позиции курсора

At – Устанавливает точку останова на строке с указанным адресом

Changed Memory Global – Устанавливает глобальную точку останова, которая включается при изменении содержимого области памяти

Expression True Global – Устанавливает глобальную точку останова, которая включается, когда выражение становится истинным

Delete All – Удаляет все точки останова

Меню Data

Inspect – Позволяет проверить элемент данных

Evaluate/Modify – Вычисляет значение выражения

Add Watch – Заносит переменную в окно слежения

Function Return – Отображает значение, возвращаемое текущей подпрограммой

Меню Options

Language – Определяет язык для вычисления выражений по исходному модулю

Macros

Create – Определяет клавишный макрос

Stop Recording– Заканчивает запись макроса

Remove – Удаляет клавишный макрос

Delete All – Удаляет все клавишные макросы

Display Option– Позволяет установить опции экрана (свопинг, размер, табуляция)

Path for Source– Список директорий, в которых находятся исходные файлы

Save Options– Сохраняет на диске параметры отладчика, макросы и параметры окон

Restore Options – Восстанавливает параметры с диска


Меню Window

Zoom– Выполняет трансфокацию до полного размера окна и назад

Next – Последовательно активизирует окна, открытые на экране

Next Pane– Выполняет переход к следующему подокну текущего окна

Size/Move – Позволяет изменить размеры и положение текущего окна

Iconize/Restore – Уменьшает размер окна до небольшой пиктограммы и восстанавливает его

Close – Закрывает текущее окно

Undo Close – Отменяет последнюю команду Close

Dump Pane to Log– Записывает в окно регистрации содержимое текущего подокна

User Screen – Выводит на дисплей выход вашей программы

Open window list – Выводит список открытых окон для активации

Window Pick – Выводит меню открытых меню, если на экране их более 9

Меню Help

Index – Выводит оглавление интерактивной подсказки

Previous Topic – Выводит предыдущий экран подсказки

Help on 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. Каким образом можно редактировать ассемблерную программу?


Смотрите также файлы