скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Руководство по Soft-ICE (DOS) - 12


Настоящее имя Билла Гейтса - дед мастдай...

I3HERE

I3HERE -- Перенаправить прерывание 3 на Soft-ICE

Синтаксис:


I3HERE [ON | OFF]

Комментарии:

Команда I3HERE позволяет вам указать, что любое прерывание 3 вызовет окно Soft-ICE. Эта возможность полезна для остановки вашей программы в определенных местах.

Чтобы использовать эту возможность, поместите INT 3 в ваш код в месте, где вы хотите остановиться. Когда произойдет INT 3, оно вызовет окно Soft-ICE. В этой точке, вы можете использовать команду R IP, чтобы изменить ваш указатель команд на команду, следующую после INT 3, затем вы можете продолжить отладку.

Если параметры не указаны, отображается текущее состояние I3HERE.

Значение по умолчанию - режим I3HERE OFF.

Пример:


I3HERE ON

Эта команда включает режим I3HERE. Любой INT 3, сгенерированный после этого, вызовет окно Soft-ICE.

5.5 Сервисные Команды

Команды:

A -- Транслировать код
S -- Поиск данных
F -- Заполнить память данными
M -- Переместить данные
C -- Сравнить два блока данных

A

A -- Транслировать код

Синтаксис:


A [Адрес]

Комментарии:

Транслятор Soft-ICE позволяет вам транслировать команды непосредственно в памяти. Транслятор поддерживает базисную систему команд 8086 с расширениями для реального режима 80186 и 80286. Инструкции математического сопроцессора и специфические для 80386 команды, регистры и режимы адресации НЕ могут быть оттранслированы.

Команда A вызывает интерактивный транслятор Soft-ICE. В начале каждой транслируемой строки отображается ее адрес. После того как команда ассемблера набрана и нажат ВВОД, команды транслируются в память по указанному адресу. Команды должны вводиться в стандартном формате Intel. Для выхода из режима транслятора нажмите ВВОД в пустой строке.

Если адресный интервал, в который вы транслируете команды, видим в окне кода, команды будут изменятся интерактивно, по мере трансляции.

Транслятор Soft-ICE'а поддерживает стандартную мнемонику семейства 8086, однако имеются некоторые специальные добавления:

  • Мнемокод DB используется для указания байтов данных непосредственно в памяти. Команда DB сопровождается списком байтов и/или строк в кавычках разделенных пробелами или запятыми.
  • Мнемокод RETF описывает дальний возврат.
  • WORD PTR и BYTE PTR используется для указания размера данных, если не присутствует аргумент-регистр, например: MOV BYTE PTR ES:[ 1234],1.
  • Используйте, FAR и NEAR для явной трансляции дальних и ближних переходов и обращений. Если FAR или NEAR не указаны, то все переходы и обращения - ближние.
  • Операнды, описывающие ячейки памяти, должны помещаться в квадратные скобки, например: MOV AX,[1234].

Пример:


A CS:1234

Эта команда выводит приглашение для ввода команд ассемблера, затем транслирует их, начиная со смещения 1234H в текущий сегмент кода. Нажмите ВВОД в приглашении с адресом после ввода последней команды.

S

S -- Поиск данных

Синтаксис:


S адрес L длина список-данных

список-данных -- список байтов или строк в кавычках, разделенных запятыми или пробелами. Строка в кавычках может начинаться с одинарной или двойной кавычки.
длина -- длина в байтах

Комментарии:

Команда S ищет в памяти последовательности байтов или символов, совпадающих со списком данных. Поиск начинается с указанного адреса и до смещения, равного указанной длине. Адреса каждого найденного в диапазоне совпадения выводятся на экран.

Пример:


S DS:SI+10 L CX 'Привет',12,34

Эта команда ищет строку 'Привет' сопровождаемую байтами 12H и 34H, начиная со смещения SI+10 в текущем сегменте данных и заканчивая адресом через CX байт от начала.

F

F -- Заполнить память данными

Синтаксис:


F адрес L длина список-данных

список-данных -- список байтов или строк в кавычках, разделенных запятыми или пробелами. Строка в кавычках может начинаться с одинарной или двойной кавычки.
длина -- длина в байтах

Комментарии:

Команда F заполняет память последовательностью байтов или символов, определенных в списке-данных. Память заполняется, начиная с указанного адреса и до смещения, равного указанной длине, повторяя список-данных в случае необходимости.

Пример:


F 8000:0 L 100 'Тест'

Эта команда заполняет память, начиная с 8000:0 на длину 100H байтов строкой 'Тест'. Строка 'Тест' повторяется, пока не достигнуто необходимое смещение.

М

M -- Переместить данные

Синтаксис:


М адрес-начала L длина конечный-адрес

длина -- длина в байтах

Комментарии:

Команда M перемещает указанное число байтов из адреса-начала в памяти в конечный-адрес в памяти.

Пример:


М 1000:0 L 200 2000:0

Эта команда перемещает 200H байтов из ячейки памяти 1000:0 в ячейку памяти 2000:0.

C

C -- Сравнить два блока данных

Синтаксис:


C адрес1 L длина адрес2

длина -- длина в байтах

Комментарии:

Команда C сравнивает блок памяти, определенный адресом1 и длиной с блоком памяти определенным адресом2 и длиной. Когда байт из первого блока данных не соответствует байту из второго блока данных, оба байта выводятся на экран вместе с их адресами.

Пример:


C 5000:100 L 10 6000:100

Эта команда сравнивает 10H байтов, начинающихся с ячейки памяти 5000:100 с 10H байтами, начинающимися с ячейки памяти 6000:100.

5.6 Специализированные Отладочные Команды

Команды:

SHOW -- Выводит команды из буфера истории исполнения
TRACE -- Включает режим эмуляции пошагового исполнения
XT -- Одиночный шаг в режиме эмуляции трассировки
XP -- Программный шаг в режиме эмуляции трассировки
XG -- Переход по адресу в режиме эмуляции трассировки
XRSET -- Сброс буфера истории обратной трассировки
VECS -- Сохранение/восстановление/сравнение векторов прерываний
SNAP -- Запоминает содержимое блока памяти (snap shot)
EMMMAP -- Отображают карту распределения EMM

SHOW

SHOW -- Выводит команды из буфера истории исполнения

Синтаксис:


SHOW [B | начало]

B -- Указывает команде SHOW начать вывод с самой старой команды в буфере обратной трассировки.
начало -- Смещение (в инструкциях) от конца буфера (последней зафиксированной команды) с которого надо начать вывод.

Комментарии:

Команда SHOW отображает команды из буфера истории обратной трассировки. Если для команд доступен исходный текст, то дисплей находится в смешанном режиме, в противном случае отображается только код.

SHOW позволяет просматривать буфер обратной трассировки при помощи клавиш вверх, вниз, PageUp и PaqeDn. Для выхода из SHOW нужно нажать клавишу Esc.

Адресу каждой команды предшествует номер входа в буфер. Этот номер показывает, как глубоко в буфере находится команда. Чем больше номер, тем глубже вы в буфере.

Обратите внимание:

До вызова команды SHOW, команды должны регистрироваться при помощи диапазона обратной трассировки. См. главу 9 для подробной информации о диапазонах.

Подсказки:

Часто полезно иметь видимое окно кода с фактическим кодом области, отображаемой из буфера обратной трассировки. При сравнении фактического исполнения команд с кодом, отображаемыми переходами и обращениями обычно возникает меньше путаницы.

Использование SHOW вместе с командой TRACE позволит вам рассматривать команды в буфере обратной трассировки с двух различных точек зрения.

Пример:


SHOW 40

Этот пример выведет на экран команды из буфера обратной трассировки, начиная с 40-ой инструкции от конца буфера.

TRACE

TRACE -- Включает режим эмуляции пошагового исполнения






Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook