- •Системный отладчик debug
- •2.1. Общие сведения
- •2.2. Командный язык отладчика
- •Войти в режим ассемблирования командой
- •Перейдем в режим ассемблирования
- •Провести р-трассировку. Для этого сначала выполнить команду:
- •После этого провести обычную детальную т-трассировку
- •Команда
- •Команда
- •Команда
- •По команде
- •Предположим, необходимо заменить диагностические сообщения в воот-секторе на свои собственные. Для этого выполним последовательность действий.
- •2.3. Общий список команд программы debug
Провести р-трассировку. Для этого сначала выполнить команду:
Р=100
и далее последовательные
Р
После этого провести обычную детальную т-трассировку
Т=100
Т
Q – (Quit) команда выхода из отладчика. Команда Q приводит к выходу из отладчика на следующий верхний программный уровень. При этом рабочие файлы не сохраняются. Поэтому перед выполнением команды Q необходимо командой Write записать этот файл на диск.
R – (Register) команда дампа/коррекции регистров. Эта команда позволяет:
-
просматривать содержимое всех регистров сразу, содержимое флагов и очередную команду, на которую указывает CS:IP;
-
просматривать значения отдельных регистров с возможностью их изменения;
-
просматривать регистр флагов с возможностью его изменения.
Команда
R
дает распечатку всех регистров, а также команды, на которую указывает CS:IP (рис. 2.11).
Команда
R <имя регистра>
дает распечатку содержимого указанного регистра, и затем печатает двоеточие на следующей строке. После этого пользователь может нажать клавишу <Enter> и выйти обратно на монитор команд отладчика, либо задать новое значение регистра перед нажатием клавиши <Enter>. В последнем случае старое значение регистра заменится на новое.
Перечислим возможные имена регистров:
AX, BX, CX, DX, SP, ВР, SI, DI, DS, ES, SS, CS, IP, PC,
F (регистр флагов).
При использовании команды
R F
надо учитывать, что кодирование значений флагов производится весьма специфическим образом (в мнемонической кодировке - см. п. 2.1, табл. 2.1). В таблице кодировки разные символьные пары соответствуют значению "1" соответствующего флага (флаг поднят) либо значению, равному "0" (флаг сброшен).
При исполнении команды
R F
значения флагов печатаются в строку в порядке, обратном к порядку в таблице. Сразу же за этим в строке печатается знак черты [ - ], отладчик переходит в состояние ожидания ввода с клавиатуры. Если пользователь нажмет только клавишу <Enter>, то значения флагов не изменятся и произойдет возврат на монитор команд отладчика. Однако, перед этим пользователь может набрать новые значения некоторых флагов согласно кодировочной таблицы. Порядок следования при этом не существенен, запись может быть с пробелами и без них.
Пример.
По команде:
R F
выводится состояние флагов, а при введении , например, после черты NGCYPEDN
NV UP EI PL NZ NA PO NC – NGCYPEDN
будут изменены 2, 4, 7 и 8 флаги (рис. 2.11).
S – (Search) команда поиска упорядоченного набора байтов. Эта команда позволяет провести поиск указанной цепочки байт в заданном диапазоне оперативной памяти и имеет синтаксис:
S <диапазон памяти> <цепочка байтов>
Ответ выдается в виде списка адресов, начиная с которых располагается указанная цепочка байтов.
Пример 1.
Предположим, что необходимо определить встречается ли цепочка "DOS" в первых 32 К оперативной памяти.
Для этого необходимо ввести команду:
S 0:0L8000 44 4F 53
На экран выводятся адреса всех мест, в которых была обнаружена данная последовательность. Появление подсказки [ - ] без адреса говорит о том, что указанная последовательность не была обнаружена.
Замечание. Если в качестве начального адреса диапазона выступает только относительный адрес в сегменте, то команда S использует сегмент, указанный в регистре DS.
Пример 2.
Пусть необходимо найти значение 41H (символ "A") в диапазоне CS:100 – CS:110.
Для этого необходима команда
S CS:100 110 41.
Т – (Trace) команда трассировки. Эта команда позволяет исполнить одну или несколько инструкций в режиме трассировки с печатью содержимого всех регистров и мнемоники следующей декодированной исполняемой инструкции. После трассировки текущей инструкции указатель IP сдвигается так, что он указывает на следующую инструкцию.
Формат команды:
T [=<адрес>] [<число инструкций>]
Команда Т производит трассировку одной текущей инструкции, на которую указывает CS:IP, с соответствующим изменением IP.
Команда
Т <число>
производит последовательную трассировку нескольких инструкций, общее число которых задается в команде.
При этом выполнение команды сопровождается выдачей на экран содержимого регистров до момента, когда число выполненных команд превысит значение, указанное в команде. Нажатие клавиш <Ctrl> + <NumLock> останавливает вывод данных на экран при отслеживании выполнения команд. Возобновление передвижения данных на экране наступит после нажатия любой клавиши.
Замечания:
-
Команда Trace блокирует аппаратные прерывания до выполнения команды пользователя, затем они разрешаются после завершения прерывания отслеживания, которое выполняется после команды отслеживаемой программы.
-
Команду Trace нельзя применять, если отслеживаемый фрагментпрограммы меняет содержание маски прерываний в контроллере 8259 (порт 20Н и 21Н).
-
Если отслеживается команда INT3, то точка останова устанавливается по адресу команды INT3.