
- •Инструкция пользования
- •Для микропроцессоров 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. Примечания
4. Команды редактирования программ
4.1. Построчный ассемблер
Формат команды:
-А начальный адрес <enter>
Эта команда позволяет начать ввод и редактирование программы (написанной на ассемблере), в область ОЗУ.
Пример:
-A7000:0100 <enter>
7000:0100 NOP <enter>
7000:0101 CALL 0600 <enter>
7000:0104 CALL 0900 <enter>
7000:0107 MOV SI,23CD <enter>
… и так далее
Выход из режима редактирования осуществляется нажатием <enter>.
После выхода, все мнемонические команды (например, NOP, CALL) переводятся ассемблером в машинные кода.
4.2. Построчный дизассемблер
Формат команды:
U начальный адрес <пробел> конечный адрес <enter>
На экран выводится программа (набранная ранее в пункте 4.1) в машинных кодах, а также соответствующие кодам, мнемонические команды.
Пример:
-U7000:0100 <пробел> 0108 <enter>
7000:0100 90 NOP
7000:0101 E8FC04 CALL 0600
7000:0104 E8F907 CALL 0900
7000:0107 BECD23 MOV SI,23CD
В нашем примере 90 – код команды NOP, E8 – код команды CALL, FC04 – код выполнения смещения физического адреса перехода.
5. Команды отладки программ на ассемблерном уровне
5.1. Команда запуска программы
Формат команды:
-G= стартовый адрес <enter>
Эта команда предназначена для запуска программы, начиная с указанного стартового адреса. Второй вариант:
-G= стартовый адрес <пробел> адрес останова 1 <пробел> адрес останова 2 <пробел> … адрес останова N-1 <пробел> адрес останова N <enter>
Данная команда предназначена для запуска программы, начиная со стартового адреса, (например 0100) и остановки программы при достижении любого из указанных адресов останова (например 0105). Второй вариант более предпочтителен, поскольку позволяет контролировать выполнение отдельных фрагментов отлаживаемой программы.
Пусть у нас есть фрагмент какой-то программы:
-A7000:0100 <enter>
7000:0100 <пробел> MOV <пробел> AX , 4570 <enter>
7000:0103 <пробел> MOV <пробел> DS , AX <enter>
7000:0105 <пробел> MOV <пробел> ES , AX <enter>
7000:0107 <enter>
Пример:
-G=7000:0100 <пробел> 0105 <enter>
AX=4570 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0002
DS=4570 ES=179B SS=179B CS=7000 IP=0105 NV UP DI PL NZ NA PO NC
7000:0105 8EC0 MOV ES , AX
В данном примере в регистры АХ и DX заносится число 4570. В последней строке выведен машинный и мнемонический код следующей команды, предлагаемой к выполнению.
5.2. Команда трассировки
Формат команды:
-Т= начальный адрес <пробел> количество команд N <enter>
Эта команда производит пошаговое (покомандное) выполнение программы (например, приведенной в пункте 5.1). При этом выполняется заданное N количество команд (например, одна) и предлагается к выполнению следующая N+1 команда, для выполнения которой необходимо набрать: Т <enter>.
Пример:
-T=7000:0100 <пробел> 1 <enter>
AX=4570 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=179B ES=179B SS=179B CS=7000 IP=0103 NV UP EI PL NZ NA PO NC
7000:0103 8ED8 MOV DS , AX
В регистр АХ занесено число 4570 (в шестнадцатеричной системе счисления).
-T <enter>
AX=4570 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=4570 ES=179B SS=179B CS=7000 IP=0105 NV UP EI PL NZ NA PO NC
7000:0105 8EC0 MOV ES , AX