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

Отладчик debug

Читайте также:
  1. Assert срабатывает только в режиме Debug
  2. Использование окна Инспектора Отладки Debug Inspector
  3. Использование отладчика DEBUG для непосредственного ввода программ в память и трассировки их выполнения.
  4. Макрокоманды отладчика DEBUG.
  5. Отладчик сценариев
  6. Поиск ошибки в программе с помощью отладчика

 

Отладчик DEBUG используется для работы с программой написанной на ассемблере или в машинных кодах.

 

Команды отладчика:

 

-D - вывод участка памяти или иначе называют дамп памяти - это участок в 128 байт

пример: -D DS:00

-D 40:13

в первом случае выдастся участок памяти сегмента данных начиная с относительного адреса 00; во втором случае выдастся дамп памяти начиная с адреса 413.

-E -ввод данных в память в шестнадцатеричном коде начиная с определенного адреса

пример: -E DS:00 90 56 CD 78 45 09

в этом случае вводятся данные 90 56 CD 78 45 09 в сегмент данных начиная с 00 относительного адреса

-R - просмотр содержимого всех регистров и текущей команды с помощью этой команды можно изменить содержимое регистров

пример: -R IP

в этом случае выдается значение регистра IP и можно ввести новое значение этого регистра

 

-T - трассировка или пошаговое выполнение программы

-U -представить т.е.распечатать какую-то область памяти в кодах ассемблера

пример: -U 100,120

представление области памяти текущего сегмента кодов с 100 - 8 - по 120 смещение в кодах ассемблера

-A -исправление программы кодами ассемблера

пример: -A 120

исправление программы представленной в памяти начиная с относительного адреса 120

-N -задание имени COM файла

пример: -N имя.COM

-W -создание файла с расширением COM

-Q -выход из DEBUG'a

 

Вызов отладчика:

 

C:\SYS\VC>debug

 

Пример: Для проверки размера доступной для работы памяти необходимо просмотреть значение,находящееся в памяти в ячейках 413Н и 414Н - 400- это адрес сегмента, который записывается как 40 (последний нуль подразумевается) и - 13-это смещение от начала сегмента. Таким образом, можно ввести следующий запрос:

 

-d 40:13

 

Просмотр всех регистров:

 

-r

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

DS=1DC3 ES=1DC3 SS=1DC3 CS=1DC3 IP=0100 NV UP EI PL NZ NA PO C

1DC3:0100 DBE1 FDISI

 

Просмотр памяти в кодах ассемблера:

 

-u 0100,0111

1DF5:0100 E9C205 JMP 06C5

1DF5:0103 0000 ADD [BX+SI],AL

1DF5:0105 0000 ADD [BX+SI],AL

1DF5:0107 43 INC BX

1DF5:0108 4F DEC DI

1DF5:0109 4D DEC BP

1DF5:010A 4D DEC BP

1DF5:010B 41 INC CX

1DF5:010C 4E DEC SI

1DF5:010D 44 INC SP

1DF5:010E 2E CS:

1DF5:010F 43 INC BX

1DF5:0110 4F DEC DI

1DF5:0111 4D DEC BP

-r

AX=0000 BX=0000 CX=FE04 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

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

1DF5:0100 E9C205 JMP 06C5

Изменение программы в памяти:

 

-a 0100

1DF5:0100 JMP 0121

1DF5:0102

 

Просмотр:

 

-U 0100,0111

1DF5:0100 EB1F JMP 0121

1DF5:0102 050000 ADD AX,0000

1DF5:0105 0000 ADD [BX+SI],AL

1DF5:0107 43 INC BX

1DF5:0108 4F DEC DI

1DF5:0109 4D DEC BP

 

Выполнение программы (трассировка):

 

-T

 

AX=0000 BX=0000 CX=FE04 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=1DF5 ES=1DF5 SS=1DF5 CS=1DF5 IP=0127 NV UP EI PL NZ NA PO NC

1DF5:0127 206E6F AND [BP+6F],CH SS:006F=20

-T

 

AX=0000 BX=0000 CX=FE04 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

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

1DF5:012A 7420 JZ 014C

-T

 

AX=0000 BX=0000 CX=FE04 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=1DF5 ES=1DF5 SS=1DF5 CS=1DF5 IP=012C NV UP EI PL NZ NA PO NC

1DF5:012C 65 DB 65

 

Ниже приведена простая программа на машинном языке:

 

B82301 Переслать значение 0123H в AX

052500 Прибавить значение 0025H в AX

8BD8 Переслать содержимое AX в BX

03D8 Прибавить содержимое AX к BX

8BCB Переслать содержимое BX в CX

2BC8 Вычесть AX из AX (чистка AX)

90 Нет операции

CB Возврат в DOS

 

Команды имеют различную длину: один, два или три байта. Машинные команды находятся в памяти непосредственно друг за другом. Выполнение программы начинается с первой команды,и далее последовательно выполняются остальные.

Для печати протокола CTRL + PRT SC

Для непосредственного ввода программы на машинном языке надо ввести следующую команду, включая пробелы:

 

-E CS:100 B8 23 01 05 25 00

-E CS:106 8B D8 03 D8 8B CB

-E CS:10C 2B C8 2B C8 90 CB

 

-R

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

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

1DC3:0100 B82301 MOV AX,0123

-T

 

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

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

1DC3:0103 052500 ADD AX,0025

-T

 

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

DS=1DC3 ES=1DC3 SS=1DC3 CS=1DC3 IP=0106 NV UP EI PL NZ NA PE NC

1DC3:0106 8BD8 MOV BX,AX

-T

 

-U 100,107

1DC3:0100 B82301 MOV AX,0123

1DC3:0103 052500 ADD AX,0025

1DC3:0106 8BD8 MOV BX,AX

 

-A 108

1DC3:0108 ADD BX,AX

1DC3:010A MOV CX,BX

1DC3:010C SUB CX,AX

1DC3:010E SUB AX,AX

1DC3:0110 NOP

1DC3:0111 RET

1DC3:0112

 

-U 100,111

1DC3:0100 B82301 MOV AX,0123

1DC3:0103 052500 ADD AX,0025

1DC3:0106 8BD8 MOV BX,AX

1DC3:0108 01C3 ADD BX,AX

1DC3:010A 89D9 MOV CX,BX

1DC3:010C 29C1 SUB CX,AX

1DC3:010E 29C0 SUB AX,AX

1DC3:0110 90 NOP

1DC3:0111 C3 RET

 

-R IP

IP 0108

:100

Команда R IP позволяет изменить регистр IP и в данном случае установить указатель команды в начало программы.

 

-R

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

DS=1DC3 ES=1DC3 SS=1DC3 CS=1DC3 IP=0100 NV UP EI PL NZ NA PE NC

1DC3:0100 B82301 MOV AX,0123

-T

 

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

DS=1DC3 ES=1DC3 SS=1DC3 CS=1DC3 IP=0103 NV UP EI PL NZ NA PE NC

1DC3:0103 052500 ADD AX,0025

 

В предыдущем примере использовались непосредственные данные,описанные непосредственно в первых двух командах (MOV и ADD).Теперь рассмотрим аналогичный пример,в котором значения 0123 и 0025 определены в полях сегмента данных.Данный пример позволяет понять,как компьютер обеспечивает доступ к данным посредством регистра DS и адресного смещения

 

Сегмент данных:

¦ Адрес в DS ¦ Значение ¦ Номер байта ¦

+-----------------+----------------+--------------------+

¦ 0000 ¦ 23 01 ¦ 0 1 ¦

¦ 0002 ¦ 25 00 ¦ 2 3 ¦

¦ 0004 ¦ 00 00 ¦ 4 5 ¦

¦ 0006 ¦ 2A 2A 2A ¦ 6 7 и 8 ¦

 

Программа в машинных кодах:

 

A1 00 00 Переслать слово (2 байта), начинающееся в DS по адресу 00 в регистре AX.

 

03060200 Прибавить содержимое слова, начин. в DS по адресу 0002 к регистру AX.

A30400 Переслать содержимое регистра AX в слово начинающееся в DS по адресу 0004.

 

CB Вернуться в DOS.

 

Ввод данных в сегмент данных:

 

-E DS:00 23 01 25 00 00 00

-E DS:06 2A 2A 2A

 

Для ввода программы на машинном языке надо ввести следующие команды,включая пробелы:

 

-E CS:100 A1 00 00 03 06 02 00

-E CS:107 A3 04 00 CB

 

Просмотр сегмента данных:

 

-D DS:00

1DC3:0000 23 01 25 00 00 00 2A 2A-2A F0 4F 03 4E 17 8A 03.

1DC3:0010 4E 17 17 03 4E 17 57 15-01 01 01 00 02 FF FF FF..

1DC3:0020 FF FF FF FF FF FF FF FF-FF FF FF FF 1C 17 4E 01.

1DC3:0030 53 1B 14 00 18 00 C3 1D-FF FF FF FF 00 00 00 00

1DC3:0040 07 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

1DC3:0050 CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20.

1DC3:0060 20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20

1DC3:0070 20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00.

 

Просмотр сегмента кода:

 

-D CS:100

1DC3:0100 A1 00 00 03 06 02 00 A3-04 00 CB D9 29 C1 29 C0.

1DC3:0110 90 C3 D6 E0 5C 74 12 80-BF D6 E0 3A 34 00 B2 1D

1DC3:0120 D7 E0 5C 43 83 06 D1 DF-01 C7 06 CB DF D7 E0 01

1DC3:0130 1E CB DF 80 3E CF DF 00-75 0D C7 87 D7 E0 2A 2E

1DC3:0140 43 43 83 06 D1 DF 02 C7-87 D7 E0 2A 00 83 06 D1 CC

1DC3:0150 DF 01 5B C3 57 8B 3E CD-DF AC AA 0A C0 75 FA 5F

1DC3:0160 C3 57 8B 3E CB DF EB F1-53 A1 D1 DF BB DB E1 03

1DC3:0170 D8 80 7F FF 5C 74 04 C6-07 5C 43 89 1E CD DF 5B

 

Просмотр регистров и текущей команды:

 

-R

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

DS=1DC3 ES=1DC3 SS=1DC3 CS=1DC3 IP=0103 NV UP EI PL NZ NA PE C

1DC3:0103 03060200 ADD AX,[0002] DS:0002=

 

Трассировка -выполнение одной команды:

 

-T

 

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

DS=1DC3 ES=1DC3 SS=1DC3 CS=1DC3 IP=0107 NV UP EI PL NZ NA PE C

1DC3:0107 A30400 MOV [0004],AX DS:0004=

-T

 

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

DS=1DC3 ES=1DC3 SS=1DC3 CS=1DC3 IP=010A NV UP EI PL NZ NA PE C

1DC3:010A CB RETF

 

Возврат на начало программы:

 

-R IP

IP 010A

:100

 

Просмотр регистров и текущей команды:

 

-R

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

DS=1DC3 ES=1DC3 SS=1DC3 CS=1DC3 IP=0100 NV UP EI PL NZ NA PE C

1DC3:0100 A10000 MOV AX,[0000] DS:0000=0123

 

Трассировка до конца программы с выполнением команды RET:

 

-T

 

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

DS=1DC3 ES=1DC3 SS=1DC3 CS=1DC3 IP=0103 NV UP EI PL NZ NA PE C

1DC3:0103 03060200 ADD AX,[0002] DS:0002=0025

-T

 

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

DS=1DC3 ES=1DC3 SS=1DC3 CS=1DC3 IP=0107 NV UP EI PL NZ NA PE C

1DC3:0107 A30400 MOV [0004],AX DS:0004=0148

-T

 

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

DS=1DC3 ES=1DC3 SS=1DC3 CS=1DC3 IP=010A NV UP EI PL NZ NA PE C

1DC3:010A CB RETF

-T

 

AX=0148 BX=0148 CX=0000 DX=0000 SP=FFF2 BP=0000 SI=0000 DI=0000

DS=1DC3 ES=1DC3 SS=1DC3 CS=0D75 IP=0000 NV UP EI PL NZ NA PE NC

0D75:0000 005926 ADD [BX+DI+26],BL DS:016E=E1

Для возврата на начало программы необходимо восстановить два регистра IP и CS:

 

-R IP

IP 0000

:100

-R CS

CS 0D75

:1DC3

 

Просмотр регистров и текущей команды:

 

-R

AX=0148 BX=0148 CX=0000 DX=0000 SP=FFF2 BP=0000 SI=0000 DI=0000

DS=1DC3 ES=1DC3 SS=1DC3 CS=1DC3 IP=0100 NV UP EI PL NZ NA PE C

1DC3:0100 A10000 MOV AX,[0000] DS:0000=0123

 

последняя команда доказывает что мы перешли на начало программы.

 

Для создания COM файла необходимо:

· ввести имя файла

-N B.COM

· задать размер файла в байтах

-R CX

CX 0000

:6

· команда -создать файл

-W

Запись: 1480006 байт

 


Дата добавления: 2015-11-14; просмотров: 40 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
ЧТО НЕОБХОДИМО ИМЕТЬ, ЧТОБЫ УСПЕШНО ЗАРЕГИСТРИРОВАТЬСЯ В SHIPITO| ОТЧЕТ О ПЕШЕМ ПОХОДЕ НА ВЫСШУЮ ТОЧКУ БЕШЕНКОВИЧСКОГО РАЙОНА ВИТЕБСКОЙ ОБЛАСТИ

mybiblioteka.su - 2015-2024 год. (0.022 сек.)