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

«Изучение основ работы с турбо отладчиком»

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

Выполнил: Студент группы ИТ72

Уксусов Кирилл

Выполнение лабораторной работы:

Запустим программу TD на выполнение. После появления визитной карточки отладчика нажмем клавишу ENTER. В нижней строке расположена подсказка о назначении функциональных клавиш, в верхней строке перечислены меню отладчика. Клавишей F5 изменим размер открытого окна.

Окно CPU разделено рамками на области, относящиеся к сегментам кода, стека, данных и регистрам. В сегменте кода команда по смещению, равному содержимому регистра IP, а в сегменте стека данные по смещению, равному содержимому регистра SP, отмечены стрелками. Клавишей TAB изменим положение выделяющей информацию цветной рамки.

Нажатием комбинации клавиш alt-F10, откроем окна локальных меню в каждой рамке окна CPU. Ознакомимся с их содержанием. Закроем окна клавишей ESC.

Используя клавишу F10, перейдем в главное меню. Откроем меню FILE. Откроем файл hello_1.exe и загрузим его. Сравним информацию, содержащуюся в рамке кода с листингом нашей программы.

В окне CPU произведем трассировку программы (пошаговое выполнение) нажатием клавиши F8. На каждом шаге проконтролируем содержимое регистров, флагов и состояние стека.

После завершения программы перейдем в пункт WINDOW главного меню и установим режим USER SCREEN. Убедимся, что программа выполнила свою задачу. Клавишей ESC вернем изображение окна CPU.

Выполняя программы hello_1.exe, а затем hello_2.exe в пошаговом режиме, заполним таблицу в соответствии с вариантом задания:

НЕ нашли? Не то? Что вы ищете?

Вариант 9

№ строки

Команда

Ассемблера

Машинный код

Длина машинного кода байт

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

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

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

Hello_1

2

mov DS, AX

8ED8

2

5BC5:0003

5BC53

AX=5BB3

BX=F740

CX=508C

DX=508C

SI=5BC5

DI=2D9A

BP=0100

SP=0100

DS=5BA3

ES=5BA3

SS=5BB5

CS=5BC5

IP=0003

CF=0

ZF=0

SF=0

OF=0

PF=0

AF=0

IF=1

DF=0

3

mov AH, 09h

B409

2

5BC5:0005

5BC55

AX=5BB3

BX=F740

CX=508C

DX=508C

SI=5BC5

DI=2D9A

BP=0100

SP=0100

DS=5BB3

ES=5BA3

SS=5BB5

CS=5BC5

IP=0005

CF=0

ZF=0

SF=0

OF=0

PF=0

AF=0

IF=1

DF=0

Hello_2

6

mov DX, OFFSET Greet1

BA1400

3

5BC6:000E

5BC6E

AX=0924

BX=F740

CX=508C

DX=0000

SI=5BC5

DI=2D9A

BP=0100

SP=0100

DS=5BB3

ES=5BA3

SS=5BB6

CS=5BC6

IP=000E

CF=0

ZF=0

SF=0

OF=0

PF=0

AF=0

IF=1

DF=0

7

int 21h

CD21

2

5BC6:0011

5BD7

AX=0924

BX=F740

CX=508C

DX=0014

SI=5BC5

DI=2D9A

BP=0100

SP=0100

DS=5BB3

ES=5BA3

SS=5BB6

CS=5BC6

IP=0011

CF=0

ZF=0

SF=0

OF=0

PF=0

AF=0

IF=1

DF=0

Определим начальные и конечные адреса сегментов кодов и сегментов данных, указанных выше программ hello_1.exe и hello_2.exe.

Hello_1.exe:

00000H - 00014H DATA

00120H - 00131H CODE

Hello_2.exe:

00000H - 00027H DATA

00130H - 00148H CODE

Вычислим длину сегментов кодов и сегментов данных, указанных программ, в байтах:

Hello_1.exe:

00015H DATA – 21 байт

00012H CODE – 18 байт

Hello_2.exe:

00028H DATA – 40 байт

00019H CODE – 25 байт

Определим длину объявленных в программах символьных переменных в байтах:

Greet DB 'Hello, My friends!', 13, 10, '$' – 21 байт

Greet DB 'Hello, Lipatov!!!', 13, 10, '$' – 20 байт

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

Для этого в сегменте данных нажмем ALT+F10, выберем пункт GOTO и введем там: 0F000:0FFF5

Прочитаем в памяти по адресу F000:FFFE однобайтовый идентификатор модели ЭВМ