Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции / GL03

.DOC
Скачиваний:
15
Добавлен:
20.05.2014
Размер:
104.45 Кб
Скачать

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.

Соседние файлы в папке Лекции