Лекции / GL03
.DOC|
4.2) |
L [адрес] |
Load — загрузка |
Содержимое файла переписывается в ОЗУ. Файлы с любым расширением кроме .exe — начиная с указанного адреса (если адрес опущен, то начиная с CS:0100). Для файлов с расширением .exe адрес игнорируется, используется стартовый адрес, записанный в самом файле.
По окончании загрузки в BX:CX содержится размер файла в байтах.
|
4.3) |
W [адрес] |
Write — запись |
Запись файла на диск. Предварительно в BX:CX нужно записать размер файла. Если адрес не указан, то подразумевается CS:0100.
У команд L и W имеются также параметры для работы с секторами диска. Мы их не рассматриваем.
5) Сервис.
|
5.1) |
H <величина> <величина> |
Hex — шестнадцатеричный |
Встроенный калькулятор. Вычисляет сумму и разность указанных величин:
H a b (a и b — слова)
a+b a-b
Примеры: 1) Программа начинается по адресу 0100h и заканчивается по адресу 012Ah. Определить размер программы.
-h12a ff
0229 002B (Размер программы 2Bh)
2) В байте записано число FEh. Дополнительным кодом какого числа оно является? Расширяем знак до размеров слова
-H0 fffe
fffe 0002 (Дополнительный код –2 есть FEh)
|
5.2) |
M область-источник адрес_приемника |
Move — перемещать |
Пример. Предположим, мы набрали программу
-a100
11CF:0100 mov ax,1
11CF:0103 add ax,bx
11CF:0105 nop
11CF:0106
и обнаружили, что пропустили команду mov bx,2. Перемещаем часть программы "подальше". Размер области берем "с запасом".
-m103L20 200
Вводим недостающую команду
-a103
11CF:0103 mov bx,2
11CF:0106
Теперь мы знаем адрес назначения (0106) и перемещаем хвост программы
-m200L20 106
-u100 (проверяем правильность результата) ...
Упражнение. Разработайте последовательность действий, если нужно удалить часть команд программы. О "перекрытии" области-приемника и области-источника беспокоиться не нужно (проверьте!).
|
5.3) |
C область1 адрес_области |
Compare — сравнение |
Выводится таблица в формате
адрес1 байт1 байт2 адрес2 в том случае, если байт1 не совпадает с байт2.
Упражнение. Придумайте пример. С помощью команды E введите данные в две области памяти (например, две незначительно различающиеся строки) и сравните содержимое областей с помощью команды C.
|
5.4) |
S область список |
Search — поиск |
Список — это список байтов или строка. Debug выдает все адреса байтов или строк, которые совпадают с указанными.
Упражнение. Придумайте примеры.
6) Остальные команды.
|
6.1) |
Q |
Quit — завершение |
Осуществляется выход из debug. При этом набранные программы и данные теряются, если они предварительно не были сохранены посредством команды W.
6.2) ? Выводит на экран алфавитный список команд debug.
3.5. Как получить текст программы, набранной в debug.
После отладки внесения необходимых изменений в команды программы хотелось бы получить файл с текстом программы, чтобы добавить в него комментарии, распечатать и т.д. Можно рекомендовать следующую последовательность действий.
1) Определяем размер программного кода. Если вся программа состоит из чистого кода, как pr1.com, даем команды
D:\USER\>debug pr1.com
-r
и читаем в регистрах BX:CX шестнадцатеричный размер программы. (В нашем случае 9h).
2) Создадим с помощью любого текстового редактора файл (например, pr1.cmd), содержащий команды отладчика:
U100L9
Q
(последнюю команду Q обязательно завершить нажатием Enter). Вновь запускаем debug.
D:\USER\>debug pr1.com < pr1.cmd > pr1.txt
Входная информация поступает из pr1.cmd, выходная направляется в файл pr1.txt. Для этого используются символы > и < (перенаправление операций ввод-вывода).
Остается подправить содержимое файла pr1.txt в редакторе.
Упражнение. В предыдущей главе мы выясняли, какие флаги состояния будут выставлены центральным процессором при выполнении сложения слов: 2345h + 3219h и 5439h + 456Ah. Проверить правильность сделанных выводов, используя debug.
