Режимы работы отладчика DEBUG.
Макрокоманды отладчика DEBUG (примеры применения команд).
Краткие сведения об отладчике DEBUG :
|
Debug – 16-разрядная утилита операционной системы MS DOS. Название программы происходит от Bugs – насекомые. На программистском слэнге Bugs означает «ошибки в программе». Используя Debug для пошаговой трассировки тестируемого кода, эти ошибки можно найти и исправить. |
Процедура загрузки отладчика DEBUG :
|
Располагается отладчик Debug в системной папке system32 папки WINDOWS (файл debug.exe). Запуск отладчика удобнее всего выполнять из меню Пуск/Выполнить. |
Режимы работы отладчика DEBUG :
![]() В этом режиме можно набирать любые макрокоманды отладчика от A до W. Выход из этого режима означает завершение работы отладчика.
![]() После набора команды необходимо нажатием клавиши Enter ввести её в память (пока не нажата клавиша Enter команда в память не введена). Если команда набрана с ошибкой и нажата клавиша Enter, эта команда в память не вводится. Вместо этого отладчик предлагает ввести её повторно, по тому же самому адресу: ![]() Возвращение из режима ассемблирования в основной режим работы отладчика – нажатие клавиши Enter в пустой строке (когда не набрано ни одного символа), например, в строке 0CFC:0103.
Возвращение из этого режима в основной режим работы отладчика – нажатие клавиши Enter. Продолжение работы в режиме ввода данных – нажатие клавиши пробел. Нажимая клавишу пробел, можно попасть на любую ячейку памяти и ввести в неё нужное число. Ввод значений завершается нажатием клавиши Enter.
Возвращение в основной режим работы отладчика осуществляется автоматически, без участия работающего с этим отладчиком человека.
|
Команды отладчика Debug:
|
|
В приведённом выше окне фигурирует полный перечень команд отладчика. Ниже тот же перечень приведён в более удобном для чтения виде:
|
-? |
Параметры макрокоманд отладчика DEBUG :
|
1. Значения задаются в 16-ой системе счисления
(отметки типа hex или h не ставятся). 2. Адреса задаются в
16-ой системе счисления. 3. Диапазоны адресов
задаются тремя способами: 2-ой способ: 0100
011F 4. Списки задается набором своих элементов (строк или однобайтовых чисел). Элементы списка отделяются друг от друга запятыми или пробелами. Например (приводятся 4 варианта задания одного и того же
списка): |
В приводимом ниже комментарии дана краткая характеристика каждой макрокоманды отладчика:
|
A Вход в режим ассемблирования (набора
ассемблерных команд) |
Макрокоманда ? отладчика DEBUG :
|
Выводит на экран перечень макрокоманд отладчика от A до W. Результат её выполнения приведён выше. |
Макрокоманда D отладчика DEBUG :
|
Выводит на экран содержимое ячеек заданного диапазона. Ниже приведены образцы выполнения команды без параметров, с одним параметром, с двумя параметрами. Выполнение команды D:
Смысл приведённых выше данных:
|
Макрокоманда F отладчика DEBUG :
|
Позволяет заполнять ячейки памяти элементами задаваемого списка значений.
|
Макрокоманда E отладчика DEBUG :
|
Предназначена для ввода значений в ячейки оперативной памяти. Ниже приведены образцы выполнения команды с одним параметром и двумя параметрами. Варианты выполнения команды E приведены ниже.
|
Макрокоманда A отладчика DEBUG :
|
Макрокоманда предназначена для входа в режим ассемблирования. В этом режиме осуществляется набор ассемблерных команд. Ниже приведены образцы выполнения этой команды.
|
Макрокоманда U отладчика DEBUG :
|
Макрокоманда U дисассемблирует код, расположенный в указанном диапазоне, обеспечивая вывод на экран содержимого ячеек этого диапазона, интерпретируемого как набор ассемблерных команд.
MOV DX,0140 занимает 3 ячейки памяти 100..102 100 – код команды MOV DX,...
(число BA) MOV AH,09 занимает 2 ячейки памяти 103..104 103 – код команды MOV AH,... (число B4) INT 21 занимает 2 ячейки памяти 105..106 105 – код команды INT (число CD) NT 20 занимает 2 ячейки памяти 107..108 107 – код команды INT (число CD) |
Псевдокоманды отладчика DEBUG :
|
Псевдокоманды отладчика набираются в режиме ассемблирования (Assemble) отладчика. Псевдокоманды не компилируются в машинные коды. Псевдокоманда DB: позволяет заполнить текущие байты числами или строкой. Например: 0138 DB 41 - ввод числа 41 (ASCII-код символа 'A') в ячейку памяти (адрес смещения = 0138) 0139 DB 'A' - ввод символа 'A' в ячейку памяти (адрес смещения = 0139) 013A DB 42 43 44 45 - ввод ряда чисел (42,43,44,45) в ячейки памяти (адреса смещения = 013A, 013B, 013C, 013D) 013E DB 'BCDE' - ввод строки 'BCDE' в ячейки памяти (адреса смещения = 013E, 013F, 0140, 0141) Псевдокоманда DW: позволяет заполнить текущие пары байтов числами или строкой. Например: 0138 DW 4142 - ввод слова 4142 в ячейки памяти (адрес смещения = 0138) 013A DW 'AB' - ввод символов 'A' и 'B' в ячейки памяти (адреса смещения = 013A..013B) 013C DW 4243 4445 - ввод ряда чисел (4243 и 4445) в ячейки памяти (адреса смещения = 013C и 013E) 0140 DW 'BCDE' - ввод строки 'BCDE' в ячейки памяти (адреса смещения = 0140..0143) Псевдокоманда ORG: позволяет осуществлять передачу управление в режиме ассемблирования. Например: 0100 ORG 0110 - передача управления в режиме ассемблирования на адрес смещения 0110 0110 ▄ - после передачи управления адрес смещения принял значение 0110 |
Макрокоманда G отладчика DEBUG :
|
Макрокоманда запускает на исполнение код с указанного адреса. Рассмотрим запуск на исполнение программы ввода с клавиатуры строки.
E 150 4 - занесение в ячейку 150 числа 4 (ограничитель на количество вводимых с клавиатуры символов) E 101 50 - корректировка содержимого ячейки 101 (исправление адреса на 150) E 104 A - корректировка содержимого ячейки 104 (исправление номера функции прерывания INT 21 на 0A – ввод строки с клавиатуры) D 150 L10 – просмотр ячеек 150..15Fдо запуска на исполнение приводимого выше кода. U 100 108 – дисассемблирование диапазона 100..108 с целью просмотра команд.
|
Работа с файлами в отладчике Debug:
|
Работа с файлами в DEBUG может начинаться с момента загрузки самого отладчика. Запуск отладчика DEBUG: Запуск отладчика можно осуществлять двумя способами: 1-ый способ: Debug Запуск отладчика 2-ой способ: Debug prim.com Запуск отладчика с последующей загрузкой файла prim.com с адреса смещения 0100 (при этом, в пару регистров BX:CX заносится размер загружаемого файла) Загрузка и запись файлов в отладчике DEBUG: Загрузка и запись файлов в отладчике осуществляется командами отладчика: L [адрес] - команда загрузки файла с указанного адреса смещения W [адрес] - команда записи файла с указанного адреса смещения Перед выполнением этих команд следует выполнить два действия: 1. Командой N задать полное имя файла и путь к нему. 2. В пару регистров BX:CX занести размер загружаемого / записываемого файла. Пример: сохранить диапазон адресов 100..11B в файле PRIMER.COM. -N C:\TEMP\PRIMER.COM – ввод имени файла PRIMER.COM (расположен в папке TEMP диска C) -R – просмотр содержимого регистров процессора (интерес представляет пара регистров BX:CX) -R CX – вход в режим изменения содержимого регистра CX (с целью занесения в регистр числа 1C - количества сохраняемых ячеек диапазона адресов 100..11B) -W 100 – запись в файл PRIMER.COM содержимого 1C ячеек памяти, начиная с адреса 100 |
Задания к лабораторной работе:
|
Выполнить следующие команды и прокомментировать результаты их выполнения: |
|
-G= 100 -D 140 L40 -A 118 -U 100,11B -E 140 41 42 -E 140 'ABCD' -E 140 -F 140 L40 0 |