
- •Инструкция пользования
- •Для микропроцессоров 8086/88
- •Назначение программы-отладчика "debug"
- •Команды программы-отладчика "debug"
- •179B:0100 54 push sp
- •179B:0100 54 push sp
- •Для изменения признака (флага) вспомогательного переноса
- •Команды работы с памятью (озу)
- •7000:0000 4D 49 43 52 53 4f 46 54-ff ff ff ff ff ff ff ff micrsoft........
- •Мы убедились, что содержимое ячеек дампа п1 скопировано в п2
- •4. Команды редактирования программ
- •В регистр ds также занесено число 4570.
- •6. Примечания
Инструкция пользования
программой-отладчиком "DEBUG"
Для микропроцессоров 8086/88
Назначение программы-отладчика "debug"
Для отладки прикладных и системных программ, фирмой "MICROSOFT" в составе каждой операционной системы (DOS или Windows) поставляется специальная программа-отладчик "DEBUG" .
Отладчик "DEBUG" позволяет пользователю:
вводить данные или программы как в виде отдельных байтов (в шестнадцатеричном счислении), так и в мнемоническом представлении;
выполнить всю или некоторую часть программы;
просмотреть или изменить значение любого элемента памяти;
организовать ввод-вывод данных (например, на монитор или принтер).
Запуск программы осуществляется запуском файла debug.exe .
Перед вводом любой команды пользователю предлагается командная строка, начинающаяся символом " - ".
Команды программы-отладчика "debug"
Команда состояний регистров микропроцессора
Формат команды:
-R <enter>
Эта директива позволяет вывести на экран монитора все внутренние регистры микропроцессора, состояние регистра флагов, счетчик команд (IP), указатель стека (SP), а также байт и ассемблерную мнемонику следующей выполняемой команды по адресу, указанному в счетчике IP.
Пример:
-R <enter>
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=179B ES=179B SS=179B CS=179B IP=0100 NV UP EI PL NZ NA PO NC
179B:0100 54 push sp
Команда индикации и редактирования каждого регистра микропроцессора
Формат команды:
-R имя регистра <enter>
По этой команде выводится содержимое выбранного регистра (например DS) и двоеточие. После двоеточия можно ввести новое содержимое в шестнадцатеричном счислении (например 565А) и нажать <enter>.
Пример:
-RDS <enter>
DS 179B
: 565A <enter>
Убедимся в изменении содержимого регистра DS
-R <enter>
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=565A ES=179B SS=179B CS=179B IP=0100 NV UP EI PL NZ NA PO NC
179B:0100 54 push sp
Команда редактирования содержимого регистра флагов
Формат команды:
RF <enter>
По этой команде выводится текущее содержимое регистра признаков (флагов), в следующем виде:
NV UP EI PL NZ NA PO NC –
Каждый флаг имеет свое назначение:
NV – флаг отсутствия переполнения;
UP – флаг автоинкрементирования индексных регистров;
EI – флаг разрешения прерываний;
PL – флаг знака плюс;
NZ – флаг нуля не установлен;
NA – флаг вспомогательного переноса не установлен;
PO – флаг паритета сброшен;
NC – флаг переноса не установлен.
Изменим флаг переноса NC. Для этого в конце появившейся строки выставим флаг CY:
NV UP EI PL NZ NA PO NC – CY <enter>
Убедимся в изменении состояния флага NC:
-RF <enter>
NV UP EI PL NZ NA PO CY –
Для изменения признака (флага) вспомогательного переноса
следует вместо NA ввести AC и так далее.
Команды работы с памятью (озу)
Команда вывода содержимого области памяти
Формат команды:
начальный адрес <пробел> конечный адрес <enter>
Пример:
-D7000:0000 <пробел> 00FF <enter>
где 7000 – адрес начала сегмента.
Данная команда выводит содержимое области памяти от начального (например 0000) до конечного (например 00FF) эффективного адреса в шестнадцатеричном счислении:
7000:0000 00 00 00 00 D1 B4 08 32-00 00 00 00 00 00 02 00
7000:0010 06 00 00 00 20 00 00 80-10 00 00 00 38 00 00 80
…………………………………………………………………
7000:00F0 25 00 73 00 20 00 1C 04-31 04 30 04 39 04 42 04
При вводе команды без адреса будет выводится область памяти размером 128 байт (8 строк, в каждой строке 16 ячеек, в каждой ячейке 1 байт) с текущими адресами в шестнадцатеричном счислении.
Пример:
- D <enter>
7000:0100 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
7000:0110 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
………………………………………………………………..
7000:0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
Команда редактирования отдельных ячеек памяти
Формат команды:
- E начальный адрес <enter>
Данная команда позволяет занести данные побайтно в каждую ячейку памяти. При необходимости оставить неизменным содержимое ячейки, нажимается <пробел>. Выход из режима производится нажатием <enter>.
Пример:
-E7000:0000 <enter>
7000:0000 FF. FF. FF. FF. FF. FF. FF. FF.
Заносим после точки новые значения, к примеру 4D, 49, 43, 52, 53, 4F, 46, 54:
7000:0000 FF.4D FF.49 FF.43 FF.52 FF.4F FF.53 FF.4F FF.46 FF.54 <enter>
Убедимся в изменении состояния элементов памяти:
-D7000:0000 <enter>