Лабораторная работа № 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 однобайтовый идентификатор модели ЭВМ



