- •Отладчик программ afd
 - •Содержание
 - •Введение
 - •1. Рабочая среда отладчика.
 - •1.1. Запуск отладчика и выход из среды.
 - •1.2. Навигация по экрану.
 - •1.3. Окно регистров.
 - •1.4. Окна памяти.
 - •1.5. Окно командной строки.
 - •1.6. Окно ассемблера.
 - •1.6.1.Просмотр программы.
 - •1.6.2. Пошаговое исполнение.
 - •1.6.3.Ассемблирование.
 - •2. Система команд.
 - •2.1. Загрузка файлов.
 - •2.2. Управление программами.
 - •2.3. Управление регистрами.
 - •2.4. Управление памятью.
 - •2.5. Управление портами.
 - •2.6. Управление режимами.
 - •2.7. Трассировка
 - •2.8. Протоколирование.
 - •2.9. Завершение работы.
 - •3. Контрольные точки
 - •3.1. Формат экрана контрольных точек
 - •3.2. Окно контрольных точек
 - •3.3. Управление окном
 - •3.4. Вспомогательные функции
 - •Приложение п1. Горячие клавиши Рабочий экран
 - •Экран контрольных точек
 - •Приложение п2 Основные сообщения отладчика
 - •Invalid BreakPoint number.
 - •Invalid operand type or size.
 - •Invalid register.
 - •Value missing.
 - •Литература
 
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 - То же самое, что и предыдущая команда.
