Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Основные команды отладчика DEBUG




l N(name) — объявление имени файла.

l R m(register) — отображение на экране дисплея содержимого регистра памяти МП с именем m. Если m не указано, показывается содержимое всех регистров памяти МП, вектор-адрес следующей команды (CS:IP), машинный и мнемокод этой команды; например:

-R

AX=0005 BX=0005 CX=0000 DX=0001 SP=FFEE BP=0000 SI=0000 DI=0000

DS=1A8E ES=1A8E SS=1A8E CS=1A8E IP=010A NV UP EI PL NZ NA PO NC

1A8E:010A B81500 MOV AX,0015;

Если отображается содержимое одного регистра, то команда R позволяет изменить его содержимое:

-R ax

AX 0005

:45

-R ax

AX 0045

l A n (assembler) — прием команд ассемблера с клавиатуры и преобразование их в машинные коды, n — начальный вектор-адрес машинных команд.

Пример ввода программы:

-A 100

1A8E:0100 mov ax,15

1A8E:0103 mov bx,5

1A8E:0106 add ax,bx

1A8E:0108 div bx

1A8E:010A

l U n1, n2 Lk (unassembler) — преобразование машинных кодов команд в команды на языке ассемблера и отображение их на экране дисплея, n1 — вектор-адрес 1-ой, а n2 — смещение последней из машинных команд, подлежащих деассемблированию, k — длина программы (может указываться либо n2, либо Lk). Пример деассемблирования программы:

-U100 La

1A8E:0100 B81500 MOV AX,0015

1A8E:0103 BB0500 MOV BX,0005

1A8E:0106 01D8 ADD AX,BX

1A8E:0108 F7F3 DIV BX

l T k (tracing) — выполнение очередных k команд программы: Ели k не указано, то выполняется одна команда (пошаговая трассировка программы). Команды обращения к процедурам и внутренние прерывания командой Т не выполняются, так как по Т будут последовательно выполняться команды процедуры и команды обработки прерывания соответственно. В этих случаях следует использовать команду процедурной трассировки P (procedure), почти аналогичную команде T, но позволяющую автоматически полностью выполнять встречающиеся при трассировке процедуры, или команду G n. После выполнения команд (команды) на дисплей выводится:

l содержимое всех регистров памяти МП в шестнадцатеричном коде (значения флагов регистра FL показываются в мнемокоде (см. табл. 9.2);

l вектор-адрес (CS:IP);

l машинный и мнемокоды текущей команды.

Пример трассировки программы:

R

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=1A8E ES=1A8E SS=1A8E CS=1A8E IP=0100 NV UP EI PL NZ NA PO NC

1A8E:0100 B81500 MOV AX,0015

-t

AX=0015 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=1A8E ES=1A8E SS=1A8E CS=1A8E IP=0103 NV UP EI PL NZ NA PO NC

1A8E:0103 BB0500 MOV BX,0005

-t

AX=0015 BX=0005 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=1A8E ES=1A8E SS=1A8E CS=1A8E IP=0106 NV UP EI PL NZ NA PO NC

1A8E:0106 01D8 ADD AX,BX

-t

AX=001A BX=0005 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=1A8E ES=1A8E SS=1A8E CS=1A8E IP=0108 NV UP EI PL NZ NA PO NC

1A8E:0108 F7F3 DIV BX

-t

AX=0005 BX=0005 CX=0000 DX=0001 SP=FFEE BP=0000 SI=0000 DI=0000

DS=1A8E ES=1A8E SS=1A8E CS=1A8E IP=010A NV UP EI PL NZ NA PO NC

1A8E:010A 48 DEC AX

l G n (go) — выполнение EXE- или COM-программы до команды с вектор-адресом n, при отсутствии n программа отрабатывает до конца.

После выполнения команд (команды) на дисплей выводятся:

l содержимое всех регистров памяти МП в шестнадцатеричном коде (значения);

l флаги регистра FL выводятся в мнемокоде (см. табл. 9.2);

l вектор-адрес (CS:IP), машинный и мнемокод текущей команды.

После выполнения программы получим:

-g 10a

AX=0005 BX=0005 CX=0000 DX=0001 SP=FFEE BP=0000 SI=0000 DI=0000

DS=1A8E ES=1A8E SS=1A8E CS=1A8E IP=010A NV UP EI PL NZ NA PO NC

1A8E:010A 48 DEC AX

l D n, s Lk (dump) — отобразить на экране дисплея содержимое k ячеек памяти, начиная с ячейки по вектор-адресу n (по умолчанию –ни n, ни Lk не указаны: n — текущий вектор-адрес + 1 и k = 128), то есть, нажав клавиши D и Enter, можно посмотреть следующие 128 ячеек:

 

(Редактору. Все строчки поместить без переносов, уплотнить шрифт)

-D

1D20:0C00 F7 07 01 00 75 12 2E C7-06 CB 98 02 00 EB 09 E8....u...........

1D20:0C10 96 00 F8 EB 0D F9 EB 0A-50 B0 03 B4 FF E8 03 00........P.......

1D20:0C20 58 F8 C3 57 26 8B 7F 04-2E 89 3E CF 98 26 88 05 X..W&.....>..&..

1D20:0C30 26 88 65 01 50 2E A1 DE-98 26 89 45 02 58 3C 01 &.e.P....&.E.X<.

1D20:0C40 75 0A 26 89 55 04 26 89-4D 06 EB 5A 3C 02 75 06 u.&.U.&.M..Z<.u.

1D20:0C50 26 89 55 04 EB 50 3C 07-74 E8 3C 08 74 E4 3C 06 &.U..P<.t.<.t.<.

1D20:0C60 75 06 26 88 55 04 EB 3E-3C 04 75 0F 2E A1 D8 98 u.&.U..><.u.....

1D20:0C70 40 26 89 45 04 26 8C 5D-06 EB 2B 26 89 75 04 26 @&.E.&.]..+&.u.&

Частные случаи:

l если L и k не указаны, то до ячейки, имеющей в том же сегменте, смещение равно S;

l если S не указано, то показываются k ячеек памяти (в частности: D n L1— одна ячейка памяти с вектор-адресом n);

Примеры:

-D 3b43 L3

1A8E:3B40 6C 6C 65 lle

-D 3b43 L1

1A8E:3B40 6C l

l если S и Lk не указаны (есть только D n), то отображаются 128 ячеек памяти, например:

-D 405

1A8E:0400 69 6C 65-66 69 6C 65 66 69 6C 65 ilefilefile

1A8E:0410 66 69 6C 65 66 69 6C 65-66 69 6C 65 66 69 6C 65 filefilefilefile

1A8E:0420 00 44 CD 21 F6 C2 80 74-05 F6 C2 10 75 05 E8 52.D.!...t....u..R

1A8E:0430 FD 8C DB 53 81 C3 2D 00-03 DA 8C CD 8B C2 80 E4...S..-.........

1A8E:0440 0F B1 04 8B F2 D3 E6 8B-CE D1 E9 4E 4E 8B FE 2B...........NN..+

1A8E:0450 E8 2B D8 8E C5 8E DB F3-A5 FC 8E DD 07 06 BF 00.+..............

1A8E:0460 01 33 F6 AD 95 BA 10 00-EB 2B AD 95 B2 10 EB 35.3.......+.....5

1A8E:0470 AD 95 B2 10 EB 36 AD 95-B2 10 EB 3B AD 95 B2 10.....6.....;....

1A8E:0480 EB 5D AD 95 B2.]...

Содержимое выводится в шестнадцатеричном коде и в соответствующих символах ASCII (символы расширенного набора ASCII замещаются точкой (.)).

l E n “текст1“, “ текст2“...(enter) — изменение содержимого ячеек памяти, начиная с вектор адреса n; количество ячеек определяется размером и количеством указанных в команде текстов, так, по команде –e 200 'pole', 'файл', 'file' выводится следующая информация:

-d Lc

1A8E:0200 70 6F 6C 65 E4 A0 A9 AB-66 69 6C 65 pole...file;

При вводе числовой информации (машинных кодов команд) следует набрать E n, нажать клавишу Enter, и после отображенного байта информации и точки ввести новое значение (1 байт), например:

-e 300

1A8E:0300 73.20

Для ввода последующих байтов нужно нажать клавишу Space и выполнить ввод очередного байта.

l F n Lk “текст1“ (fill) — заполнение блока памяти длиной k байт, начиная с вектор-адреса n, однобайтовыми фрагментами «текст1»: например, –f 400 L20 'file'.

Результат выполнения команды:

-d 400 L30

(Редактору. Все строчки без переносов).

1A8E:0400 66 69 6C 65 66 69 6C 65-66 69 6C 65 66 69 6C 65 filefilefilefile

1A8E:0410 66 69 6C 65 66 69 6C 65-66 69 6C 65 66 69 6C 65 filefilefilefile

1A8E:0420 00 44 CD 21 F6 C2 80 74-05 F6 C2 10 75 05 E8 52.D.!...t....u..R

l S n Lk“текст“ (search) — поиск фрагмента «текст» в поле памяти длиной k ячеек с выдачей вектор-адреса ячейки, хранящей искомый текст: –s 200 l10 'fi'.

Результат работы команды: 1A8E:0208.

l W (write) — запись программы на диск; в регистр СХ должна быть предварительно указана длина программы в байтах, в регистр BX занесен нуль, а командой N задано имя файла (N имя_файла);

l L (load) — загрузка файла с диска в ОП; предварительно следует в BX записать нуль, в регистр СХ записать длину файла в байтах и объявить его имя N; для стандартно оформленных COM- и EXE-программ это же можно выполнить, набрав debug имя_файла.

Заметим, что:

l ввод всех числовых данных осуществляется в шестнадцатеричной системе счисления, текстов — в символах ASCII, помещенных в кавычки;

l вектор-адрес имеет форму адрес сегмента:адрес смещения; адрес сегмента может быть определен в явном виде шестнадцатеричным кодом или указанием соответствующего сегментного регистра; сегмент команд может быть задан по умолчанию; адрес смещения описывается в явном виде шестнадцатеричным кодом. Примеры задания вектор-адреса: 4FC5:10B, 13C6:1ABB, DS:0, CS:100;

l при вводе и отображении двухбайтовых слов старший байт размещается правее младшего. Пример: при отображении машинного кода команды mov AX, 0123 на экране получим: B82301 (B8 — код 'mov ax').

Вопросы для самопроверки

  1. Назовите основные компоненты языка ассемблер.
  2. Приведите формат ассемблерной команды и поясните его.
  3. Приведите формат ассемблерной директивы и поясните его.
  4. В чем принципиальное отличие выполнения команд от выполнения директив и модификаторов.
  5. Поясните ограничения, накладываемые на операнды в составе двухадресных команд.
  6. Сформулируйте правила выбора множимого и места размещения произведения при выполнении команды умножения для разных форматов множителя.
  7. Сформулируйте правила выбора делимого и места размещения частного и остатка при выполнении команды деления для разных форматов делителя.
  8. Назовите команды безусловной передачи управления и поясните их структуру и назначение.
  9. Назовите несколько команд условной передачи управления и поясните их структуру и назначение.
  10. В чем особенность выполнения процедур ввода-вывода?
  11. Рассмотрите и поясните группы команд, необходимые для выполнения процедуры вывода информации на экран дисплея.
  12. Рассмотрите и поясните группы команд, необходимые для выполнения процедуры ввода информации с клавиатуры.
  13. Рассмотрите и поясните группы команд, необходимые для выполнения процедуры вывода информации на принтер.
  14. Рассмотрите ассемблерные процедуры работы с файлами.
  15. Рассмотрите и поясните процедуры формирования машинной программы.
  16. Приведите структуру ассемблерной программы и дайте краткую характеристику основных структурных фрагментов этой программы.
  17. Составьте и отладьте ассемблерную программу решения какой либо задачи, например, вычисления суммы членов математического ряда.
  18. Рассмотрите листинг ассемблерной программы и разберитесь со всеми компонентами его строк.
  19. Почему выполняется инициализация адреса сегмента данных в регистре DS в самом начале кодового сегмента программы?
  20. Каково назначение отладчика программ Debug? Назовите основные его возможности.
  21. Поясните последовательность работы блоков ПК при реализации команды машинной программы.

[1] В книге для отображения операндов команд приняты обычное обозначение opr и семантические обозначения src (source — источник) и dst (destination — приемник).





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 878 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Свобода ничего не стоит, если она не включает в себя свободу ошибаться. © Махатма Ганди
==> читать все изречения...

2307 - | 2069 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.