Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет№7(asm).docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
126.5 Кб
Скачать

Цель работы

Научиться анализировать ход выполнения программы на языке Ассемблера при помощи отладчика TurboDebugger.

Индивидуальное задание

1. Ознакомиться с работой программы LAB2.EXE в отладчике Turbo Debugger.

2. Внести в программу LAB2.ASM изменения согласно заданию Вашего варианта, получить новый файл LAB2.EXE и произвести его тестирование и отладку (при возникновении такой необходимости)

3. Задание(Вариант 8): При выводе результата пробел делать после каждой цифры.

1.Теоретические сведения

Отладчик Turbo Debugger является одним из наиболее популярных отладчиков уровня приложения, обладающим широкими возможностями отладки и удобным интерфейсом пользователя.

Запуск Turbo Debugger осуществляется посредством вызова файла программы TD.EXE (либо TD32.EXE в случае 32-разрядной версии для защищенного режима). В командной строке при вызове Turbo Debugger могут быть указаны параметры, а также имя отлаживаемой программы. В последнем случае Turbo Debugger автоматически загрузит код отлаживаемой программы в память и начнет его выполнение под своим управлением.

После загрузки программы в отладчик, Turbo Debugger отображает окно CPU, в котором можно увидеть,как выполняется программа(Рисунок 1)

Рисунок 1-Окно CPU с выполняемой программой

В большой области виден код . Самый левый столбец — адреса, правее отображаются байты машинного кода, а ещё правее — символическое обозначение команд. Программа размещается в памяти, начиная с адреса 0100h в сегменте кода. В  программе всего 6 машинных команд, а за ними в памяти находится случайный мусор (точные значения неизвестны).

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

Адрес текущей машинной команды определяется регистрами CS и IP, эта команда показана выделенной строкой и стрелкой. Теперь нажав F8, выполнится первая команда.

Дальше стрелка указывает на вторую команду(Рисунок 2). Изменившиеся регистры выделены белым цветом. Регистр AX теперь содержит значение 00FFh (то есть 255, чего и хотели от команды «mov ax,255»). Также изменилось значение регистра IP — оно увеличилось на размер выполненной машинной команды, а именно на 3. Теперь СS:IP указывает на следующую команду.

Рисунок 2- Выполнение второй команды

После повторного нажатия F8. Значение регистра AX увеличилось на 1 и стало равным 0100h (256)(Рисунок 3). Значение IP тоже увеличилось на 1, потому что длина команды «inc ax» — 1 байт. Процессор выполняет программу последовательно, одну команду за другой.

Рисунок 3- Изменение данных, после нажатия клавиши F8

После повторного нажатия клавиши F8(Рисунок 4).Команда NOP ничего не делает. Меняется только значение IP — снова увеличивается на 1.

Рисунок 4- Изменение данных, после нажатия клавиши F8

После повторного нажатия F8(Рисунок 5).Значение BX становится равным AX.

Рисунок 5- Изменение данных, после нажатия клавиши F8