Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТ и МП - Инструкция пользования программой-отл...rtf
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
61.88 Кб
Скачать

6

Инструкция пользования

программой-отладчиком "DEBUG"

Для микропроцессоров 8086/88

  1. Назначение программы-отладчика "debug"

Для отладки прикладных и системных программ, фирмой "MICROSOFT" в составе каждой операционной системы (DOS или Windows) поставляется специальная программа-отладчик "DEBUG" .

Отладчик "DEBUG" позволяет пользователю:

  • вводить данные или программы как в виде отдельных байтов (в шестнадцатеричном счислении), так и в мнемоническом представлении;

  • выполнить всю или некоторую часть программы;

  • просмотреть или изменить значение любого элемента памяти;

  • организовать ввод-вывод данных (например, на монитор или принтер).

Запуск программы осуществляется запуском файла debug.exe .

Перед вводом любой команды пользователю предлагается командная строка, начинающаяся символом " - ".

  1. Команды программы-отладчика "debug"

    1. Команда состояний регистров микропроцессора

Формат команды:

-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

    1. Команда индикации и редактирования каждого регистра микропроцессора

Формат команды:

-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

    1. Команда редактирования содержимого регистра флагов

Формат команды:

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 и так далее.

  1. Команды работы с памятью (озу)

    1. Команда вывода содержимого области памяти

Формат команды:

начальный адрес <пробел> конечный адрес <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

    1. Команда редактирования отдельных ячеек памяти

Формат команды:

- 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>