Приложение 4. О системном отладчике DEBUG.

Наше изложение будет относиться к базовой части утилиты DEBUG, которая су­ществовала еще в старых версиях.

Данная утилита - один из самых простых отладчиков. Однако в этом ее достоин­ство. Кроме того, она не занимает много места в памяти и, следовательно, позволяет загружать в память даже очень большие программы.

Загрузить программу в среду отладчика можно непосредственно из отладчика (см.

ниже) либо указав имя программы в командной строке вместе с необходимыми для нее параметрами. Загружать можно как СОМ-, таки ЕХЕ-программы.

Команды системного отладчика.

Каждая команда состоит из одной буквы и параметров. Отмена любой команды в любой момент производится нажатием клавиш CTRL С. Все числа по умолчанию счи­таются записанными вшестнадцатеричном формате.

А [адрес] - переход в режим ввода ассемблерных команд. Под адресом здесь и далее понимается одно- илидвухкомпонентная величина. Например, возможны сле­дующие команды: А04ВО.0200ACS: 1000 А 300 - подразумевается CS:300 А - подра­зумевается CS: ЮОдля СОМ-программи С8:0000для ЕХЕ-программ. Выход изрежи-ма ввода ассемблерных команд происходит путем ввода пустой строки.

Сдиапазон адрес - сравнение областей памяти. Диапазон задается двумя адресами. Сообщение о несовпадающихадресахвьщается в формате: адресі байті байт2 адрес2.

D [диапазон] - выдача дампа - содержимое памяти в заданном диапазоне. Если параметр не указан, то выдается 128 байт, начиная с адреса DS: 100.

Е адрес - ввод байта. При этом выводится значение указанного байта и предлага­ется ввести новое значение.

Fдиaпaзон список - заполнение области. Данная команда заполняет область памя­ти. Если в список входит больше одного байта, то, соответственно, область заполняет-сядвойками,тройкамиит.п. Байты пишутся через пробел.

G [=адресначала[адреса контрольныхточек]] - команда выполнения программы. Можно указать до Юконтрольныхточек. В контрольныхточках происходит останов­ка выполнения. Для продолжения выполнения служит G без параметров.

I адрес порта - вывод из порта. Выводит значение, содержащееся в порте.

N имя файла -установка текущего имени файла. Если файл был загружен через командную строку, то данная команда назначает параметры для загруженного файла.

L - загружает файл, указанный через команду N. При этом в ВХ:СХ будет содер­жаться длина файла в байтах. Загрузка осуществляется корректно какдля СОМ-, так и

для ЕХЕ-программ.

М диапазон адрес - перемещение данных из одной области в другую. О адрес порта байт - заносит байт в указанный порт.

R [регистр] -вывод и ввод в регистры. Команда R выводит содержимое всех реги­стров. R АХ выводит содержимое АХ и предлагает ввести новое значение.

Приложение 4. О системном отладчике DEBUG

S диапазон списокбайт - поиск указанныхбайт в заданном диапазоне.

Т [=адрес[величина]] - команда трассировки. Выполнение команды в пошаговом режиме. После каждого шага выдается значение регистров и следующая команда. Вто­рой параметр задает количество команд, после которых происходит прерывание.

U [диапазон] - дизассемблирует указанную область памяти. Вместо диапазона можно указать адрес. Тогда 32 байта.

W - запись программы на диск. Запись осуществляется только в формате СОМ. Т.о. если программа была загружена в формате ЕХЕ, то нам не удастся правильно записать ее на диск.

Q - выход в операционную систему.

Написание программ в среде отладчика.

Используя команду А, Вы можете написать программу прямо в отладчике. Затем определите ее имя при помощи команды N, укажите длину в регистрах ВХ:СХ и про­грамма готова. Ее можно записать на диск при помощи команды W. Весьма удобный способ написания небольших СОМ-программ.

Программы для отладчика.

Довольно интересно, что отладчик может выполнять ассемблерные программы, написанные в текстовом формате. Возможность эта обусловлена средствами перенап­равления ввода-вывода в операционной системе MS DOS. Основная идея заключается в том, что при вводе с клавиатуры в среде отладчика как раз используется стандарт­ный ввод, который можно осуществить и из файла. Например, команда DEBUG < A.DBG осуществит ввод информации в отладчик из файла. Заметим также, что концы строк в текстовом файле отмечены кодами возврата каретки (13,10), что позволяет при загруз­ке текстового файла автоматически выполнять каждую вводимую строку.

А

MOV АН, 2 MOV  DL, 7

INT 21 RET

G Q

Выше представлена небольшая программа, производящая звуковой сигнал (код 7). Обращаю Ваше внимание на то, что после команды RET стоит пустая строка, имитиру­ющая просто нажатие клавиши ENTER, что, в свою очередь, перыеводит отладчик из режима ввода команд ассемблера к командному режиму отладчика.