Читайте также:
|
|
Debug
Запуск Debug.exe, программы для проверки и отладки исполнительных файлов MS-DOS. Выполненная без параметров команда debug запускает программу Debug.exe и выводит приглашение команды debug, представленное дефисом (-).
Синтаксис
debug [[ диск: ][ путь ] имя_файла [ параметры ]]
Параметры
[ диск: ][ путь ] имя_файла
Задание расположения и имени исполняемого файла для тестирования.
параметры
Указание параметров командной строки, передаваемых отлаживаемой программе.
?
Вывод списка подкоманд команды debug.
Примечания
Команда debug — это команда подсистемы MS-DOS, которая выполняется в среде WOW/NTVDM.
Параметры можно вводить через запятые или пробелы, но это требуется только для шестнадцатеричных значений. Например, следующие команды эквивалентны:
dcs:100 110
d cs:100 110
d,cs:100,110
Существует несколько команд debug, которыми можно воспользоваться. Дополнительные сведения о командах debug см. по ссылке «См. также».
Форматирование
Формат | Значение |
Курсив | Данные, которые должен ввести пользователь |
Полужирный шрифт | Элементы, которые следует вводить точно, как показано |
Пропуск (...) | Параметры могут повторяться несколько раз в командной строке |
В квадратных скобках ([]) | Необязательные элементы |
В фигурных скобках ({}); варианты разделены вертикальной чертой (|). Пример: {четные|нечетные} | Набор значений, из которого можно выбрать только одно значение |
Шрифт Courier | Текст кода или выхода программы |
Подкоманды команды Debug
Дополнительные сведения см. по ссылке команды.
Debug: a (assemble)
Создание двоичного кода процессоров 8086/8087/8088 непосредственно в памяти. Выполненная без параметров команда a начинает работу с точки последнего останова.
Синтаксис
a [ адрес ]
Параметры
адрес
Задает адрес, по которому записаны инструкции на языке ассемблер. Параметр адрес принимает шестнадцатеричные значения без знака h.
?
Вывод списка команд debug.
Примечания
Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес сегмента из четырех цифр, а вторая содержит значение смещения. Адрес сегмента или сегментный регистр можно пропустить. По умолчанию для команд debug a, g, l, t, u и w адрес сегмента содержится в регистре CS. Для других подкоманд по умолчанию используется сегмент DS. Все числовые значения при этом представлены в шестнадцатеричном формате. Между именем сегмента и значением смещения следует вставлять двоеточие. Примеры правильных адресов:
CS:0100
04BA:0100
Задайте мнемонику префикса инструкции перед кодом операции (т. е. opcode), к которой она относится. Команда a создает исполняемый машинный код из инструкций на языке ассемблера. Все числовые значения должны быть представлены в шестнадцатеричном формате и записаны как набор от 1 до 4 символов.
Мнемоники cs:, ds:, es: и ss:. Мнемоникой, вызывающей возврат управления в другой сегмент кода (far return), является retf. Мнемоники для работы со строками должны точно определять размер элементов строк. Например, для перемещения строк из слов (16 бит) следует использовать movsw, а для перемещения строк из байтов (8 бит) следует использовать movsb.
Ассемблер автоматически обрабатывает переходы и вызовы (т. е. префиксы short, near или far) в зависимости от смещения байтов. Имеется возможность переопределить переходы или вызовы с помощью префиксов near или far. Например:
-a0100:0500
0100:0500 jmp 502; короткий (short) переход на 2 байта
0100:0502 jmp near 505; ближний (near) переход на 3 байта
0100:0505 jmp far 50a; длинный (far) переход на 5 байтов
Вместо префикса near можно использовать сокращение ne.
Если операнды ссылаются на адреса слов или байтов в памяти, тип данных должен быть задан с использованием префикса word ptr или byte ptr, которые можно сократить до wo для word ptr и до by для byte ptr. Например:
dec wo [si]
neg byte ptr [128]
В программе Debug.exe используется общее соглашение о том, что операнды, указывающие на адрес в памяти, заключаются в квадратные скобки ([ ]). Это единственный способ, который позволяет различать непосредственные операнды и ссылки на области в памяти в Debug.exe. Например:
mov ax,21; загрузить число 21h в регистр AX
mov ax,[21]; загрузить содержимое
; памяти по адресу 21h
; в регистр AX
С командой a часто используются две псевдоинструкции: операция db, которая размещает байты непосредственно в памяти, и операция dw, которая размещает в памяти слова. Например:
db 1,2,3,4,"ЭТО ПРИМЕР"
db 'ЭТО КАВЫЧКА: "'
db "ЭТО КАВЫЧКА: '"
dw 1000,2000,3000,"BACH"
Дополнительные сведения о вводе данных в определенные байты с помощью команды e (enter) см. по ссылке «См. также».
Дополнительные сведения о деассемблировании байт с помощью команды u (unassemble) см. по ссылке «См. также».
Примеры
Команда a допускает различное использование ссылок на регистры. Например:
add bx,34[bp+2].[si-1]
pop [bp+di]
push [si])
Кроме того, команда a поддерживает использование синонимов дополнительных кодов операций: Например:
loopz 100
loope 100
ja 200
jnbe 200
Для дополнительных кодов операций процессора 8087 необходимо задать префиксы wait или fwait. Например:
fwait fadd st,st(3); эта строка вставляет
; в код префикса fwait
Форматирование
Формат | Значение |
Курсив | Данные, которые должен ввести пользователь |
Полужирный шрифт | Элементы, которые следует вводить точно, как показано |
Пропуск (...) | Параметры могут повторяться несколько раз в командной строке |
В квадратных скобках ([]) | Необязательные элементы |
В фигурных скобках ({}); варианты разделены вертикальной чертой (|). Пример: {четные|нечетные} | Набор значений, из которого можно выбрать только одно значение |
Шрифт Courier | Текст кода или выхода программы |
Debug: c (compare)
Сравнение двух блоков памяти.
Синтаксис
c диапазон адрес
Параметры
диапазон
Обязательный параметр. Задание начального и конечного адреса или начального адресы и длины первой области в памяти для сравнения.
адрес
Обязательный параметр. Задание начального адреса второй области памяти для сравнения.
?
Вывод списка команд debug.
Примечания
Параметр диапазон используется в командах debug для задания диапазона памяти. Для задания диапазона можно использовать один из следующих форматов: начальный и конечный адрес или начальный адрес и длина (разделяются символом l) диапазона. Например, обе следующих команды задают 16-разрядный диапазон, начинающийся с адреса CS:100:
cs:100 10f
cs:100 l 10
Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес сегмента из четырех цифр, а вторая содержит значение смещения. Адрес сегмента или сегментный регистр могут быть пропущены. По умолчанию для команд debug a, g, l, t, u и w адрес сегмента содержится в регистре CS. Для других подкоманд по умолчанию используется сегмент DS. Все числовые значения при этом представлены в шестнадцатеричном формате. Между именем сегмента и значением смещения следует вставлять двоеточие. Следующие адреса являются допустимыми:
CS:0100
04BA:0100
адрес1 байт1 байт2 адрес2
Примеры
Чтобы сравнить блок памяти от 100h до 10Fh с блоком памяти от 300h до 30Fh, введите следующую команду:
C100,10f 300
или
C100l10 300
Обе эти команды выведут следующие данные (предполагается, что DS = 197F):
197F:0100 4D E4 197F:0300
197F:0101 67 99 197F:0301
197F:0102 A3 27 197F:0302
197F:0103 35 F3 197F:0303
197F:0104 97 BD 197F:0304
197F:0105 04 35 197F:0305
197F:0107 76 71 197F:0307
197F:0108 E6 11 197F:0308
197F:0109 19 2C 197F:0309
197F:010A 80 0A 197F:030A
197F:010B 36 7F 197F:030B
197F:010C BE 22 197F:030C
197F:010D 83 93 197F:030D
197F:010E 49 77 197F:030E
197F:010F 4F 8A 197F:030F
Адреса 197F:0106 и 197F:0306 отсутствуют в списке. Это означает, что значения, расположенные по этим адресам, совпадают.
Дата добавления: 2015-11-13; просмотров: 29 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
ОБРАБОТКА ПРЕРЫВАНИЯ ТАЙМЕРА | | | Форматирование |