Already resident. Use 'G'-Comand.




Afd fspec,

где fspec - имя файла, загружаемого в отладчик.

Если в командной строке отсутствует имя файла, то отладчик начинает свою работу формированием экрана заставки. Для продолжения работы в этом случае необходимо нажать любую клавишу (см. фразу "Press any key to continue" - "Нажмите любую клавишу", расположенную в нижней части экрана), после чего открывается основной рабочий экран системы (рис. 1).

Таким образом, командная строка afd позволяет начать работу в среде AFD без указания на отлаживаемый (исследуемый) файл. В случае необходимости такой файл может быть загружен путем формирования командной строки AFD типа L fspec(см. п. 2.1).

 

AX 0000 SI 0000 CS 24CF IP 0100 Stack +0 0000 FLAGS 0200

BX 0000 DI 0000 DS 24CF +2 0000

CX 0000 BP 0000 ES 24CF HS 24CF +4 0000 OF DF IF SF ZF AF PF CF

DX 0000 SP FEEE SS 24CF FS 24CF +6 0000 0 0 1 0 0 0 0 0

--------------------------------------------------------------------------------

CMD > |1 0 1 2 3 4 5 6 7

--------------------------------------------| DS:0000 CD 20 00 A0 00 9A EE FE

| DS:0008 1D F0 ED 04 C0 14 3C 01

0100 7481 JZ 0083 | DS:0010 E1 13 56 05 E1 13 C0 14

0102 F1 DB F1 | DS:0018 01 01 01 00 02 FF FF FF

0103 1383C402 ADC AX,[BP+DI+02C4] | DS:0020 FF FF FF FF FF FF FF FF

0107 FF76FE PUSH [BP-02] | DS:0028 FF FF FF FF C4 24 E4 FF

010A 9A6281F113 CALL 13F1:8162 | DS:0030 C0 14 14 00 18 00 CF 24

010F 83C402 ADD SP,0002 | DS:0038 FF FF FF FF 00 00 00 00

0112 B80D00 MOV AX,000D | DS:0040 00 00 00 00 00 00 00 00

0115 50 PUSH AX | DS:0048 00 00 00 00 00 00 00 00

--------------------------------------------------------------------------------

2 0 1 2 3 4 5 6 7 8 9 A B C D E F |

DS:0000 CD 20 00 A0 00 9A EE FE 1D F0 ED 04 C0 14 3C 01 |.............<.

DS:0010 E1 13 56 05 E1 13 C0 14 01 01 01 00 02 FF FF FF |..V.............

DS:0020 FF FF FF FF FF FF FF FF FF FF FF FF C4 24 E4 FF |.............$..

DS:0030 C0 14 14 00 18 00 CF 24 FF FF FF FF 00 00 00 00 |.......$........

DS:0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................

--------------------------------------------------------------------------------

1 Step 2StepProc 3Retrieve 4 Help 5Set BRK 6 7 up 8 dn 9 le 0 ri

 

Рис. 1. Основной рабочий экран AFD

 

При вызове отладчика посредством командной строки с параметром afd fspec AFD начинает свою работу с открытия основного рабочего экрана (см. рис. 1), минуя экран-заставку. Одновременно в отладчик загружается файл fspec.

Примеры.

afd sigma.exe - Начать работу по отладке файла программы.

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

afd proba.txt - Начать работу по исследованию текстового файла proba.txt.

 

Для выхода из отладчика в простейшем случае необходимо сформировать командную строку

quit

Более подробно об этом смотри п. 2.9.

Попробуйте несколько раз войти и выйти из отладчика. После того, как это у Вас будет получаться достаточно устойчиво, можно перейти к изучению функций отладчика.

1.2. Навигация по экрану.

После открытия основного экрана (см. рис. 1) AFD готов к взаимодействию с пользователем. Пользователь же имеет возможность воздействовать на AFD двояко:

1) путем формирования командных строк AFD;

2) путем реализации экранных функций с применением средств навигации курсора и редактирования.

О командных строках мы поговорим позже (см. п.2), а пока обсудим основные экранные функции - они наиболее простые.

Для изучения этих функций рассмотрим формат экрана. Рабочий экран отладчика (см. рис. 2) разбит горизонтальными и вертикальными линиями на ряд областей - окон. Нижняя строка экрана является строкой-подсказкой, раскрывающей назначение "горячих клавиш" F1 - F10.

В каждый момент времени одно из окон является активным. Признаком активности того или иного окна является наличие в нем мигающего курсора. Сначала активным является окно командной строки CMD. Для перемещения курсора между окнами и, следовательно, смены активного окна необходимо воспользоваться "горячими клавишами" (см. строку - подсказку):

F7 (up) - вверх;

F8 (dn) - вниз;

F9 (le) - влево;

F10 (ri) - вправо.

Таким образом, пользователь может сделать активным практически любое окно экрана.

Помимо этого пользователь имеет возможность перемещать курсор внутри активного окна. Этой цели служат клавиши навигации (стрелки: → ← ↓ ↑). Установив курсор на некоторый элемент активного окна, пользователь может изменить этот элемент, вводя с клавиатуры его новое значение.

Получив общее представление о возможностях навигации по окнам, рассмотрим содержимое окон.

1.3. Окно регистров.

Самое верхнее окно (назовем его окном регистров) показывает текущее состояние регистров процессора I8086/88 [2]. Левая колонка окна отображает содержимое спаренных регистров АХ, ВХ, СХ, DХ и, соответственно, составляющих их (но не поименнованных на экране) пар АН и АL, ВН и ВL, СН и СL, DH и DL.

Например, если АХ = 1234, то однозначно АН = 12(старшая часть регистра АХ) и AL = 34(младшая часть регистра АХ).

Следующие две колонки показывают содержимое индексных регистров SI и DI, базового регистра ВР, указателя стека SP, а также сегментных регистров CS, DS, ES и SS. В верхней строке четвертой колонки отображается текущее состояние программного счетчика IP.

В правой части окна показано содержимое флагов процессора OF, DF, IF, SF, ZF, AF, PF и CF. При этом каждый флаг представлен двояко: индивидуально и в составе регистра FLAGS.

Таким образом, в окне регистров пользователь может наблюдать и редактировать состояние всех регистров и флагов процессора.

Помимо рассмотренных в окно регистров введены дополнительные элементы, не входящие в состав процессора, но упрощающие работу в среде отладчика AFD. К таким элементам относятся колонка Stack, показывающая текущее состояние верхушки стека программы (4 слова, размещенные по адресу SS:SP) и два дополнительных сегментных регистра HS и FS. Последние регистры используются для фиксации значения сегментных адресов вне зависимости от хода программы (ведь значения сегментных регистров процессора CS, DS, ES и SS по ходу программы могут изменяться).

1.4. Окна памяти.

Следующие два окна предназначены для отображения (и коррекции) содержимого областей памяти. Первое из этих окон (назовем его "Первое окно памяти") расположено в правой части экрана под колонками Stack и FLAGS окна регистров (в верхнем левом углу этого окна стоит индекс 1).

Левая колонка рассматриваемого окна содержит сведения об адресах отображаемой области данных. Адреса задаются в формате "сегмент:смещение". В качестве сегмента может выступать один из сегментных регистров процессора(CS, DS, ES или SS), либо дополнительный регистр отладчика HS или FS. Смещение всегда задается в числовой форме (НЕХ - формат).

Для отображения некоторой произвольной области памяти в окне 1 необходимо, сделав это окно активным, переместить курсор на колонку адресов и установить посредством клавиатуры нужное значение сегмента и смещения.

Пример.

Отобразить содержимое области памяти, находящейся в сегменте DS, начиная со смещения 100.

 

Для решения этой задачи необходимо отредактировать верхнюю строку колонки адресов окна 1 с таким расчетом, что бы строка приняла значение DS:0100.

Справа от колонки адресов индицируется содержимое искомой области данных. При этом одновременно на экране отображается 80 байтов(10 строк, по 8 байтов в каждой) в НЕХ - формате. Для навигации по области данных используются клавиши - стрелки, а также клавиши PgDn ("на страницу ниже") и PgUp ("на страницу выше").

Таким образом, пользователь может посредством курсора указать на любой байт памяти и затем отредактировать его, задав новое значение.

Аналогичными функциями обладает "Второе окно памяти". Это окно расположено внизу экрана над строкой-подсказкой (в верхнем левом углу окна стоит индекс 2). Заметим, что для отображения 80 байтов памяти в этом окне используется формат: 6 строк по 16 байтов в каждой. При этом окно поделено на две секции: в левой секции данные представлены в НЕХ - формате (аналогично окну 1), а в правой - те же самые данные представлены в ASCII - формате. Переключение между секциями реализуется посредством "горячих клавиш" F9 и F10(см. строку - подсказку).

Таким образом, по сравнению с первым второе окно памяти обладает большими возможностями, т.к. позволяет наблюдать и редактировать данные не только в НЕХ, но и в ASCII - формате.

1.5. Окно командной строки.

Окно командной строки находится в центре экрана и имеет идентификатор CMD. Это самое маленькое окно отладчика и предназначено для ввода текстовых команд - командных строк AFD.

Вот примеры некоторых командных строк:

AХ=0 - очистить регистр процессора АХ;

BL=FF - установить регистр BL в состояние FF;

CF=0 - очистить флаг CF;

L pr1 - загрузить в отладчик программу pr1.exe;

G - запустить загруженную программу.

 

Как видно из примеров, часть команд может быть реализована экранными средствами (это первые три команды), а часть - только средствами командной строки (это последние две команды). Более подробные сведения о командных строках отладчика содержатся в разделе 3 данного пособия. Здесь же мы рассмотрим одно полезное свойство отладчика, которое позволяет существенно упростить процесс ввода командных строк пользователем.

Дело в том, что работа в окне CMD связана с формированием последовательности командных строк. Причем часто в этой последовательности встречаются одни и те же команды. Для того чтобы избежать повторного ввода ранее введенных команд, нужно воспользоваться "горячей клавишей" F3 (см. строку-подсказку). При нажатии на эту клавишу отладчиком выполняются следующие действия:

1) становится активным окно CMD;

2) в окне отображается предыдущая командная строка.

Таким образом, многократно нажимая на F3, можно поместить в окно CMD все командные строки, введенные ранее. Для реализации любой команды данной последовательности достаточно нажать клавишу ENTER в тот момент, когда соответствующая командная строка будет находиться в окне CMD.

1.6. Окно ассемблера.

Окно ассемблера расположено непосредственно под окном CMD. В этом окне отображается фрагмент отлаживаемой программы. Полагается, что фрагмент находится в сегменте CS.

Левая колонка окна показывает смещение кодов программы в сегменте. Следующая колонка отображает значения кода в HEX-формате. И, наконец, правые две колонки отображают код программы в терминах ассемблера.

В окне ассемблера выполняются следующие уникальные действия:

1) просмотр программы;

2) пошаговое исполнение программы;

3) коррекция программы в терминах языка ассемблера.

Особый статус окна подчеркивается наличием в нем специального маркера исполняемой команды, а также особенностями активизации окна, связанными с характером выполняемых в нем действий.

1.6.1. Просмотр программы.

Для реализации режима просмотра программы необходимо активизировать окно CMD. В этом случае клавиши ↑, ↓, Pg Dn, Pg Up позволяют реализовать "прокрутку" текста программы в окне ассемблера. Причем установка начального адреса программы может быть выполнена командой D addr, где addr - смещение первой команды в сегменте CS (более подробно см. п. 2.2).

1.6.2. Пошаговое исполнение.

Режим пошагового исполнения является активным ВСЕГДА, то есть независимо от того, какое окно экрана активизировано в текущий момент. Для реализации этого режима используются "горячие клавиши" строки-подсказки:

F1 Step - пошаговое исполнение программы с "заходом" в подпрограммы и LOOP-циклы.

F2 StepProg - пошаговое исполнение программы без "захода" в подпрограммы и LOOP-циклы, т.е. любые действия, задаваемые командами CALL, INT, LOOP исполняются за один шаг.

В процессе пошаговой реализации программы специальный маркер (строка, выделенная цветом) показывает на команду, готовую к исполнению (текущую команду). Ниже маркера располагаются строки текущего фрагмента программы, а выше помещается строка с предыдущей исполненной командой.

Исполняя программу "шаг за шагом", мы имеем возможность наблюдать за изменением состояния процессора и стека (окно регистров), а также областей памяти (окна данных). Кроме того, отладчик предоставляет возможность наблюдать за операндами текущей команды, расположенными в памяти. Значение такого операнда отображается в правом верхнем углу окна ассемблера по мере появления команд, оперирующих с памятью.

1.6.3. Ассемблирование.

Для включения режима ассемблирования необходимо активизировать окно CMD и сформировать командную строку A или A addr, где addr - адрес, по которому будет размещаться новая команда программы. После включения режима пользователь может изменить текст программы. Выход из режима - по "CTRL-Home" (см. также п. 2.2).


2. Система команд.

В этом разделе рассмотрены команды отладчика, классифицированные по выполняемым функциям.

2.1. Загрузка файлов.

 

L fspec {param.}{,addr}

 

Загрузка файла fspec в память по указанному адресу addr. По умолчанию адрес загрузки равен CS:0100.

Если файл fspec является программой, т.е. имеет расширение.exe или.com, то в процессе загрузки производятся все необходимые действия по установке программы в память и подготовке ее к исполнению. При этом программе могут быть переданы параметры командной строки param.

После загрузки регистры BX и СХ отображают количество загруженных байт.

Примеры.

L pr1.exe - Загрузка программы pr1.exe по адресу CS:0100. После загрузки программа готова к исполнению.

L pr1 - То же самое, что и предыдущий пример, т.к. по умолчанию отладчик воспринимает все файлы без расширения как.exe-файлы.

L format a: - Загрузка программы форматирования диска format с параметром a:.

L proba.txt - Загрузка текстового файла по адресу CS:100.

L proba.txt,DS:0200 - Загрузка файла proba.txt по адресу DS:0200.

L proba.txt,1000:0200 - Загрузка файла proba.txt по адресу 1000:0200.

2.2. Управление программами.

 

G {start ad.}{,break ad.}

 

Запуск программы с текущего или заданного (start ad.) адреса. Допускается установка одной точки останова (break ad.). По умолчанию используется сегмент CS.

Для остановки запущенной программы используйте "горячую клавишу" CTRL-ESC.

В случае необходимости пользователь имеет возможность дополнительно установить 8 контрольных точек. Более подробно об этом сказано в разделе 3 данного документа.

Примеры.

G - Запуск программы с текущего адреса

G 100 - Запуск программы с адреса CS:0100

G,500 - Запуск программы с текущего адреса и останов по адресу CS:0500

G 100,500 - Запуск программы с адреса CS:0100 и останов по адресу CS:0500

 

A {addr}

 

Включения режима ассемблирования с текущего или заданного адреса. По умолчанию используется сегмент CS. В режиме ассемблирования становится активным окно ассемблера. При этом допускается редактирование программы путем занесения в память новых команд ассемблера. Текст каждой новой команды вводится в строку, отмеченную маркером, и ассемблируется по нажатию клавиши ENTER.

Выход из режима ассемблирования реализуется посредством "горячей клавиши" CTRL-HOME.

Примеры.

А - включить режим ассемблирования с текущего адреса.

А 100 - включить режим ассемблирования с адреса CS:0100.

 

D addr

 

Отображение дизассемблированного кода программы с заданного адреса addr. Дизассемблированый код отображается в окне ассемблера. По умолчанию используется сегмент CS.

Примеры.

D CS:100 - Поместить в окно ассемблера дизассемблированный код, начиная с адреса CS:100.

D 100 - То же самое, что и предыдущая команда.

PD addr, length {, fspec}

 

Печать дизассемблированного кода, начиная с адреса addr. По умолчанию используется сегмент CS. Параметр length задает количество дизассемблирован­ных команд. При необходимости результат дизассемблирования может быть помещен в файл fspec.

Примеры.

PD 100,10 - Напечатать на принтере 10 дизассемблированных команд, расположенных с адреса CS: 0100.

PD 100,10,pr.das - То же самое, но результат не печатать, а поместить в файл pr.das

2.3. Управление регистрами.

 

{R} reg = value

 

Установка регистров и флагов.

Примеры.

R AX=0000 - Очистка регистра AX.

AX=0 - То же самое, что и предыдущая команда.

BL=3C - Установка регистра BL.

CF=1 - Установка флага CF.

FL=0000 - Очистка всех флагов.

2.4. Управление памятью.

 

M n addr [reg]

 

Отображение содержимого памяти в окне n (n=1 или n=2). Начальный адрес отображаемой области памяти задается явно параметром addr, либо косвенно содержимым регистра [reg]. По умолчанию используется сегмент DS.

Примеры.

M 1 DS:1000 - Отобразить в окне 1 содержимое сегмента DS, начиная со смещения 1000.

M 1 1000 - То же самое, что и предыдущая команда.

М 1 [SI] - Отобразить в окне 1 содержимое сегмента DS, начиная со смещения, хранящегося в регистре SI.

W fspec, addr, length

 

Запись области данных в файл fspec. Здесь addr - начальный адрес области в памяти, length - длина области в байтах (<=64К).

По умолчанию используется сегмент DS.

Примеры.

W x.dat,DS:0200,5000 - Записать в файл x.dat область данных, начинающуюся с адреса DS:0200 и содержащую 5000 байт.

W x.dat,0200,5000 - То же самое, что и предыдущая команда.

 

PH addr, length {, fspec}

 

Печать содержимого области памяти в HEX и ASCII форматах (каждый байт отображается шестнадцатиричным и символьным кодом).

Здесь addr - начальный адрес области памяти. По умолчанию используется сегмент DS. length - количество байт. fspec- имя создаваемого файла.

Примеры.

PH 100,10 - Напечатать на принтере содержимое области памяти длиной 10 байт. Начальный адрес области - DS:0100.

PH 100,10,mem.txt - То же самое, что и предыдущая команда, но содержимое области не печатается, а заносится в файл mem.txt.

P addr, string

 

Запись в память по адресу addr кода string. По умолчанию используется сегмент CS.

Примеры.

P DS:100,FF - Записать в сотую ячейку памяти сегмента DS код FF.

P 100,'Hello!'- Записать в память строку 'Hello!'. Строку разместить с сотого адреса сегмента CS.

F addr, repeater, string

 

Заполнение памяти кодом string. По умолчанию используется сегмент DS. Параметр repeater задает количество кодов, передаваемых в память.

Примеры.

F 100,5,'HELLO!' - поместить в память, начиная с адреса DS:0100, пять строк 'HELLO!'.

F CS:0,1000,0 - очистить 1000 начальных ячеек сегмента CS путем записи в них кода 00.

S {{addr}, string

 

Поиск кода string в памяти с указанного адреса. По умолчанию используется сегмент CS (адрес CS:0000). Найденный код отражается в окне 2 данных. При этом сегментный адрес найденного кода находится в сегментном регистре отладчика HS.

Продолжение поиска - команда S без параметров.

Примеры.

S,0000 - найти в памяти код 0000, начиная с адреса CS:0000.

S DS:100,'Hello!' - найти в памяти строку 'Hello!', начиная с адреса DS:0100.

S - продолжить поиск, назначенный предыдущей командой S.

С addr, addr, length

 

Сравнение двух областей памяти длиной length байт. По умолчанию используется сегмент DS.

Если области не совпадают, их содержимое отображается в окнах 1 и 2.

Пример.

C CS:100,DS:100,100 - Сравнить области памяти сегмента CS (начальный адрес 0100) и сегмента DS (начальный адрес 0100). Длина сравниваемых областей - 100 байт.

CO s-addr, d-addr, length

 

Копирование данных из одной области памяти в другую.

Здесь

s-addr - начальный адрес области-источника информации;

d-addr - начальный адрес области-приемника информации;

length - длина копируемой области в байтах.

По умолчанию используется сегмент DS.

Примеры.

CO DS:100,DS:200,50 - Скопировать область данных длиной 50 байт с адреса DS:0100 на адрес DS:0200.

СO 100,200,50 - То же самое, что и предыдущая команда.

2.5. Управление портами.

 

I addr

 

Чтение порта по указанному адресу addr.

Примеры.

I A0 - Прочитать порт А0.

I 12B9 - Прочитать порт 12В9.

O addr, value

 

Записать в порт addr значение value.

Примеры.

О А0,FF - Записать в порт А0 значение FF.

О 12В9,00 - Очистить порт 12В9.

 

2.6. Управление режимами.

 

286 ON OFF

 

Настройка отладчика на процессор I80286, который используется в компьютерах класса IBM PC/AT.

Примеры.

286 ON - Включить режим процессора I80286

286 OFF - Отключить режим процессора I80286

MO{DE} M{ONO} C{OLOR} A{LTER} ON OFF

 

Установка режима работы дисплея:

М (MONO) - монохромный;

C (COLOR) - цветной;

Параметр A ON(OFF) разрешает (запрещает) отображение экрана отлаживаемой программы. Переключение между экранами реализуется "горячей клавишей" F6. Команда MO без параметров индицирует текущий режим работы дисплея.

Примеры.

MO C - Включить цветной режим.

MO A ON - Включить режим отображения экрана отлаживаемой

программы.

МО - Индицировать текущий режим работы дисплея.

BE{EP} ON OFF

 

Управление звуковым сигналом.

Примеры.

BE ON - Включить звуковой сигнал.

BE OFF - Отключить звуковой сигнал.

2.7. Трассировка

Для реализации режима трассировки необходимо установить в программу контрольные точки. Более подробно о контрольных точках говорится в разделе 3 пособия. В данном же разделе рассмотрены команды, поддерживающие режим трассировки.

 

T{B}

 

Отобразить буфер трассировки:

Т - на основном экране;

ТВ - на дополнительном экране.

PT {start,length{, fspec}

 

Печатать содержимое буфера трассировки. Здесь start - номер первой строки буфера; length - количество печатаемыхстрок; fspec - имя файла, в который записывается содержимоебуфера трассировки.

По умолчанию буфер печатается полностью.

Примеры.

PT,buf.txt - Поместить весь буфер трассировки в файл buf.txt.

PT 3,5 - Печатать 5 строк буфера трассировки, начиная с 3-й строки.

BW fspec

 

Запись контрольных точек в файл.

 

BL fspec

 

Загрузка контрольных точек из файла.

 

2.8. Протоколирование.

 

XT

 

Включить режим протоколирования. В режиме протоколирования все команды, введенные пользователем, запоминаются в специальном буфере - буфере протоколирования. Затем эти команды могут быть записаны в файл, либо повторно исполнены.

Режим протоколирования выключается автоматически (когда переполняется буфер), либо по "горячей клавише" CTRL-BREAK.

 

XX {fspec}

 

Исполнение команд, находящихся в буфере протоколирования. Если указано имя файла fspec, то исполняются команды из этого файла.

 

XW fspec

 

Запись буфера протоколирования в файл fspec.

 

XL fspec

 

Загрузить буфер протоколирования из файла fspec.

 

2.9. Завершение работы.

 

QUIT{R{ESIDENT}}

 

Возврат в DOS. Ключ R (RESIDENT) делает AFD резидентным.

Резидентный AFD может быть вызван "горячей клавишей" CTRL-ESC или аппаратным немаскируемым прерыванием NMI.

Примеры.

QUIT -Возврат в DOS.

QUIT R - Возврат в DOS с установкой AFD в качестве резидентной программы.

 

 

3. Контрольные точки

3.1. Формат экрана контрольных точек

В процессе отладки программ (особенно, сложных программ) перед пользователем возникает задача наблюдения за состоянием процессора и памяти в некоторых ключевых точках (адресах) исследуемой программы. Назовем такие точки контрольными. Отладчик AFD предоставляет большие возможности для решения этой задачи. При этом допускается одновременная установка до 8 контрольных точек.

Установка контрольных точек реализуется на специальном экране. Для включения этого экрана необходимо воспользоваться "горячей клавишей" строки-подсказки F9 Set BRK (установка контрольных точек). В результате этих действий рабочий экран (рис. 1) заменяется на экран контрольных точек, формат которого приведен на рис. 2.

 

B R E A K P O I N T E N T R Y M E N U

 

BR# Break ADR Condition Count Occur Action

1 CS:0.................................... 0 0

2 CS:0.................................... 0 0

3 CS:0.................................... 0 0

4 CS:0.................................... 0 0

5 CS:0.................................... 0 0

6 CS:0.................................... 0 0

7 CS:0.................................... 0 0

8 CS:0.................................... 0 0

--------------------------------------------------------------------------------

| Disassembler window address > |

|------------------------------------------------------------------------------|

| 24CF:0107 FF76FE PUSH [BP-02] |

| 010A 9A6281F113 CALL 13F1:8162 |

| 010F 83C402 ADD SP,0002 |

| 0112 B80D00 MOV AX,000D |

| 0115 50 PUSH AX |

| 0116 9A7481F113 CALL 13F1:8174 |

| 011B 83C402 ADD SP,0002 |

| 011E 803EDE4A03 CMP [4ADE],03 |

| 0123 7C13 JL 0138 |

|------------------------------------------------------------------------------|

1View Trace 3Read Setup 4 Help 5Main Menu 7Save Setup 8Disas.Window 9Clear

 

Рис.2. Экран контрольных точек.

 

Экран контрольных точек содержит два окна: окно меню контрольных точек (BREAKPOINT ENTRY MENU) и окно дизассемблера (DISASSEMBLER WINDOW). Переключение между окнами реализуется "горячей клавишей" F8. Функции этой клавиши, а также ряда других, перечислены в строке-подсказке нового экрана.

3.2. Окно контрольных точек

Основным окном рассматриваемого экрана является окно контрольных точек BREAKPOINT ENTRY MENU. Левая колонка BR# этого окна содержит номера контрольных точек от 1 до 8. (Заметим, что отладчик поддерживает еще одну, нулевую точку BR0, которая является точкой останова и задается командной строкой отладчика G согласно п. 2.2.). Следующая колонка BREAK ADR устанавливает адрес контрольной точки в формате сегмент:смещение. Содержимое этой колонки определяется пользователем.

В процессе реализации вычислений программа периодически "натыкается" на контрольные точки. При этом в каждой точке происходит прерывание программы отладчиком. "Перехватив инициативу", отладчик выполняет ряд действий, задаваемых пользователем. Для управления этими действиями служат колонки Condition, Count, Occur и Action рассматриваемого окна.

Колонка Count (счетчик) устанавливается пользователем и определяет то количество прохождений программы через контрольную точку, при достижении которого отладчик активно включается в работу. Для идентификации этого момента времени служит колонка Occur, показывающая фактическое количество прохождений программы через текущую контрольную точку. Очевидно, что информация в эту колонку поставляется отладчиком.

Таким образом, можно считать, что контрольная точка пропускается отладчиком, если не соблюдается условие Occur=Count. При этом для гарантированного выключения контрольной точки достаточно установить Count=0, т.к. при первом же прохождении программы через соответствующую точку величины Occur примет значение 1.

Если величина Count отлична от нуля, то после ряда "холостых" прохождений программы через контрольную точку наступает ситуация Occur=Count. В этом случае отладчик приступает к анализу соответствующей строки Condition рассматриваемого окна. Указанная строка формируется пользователем и задает условия активации контрольной точки в ситуации Occur=Count.

 

Условия активации записываются логическими выражениями типа:

REG=value - проверка состояния регистра;

[REG]=value - проверка состояния ячейки памяти сегмента DS,

адресуемой косвенно через регистр;

OFFSET=value- проверка состояния ячейки памяти сегмента DS, адресуемой прямо смещением OFFSET.

 

Seg:[REG]=value, Seg:OFFSET=value - аналогичны предыдущим двум выражениям, носегменты ячеек памяти задаются параметром Seg;

BRn - проверка активации контрольной точки n.

Здесь величина value задает некоторое значение HEX-формата, в котором может быть неопределен ряд цифр. Неопределенные цифры обозначаются символом 'x'.

Примерами логических выражений являются следующие записи:

AX=0, AL=0x, CS;[SI]=xF, 100:3560=1234, BR2 и т.п.

Для активации контрольной точки необходимо соблюдение ВСЕХ условий строки Condition. Если строка пуста, то для активации контрольной точки достаточно соблюдения условия Occur=Count.

Таким образом, в процессе вычислений каждая контрольная точка становится активной только при соблюдении ряда условий, задаваемых пользователем. В случае активизации точки отладчик реализует действия, заданные колонкой Action. Эти действия следующие:

S - остановить программу; для продолжения вычислений необходимо дать команду G в окно CMD рабочего экрана.

C - подсчитывать количество активации точки.

Rn,m...- сбросить состояние Occur контрольных точек n,m и др.

ON - включить режим трассировки. В процессе трассировки результат исполнения каждой команды фиксируется в буфере трассировки путем занесения в него состояния процессора и другой служебной информации.

T ON IN - включить трассировку процедур обработки прерываний

T OFF - выключить режим трассировки.

Кроме того, в момент активации контрольной точки отладчик выставляет в окно ассемблера рабочего экрана краткое сообщение об этом событии. Сообщение имеет вид "BRn", где n - номер активной контрольной точки.

3.3. Управление окном

Из приведенного выше описания следует, что окно контрольных точек может содержать большое количество информации. Для того чтобы облегчить работу пользователя в этих условиях отладчик предоставляет следующие средства, реализованные в виде "горячих клавиш" строки-подсказки.

F7 Save Setup - эта команда позволяет сохранить текущее состояние окна контрольных точек на диске.

F3 Read Setup - команда восстанавливает состояние окна, сохраненное командой F7.

F9 Clear - очистка окна.

3.4. Вспомогательные функции

Другим окном экрана контрольных точек является окно дизассемблера Disassembler Window. Это окно является вспомогательным и позволяет пользователю лишь просмотреть код программы с заданного адреса. Адрес отображаемого в окне фрагмента задается после активации окна "горячей клавишей" F8 Ddisaas.Window строки-подсказки.

По желанию пользователя вместо окна дизассемблера на экране контрольных точек можно поместить окно трассировки ("горячая клавиша" F1 View Trace), в которое помещаются результаты трассировки, либо текст подсказки, поясняющей смысл колонки окна BREAKPOINT ENTRTY MENU ("горячая клавиша "F4 Help).


Приложение П1.

Горячие клавиши

Рабочий экран

F1 Step Пошаговое исполнение программы команда за командой
F2 StepProc Пошаговое исполнение программы. Команды CALL, INT, LOOP реализуются за один шаг
F3 Retrive Поместить в окно командной строки предыдущую команду
F4 Help Подсказка
F5 Set BRK Включение экрана контрольных точек
F6 Включение экрана отлаживаемой программы в режиме MO A ON
F7 Up Переместить курсор вверх
F8 Dn Переместить курсор вниз
F9 Le Переместить курсор влево
F10 Ri Переместить курсор вправо

Экран контрольных точек

F1 View Trace Просмотр буфера трассировки
F2 Read Setup Загрузить окно контрольных точек с диска
F4 Help Подсказка
F5 Main Menu Включение рабочего экрана
F7 Save Setup Зафиксировать текущее состояние окна контрольных точек на диске
F8 Disas.Window Включить окно дизассемблера
F9 Clear Очистка окна контрольных точек

Приложение П2

Основные сообщения отладчика

Already resident. Use 'G'-Comand.

AFD уже резидентный. Используйте команду 'G'.

Breakpoint not in RAM.

Не могу установить контрольную точку, т.к. ее адрес находится в ПЗУ.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: