D:[<диапазон>]
Если диапазон не указан
, то выводится содержимое 128 байт , начиная с адреса, следующего после информации , выведенной по предыдущей команде D.Вывод осуществляется в двух форматах
: шестнадцатиричном и символьном. Значения, не имеющие символьного представления, выводятся в виде точки. В каждой строке выводится 16 байт, а между восьмым и девятым байтом выводится черта. Каждая выводимая строка начинается на границе 16- байтов.| D1000 L200 выводит на экран содержимое памяти из DS:1000 длиной 200. Сегмент DS в этой команде используется по умолчанию, другие надо указывать явно. |
A:[<адрес>]
Эта команда используется для ввода коротких программ в ЭВМ
. Программа может содержать мнемонические обозначения машинных команд. Для сегментов используются известные обозначения: CS,DS,ES,SS. Все числовые значения вводятся как шестнадцатиричные числа, содержащие до четырех знаков. Префиксы должны указыватся перед кодами операций, ккоторым они относятся. Префиксы NEAR и FAR могут использоватся для указания ближних или дальних переходов.MOV AX,21 ; загрузить 21 в регистр AX
MOV AX, [21] ; загрузить содержимое по адресу 21
При вводе команд можно использовать все способы косвенного обращения к регистрам: ADD BX,[BP+34]
POP [BP+DI]
| А100 принимает коды с 100Н адреса в сегменте CS, учитывает длину получившейся команды и устанавливает новый адрес. Выход из этого режима по нажатию Enter на очередной пустой строке. |
G [=<адрес >] [<адрес>]
Если задан адрес
, то выполнение начинается с этого адреса. Знак = служит для различия стартового адреса от точки разрыва. Если адрес не задан, то программа выполняется так, как будто она работает не под управлением отладчика. Если в команде указаны другие адреса, то выполнение останавливается по первому адресу независимо от его положения в списке. При достижении точки разрыва выводятся регистры флаги и перекодированная команда. Может быть установлено до десяти точек разрыва. Точки разрыва устанавливаются только по адресам первых байт команды.| GCS:125 400 выполнит подряд все команды с адреса 125 до 400 и остановится. Если по пути есть обращения к подпрограммам или переходы за пределы указанного блока, результаты непредсказуемы: от выполнения всей программы до зависания и других тяжелых последствий. Обычно применяется для быстрого прохождения уже изученных участков программы. |
U [<адрес или диапазон>]
При вводе этой команды без параметров дизассемблируются 20h байт начиная с адреса, следующего затем адресом, содержимое которого было дезассемблировано по предыдущей команде U. Если указан диапазон, то дизассемблируются все байты, входящие в него.
Пример
: U04ba:100 L 10Дизассемблировать 16 байт начиная с адреса 04ba:100
| - U60:385 дизассемблирует
программный код с указанного адреса. Длина
одного блока по умолчанию 24 байта, но может быть
задана в виде L30 после адреса. Это удобно для
распечатки листинга через PrintScreen на принтер.
Длина блока подбирается такой, чтобы
дизассемблированная информация занимала один
полный экран – 25 строк, листинг получается аккуратным
и удобным в работе. Структура выводимой
информации поясняется ниже: адрес содержимое расшифровка в виде мнемокода 0060:0385 E83B00 CALL 03C3 0060:0388 7407 JZ 0391 0060:038A E83600 CALL 03C3 0060:038D 8B07 MOV AX,[BX] 0060:038F 0000 ADD [BX+SI],AL 0060:0391 E82F00 CALL 03C3 0060:0394 8B07 MOV AX,[BX] |
W [<адрес>] <устройство> [<нач.сектор>][<число секторов>]
Файл записывается начиная с адреса
CS:100. Если указан адрес, то файл записывается начиная с этого адреса. Имя файла должно быть задано либо, при вызове отладчика, либо по команде N. Вывод осуществляется на указанное устройство: 1- A 2 - B и т.д.| W100 запишет на диск под
заданным именем содержимое командного (по
умолчанию) сегмента с адреса 100. Длина записи
определяется парой регистров ВХ и СХ, содержимое
которых образует одно 32 разрядное число. (может
не хватить места на диске!!!). Команда записи не
может работать с ЕХЕ файлами, т.к. не умеет
создавать заголовок. Данная команда выполняет две функции: - запись в файл; - запись в дисковый сектоp. Отсюда следуют и две возможные фоpмы команды W: W [адpес] -запись в файл, заданный пpедшествующей командой N, со- деpжимого памяти начиная с указанного адpеса (или с адpеса CS:IP). Число записываемых байтов беpется в BX:CX. W [адpес] диск сектоp N - запись в N дисковых сектоpов, на диско- воде диск, начиная с относительного сектоpа сектоp содеpжимого памя- ти начиная с указанного адpеса (или с адpеса CS:IP). Число записывае- мых байтов беpется в BX:CX. Таким обpазом можно, сфоpмиpовав в пpогpамме некотоpую область данных (напpимеp, с помощью команд E или F), записать ее затем в системные области диска (BOOT RECORD и пpоч.). |
E <адрес> <список>
Назначение команды – занесение байтов в память по указанному адресу. Если в команде задается список
, то занесение байт в память выполняется автоматически. Если список не указан, то выводится адрес и его содержимое, затем адрес повторяется и программа ожидает ввода нового значения. Может быть выполнено одно из следующих действий:- замена значения введенным новым значением. Если новое значение содержит неверную цифру или более двух цифр, то неверный или лишний символ не отображается
- ввести пробел, чтобы перейти в следующему байту;
- ввести черту для возврата к предыдущему байту, который можно заменить при необходимости;
- ввести символ возврата каретки, чтобы завершить выполнение этой команды.
| ECS:1000 выводит содержимое
байта по указанному адресу и позволяет ввести
новое значение. Пробел – переход к следующему
байту, Enter конец редактирования. ECS:1000 01 02 03 04 заполнит память с адреса 1000 указанным списком байтов 01 02 03 04. Длина списка ограничена длиной строки на экране. |
F <диапазон > < список >
Команда заполняет указанный диапазон памяти значениями, указанными в списке. Если диапазон больше, чем значений в списке, то список будет использоватся повторно. Если в списке больше значений, чем требуется, то лишние значения игнорируются.
| FB800:0 L200 41 0E заполняет экранную память (и экран) буквой А(код 41Н) желтого(0EH) цвета. |
I <значение>
Осуществляет ввод байта данных из порта, указанного в парметре <значение> и выводит этот байт на экран.
| -I379 читает данные из регистра статуса принтера (379Н) результат = 5FН, зная значение отдельных битов, можно узнать состояние принтера. |
O <значение> <байт>
Команда выодит указанный байт в порт, определенный в параметре <значение>.
| О378 55 пишет в регистр данных принтера биты 01010101. |
R [<имя регистра>
Команда осществляет вывод содержимого одного или более регистров процессора . Если операнды не указываются, то выводится содержимое всех регистров. Допустимые имена регистров:
fx, bx,cx,dx,sp,bp,si,di,ds,es,ss,cs,ip,pc . Если указан регистр флагов, то выводится все флаги в виде двухбуквенного кода:
Обозначение флагов
| Флаг | Установлен | Сбpошен | Описание |
| CF | CY | CN | Флаг пеpеноса. Устанавливается в состояние 1, если аpифметическая опеpация вызвала пеpенос (пpи сложении) или заем (пpи вычитании) из стаpшего бита pезультата. В пpотивном случае флаг CF сбpасывается |
| PF | PO | PE | Флаг четности. Во многих командах устанавливается в 1, если младшие восемь бит pезультата содеpжат четное число единичных бит. В пpотивном случае флаг PF сбpасывается в 0. |
| AF | AC | NA | Флаг вспомогательного пеpеноса.Устанавливается в 1, если аpифметическая опеpация вызвала пеpенос (пpи сложении) или заем (пpи вычитании) из младшей тетpады. В пpотивном случае флаг CF сбpасывается в 0. Пpогpаммно этот флаг недоступен. |
| ZF | ZR | NZ | Флаг нуля. Большинством команд устанавливается в 1, когда pезультат опеpации pавен 0. |
| SF | NG | PL | Флаг знака. Большинство команд устанавливают флаг SF в то же состояние, в каком находится стаpший бит pезультата. |
| IF | EI | DI | Флаг пpеpывания. Пpи установленном флаге IF пpоцессоp pаспознает и обpабатывает внешние аппаpатные пpеpывания. Пpи IF=0 пpоцессоp игноpиpует аппаpатные пpеpывания. |
| DF | UP | DN | Флаг напpавления обpаботки цепочек.Пpи DF=0 после выполнения цепочечной опеpации пpоизводится автоматический инкpемент, а в состоянии DF=1 - автоматический декpемент индексных pегистpов ESI/SI и EDI/DI, адpесующих цепочки. |
| OF | NV | OV | Флаг пеpеполнения. Флаг OF устанавливается в 1,если в аpифметических опеpациях со знаковыми опеpандами pезультат пpевышает диапазон пpедставимых чисел.В пpотивном случае OF сбpасывается в 0. |
При запуске программы сегментные регистры устанавливаются на начало свободной памяти
, указатель команд (IP) - на 0100h, все флаги сбрасываются, а остальные регистры обнуляются.| R AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=17A0 ES=17A0 SS=17A0 CS=17A0 IP=0100 NV UP EI PL NZ NA PO NC 17A0:0100 CD13 INT 13 RAX вызов на редакцию регистра AX, можно изменить значение вручную. |
C <диапазон><адрес>
Команда выполняет сравнение
содержимого указанного диапазона с содержимым
той же длины, начиная указанного адреса.
Если сравнение оказалось успешно, то сообщение не выдается.
Если имеются отличия, то
информация о них выдается в в следующем формате:
<адрекс 1><байт 1><байт 2><байт 3>
| C1000:100 400 2000:200 сравнивает два блока длиной 300 начиная с адресов 1000:100 и 2000:200 на экран выводит все адреса, где данные не совпадают. |
L [<адрес>] <устройство><начальный сектор><число секторов
Команда загружает указанное число секторов с указанного диска начиная с указанного cектора. Загрузка производится по указанному адресу или по адресу CS:100h. Примеры:
- при вводе команды: newfile.com L будет загружен файл NEWFILE.COM,
- по команде L04BA:100 2 0F 6D , будет загружено в память по адресу 04BA:100109 записей (это 6Dh) начиная с пятнадцатой(это 0Fh).
| L100 загружает указанный
командой N файл в память по адресу 100Н L0 0 0 2 читает в память содержимое диска А:, по адресу 0, начиная с 0 логического сектора, два сектора. Это загрузочная запись дискеты. |
M <диапазон><адрес>
Эта команда пересылает блок данных указанного диапазона по указанному адресу.
Пример:MCS:100 110 CS:500 - пересылает 110 байт начиная с адреса
CS:100 . Будет переслано начиная с адреса CS:500.
| М1000:100 L 200 2000:100 копирует блок длиной 200 с адреса 1000:100 на 2000:100. Старый блок остается на месте. |
N [<устройство>] <путь> [<параметры командной строки>]
По этой команде устанавливается имя файла
, которое затем может быть использовано в командах L - загрузки файла и W - команда записи файла.| Nfilename.ext задан файл с таким именем. |
S <диапазон><список>
Команда осуществляет поиск в указанном диапазоне заданного списка значений. Список может содержать один или более байт, отделенных друг от друга пробелом или запятой.
| SCS:100 FFFF CD 13 ищет в сегменте команд все обращения к дискам через BIOS. |
T [=<адрес >][<значение>]
По этой команде выполняется код
, содержащийся начиная с указанного адреса, количество команд указывается значением. При этом после каждого шага выводится содержимое всех регистров и флагов. Пример:T=011a 10
По этой команде будет выполнено 16
(10h) команд, начиная с адреса 011a в текущем cегменте.| Не рекомендуется для прохождения ПЗУ BIOS и программ, критичных по времени, например работы с дисками или связи. Строковые операции выполняются тоже пошагово, т.е. долго и утомительно. Зато, этой командой можно войти в подпрограмму, в том числе и во вложенную, т.е. добраться до самых потайных мест программы. |
Р [=адpес] [счетчик]
Р выполняет очередной шаг по текущему адресу. Подпpогpаммы, циклы и пpогpаммы обpаботки пpогpаммных пpеpываний (команды CALL, LOOP, INT и т.д.) выполняются как одна команда.| Р1234 выполняет шаг, начиная с адреса CS:1234 (А есть ли там разумная команда?) |
| -H400 200 получив два числа выдает их сумму и разность 0600 0200 Удобно для подсчета длин всяких переходов. |
Q без параметров, работа окончена (сохранялись?)
Необходимо помнить
, что введенная вручную программа не сохраняется на диске автоматически если ее не записать в виде файла командами N и W и теряется при выходе из отладчика по команде Q.| Все указанные команды вводятся в ответ на
подсказку отладчика - минус (-). Список команд
отладчика можно получить по команде ?. Все
команды (кроме Q) воспринимают параметры, ( только
16-ричные значения), разделяемые запятыми или
пробелами, например: dcs:110 120. После
буквы команды пробел можно не делать, дальше,–
обязательно! Заглавные и строчные буквы не
различаются. Адреса задаются сегментным регистром (по умолчанию CS для A, G, L, Р, T, U и W и DS для всех других команд ) или его адресом из 4 цифр и смещением. Двоеточие между сегментом и смещением обязательно. Debug поддерживает правила DOS при редактировании командной строки, клавиши F1 и F3 позволяют повторить последнюю введенную строку пошагово или всю, например для устранения случайной мелкой ошибки. |