Руководство по Soft-ICE (DOS) - 12
|
Настоящее имя Билла Гейтса - дед мастдай...
|
I3HERE
I3HERE -- Перенаправить прерывание 3 на Soft-ICE
Синтаксис:
Комментарии:
Команда I3HERE позволяет вам указать, что любое прерывание 3 вызовет
окно Soft-ICE. Эта возможность полезна для остановки вашей программы в
определенных местах.
Чтобы использовать эту возможность, поместите INT 3 в ваш код в месте, где
вы хотите остановиться. Когда произойдет INT 3, оно вызовет окно Soft-ICE.
В этой точке, вы можете использовать команду R IP, чтобы изменить ваш
указатель команд на команду, следующую после INT 3, затем вы можете
продолжить отладку.
Если параметры не указаны, отображается текущее состояние I3HERE.
Значение по умолчанию - режим I3HERE OFF.
Пример:
Эта команда включает режим I3HERE. Любой INT 3,
сгенерированный после этого, вызовет окно
Soft-ICE.
5.5 Сервисные Команды
Команды:
A -- Транслировать код
S -- Поиск данных
F -- Заполнить память данными
M -- Переместить данные
C -- Сравнить два блока данных
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].
Пример:
Эта команда выводит приглашение для ввода команд ассемблера,
затем транслирует их, начиная со смещения 1234H в
текущий сегмент кода. Нажмите ВВОД в приглашении
с адресом после ввода последней команды.
S
S -- Поиск данных
Синтаксис:
S адрес L длина список-данных
|
список-данных -- список байтов или строк в кавычках, разделенных
запятыми или пробелами. Строка в кавычках
может начинаться с одинарной или
двойной кавычки.
длина -- длина в байтах
Комментарии:
Команда S ищет в памяти последовательности байтов или символов,
совпадающих со списком данных. Поиск начинается с указанного адреса и
до смещения, равного указанной длине. Адреса каждого найденного
в диапазоне совпадения выводятся на экран.
Пример:
S DS:SI+10 L CX 'Привет',12,34
|
Эта команда ищет строку 'Привет' сопровождаемую
байтами 12H и 34H, начиная со смещения SI+10 в
текущем сегменте данных и заканчивая адресом через CX байт от начала.
F
F -- Заполнить память данными
Синтаксис:
F адрес L длина список-данных
|
список-данных -- список байтов или строк в кавычках, разделенных
запятыми или пробелами. Строка в кавычках
может начинаться с одинарной или
двойной кавычки.
длина -- длина в байтах
Комментарии:
Команда F заполняет память последовательностью байтов или символов,
определенных в списке-данных. Память заполняется, начиная с указанного
адреса и до смещения, равного указанной длине, повторяя список-данных
в случае необходимости.
Пример:
Эта команда заполняет память, начиная с 8000:0 на
длину 100H байтов строкой 'Тест'. Строка 'Тест'
повторяется, пока не достигнуто необходимое смещение.
М
M -- Переместить данные
Синтаксис:
М адрес-начала L длина конечный-адрес
|
длина -- длина в байтах
Комментарии:
Команда M перемещает указанное число байтов из адреса-начала
в памяти в конечный-адрес в памяти.
Пример:
Эта команда перемещает 200H байтов из ячейки
памяти 1000:0 в ячейку памяти 2000:0.
C
C -- Сравнить два блока данных
Синтаксис:
длина -- длина в байтах
Комментарии:
Команда C сравнивает блок памяти, определенный адресом1 и
длиной с блоком памяти определенным адресом2 и длиной.
Когда байт из первого блока данных не соответствует байту из
второго блока данных, оба байта выводятся на экран вместе с их адресами.
Пример:
Эта команда сравнивает 10H байтов, начинающихся с
ячейки памяти 5000:100 с 10H байтами, начинающимися
с ячейки памяти 6000:100.
5.6 Специализированные Отладочные Команды
Команды:
SHOW -- Выводит команды из буфера истории исполнения
TRACE -- Включает режим эмуляции пошагового исполнения
XT -- Одиночный шаг в режиме эмуляции трассировки
XP -- Программный шаг в режиме эмуляции трассировки
XG -- Переход по адресу в режиме эмуляции трассировки
XRSET -- Сброс буфера истории обратной трассировки
VECS -- Сохранение/восстановление/сравнение векторов прерываний
SNAP -- Запоминает содержимое блока памяти (snap shot)
EMMMAP -- Отображают карту распределения EMM
SHOW
SHOW -- Выводит команды из буфера истории исполнения
Синтаксис:
B -- Указывает команде SHOW начать вывод с самой старой команды в буфере обратной трассировки.
начало -- Смещение (в инструкциях) от
конца буфера (последней зафиксированной
команды) с которого надо начать вывод.
Комментарии:
Команда SHOW отображает команды из буфера истории обратной трассировки.
Если для команд доступен исходный текст, то дисплей находится в смешанном
режиме, в противном случае отображается только код.
SHOW позволяет просматривать буфер обратной трассировки при помощи клавиш
вверх, вниз, PageUp и PaqeDn. Для выхода из SHOW нужно нажать клавишу Esc.
Адресу каждой команды предшествует номер входа в буфер. Этот
номер показывает, как глубоко в буфере находится команда. Чем
больше номер, тем глубже вы в буфере.
Обратите внимание:
До вызова команды SHOW, команды должны регистрироваться при помощи диапазона
обратной трассировки. См. главу 9 для подробной информации о диапазонах.
Подсказки:
Часто полезно иметь видимое окно кода с фактическим кодом
области, отображаемой из буфера обратной трассировки. При сравнении
фактического исполнения команд с кодом, отображаемыми переходами и обращениями
обычно возникает меньше путаницы.
Использование SHOW вместе с командой TRACE позволит вам рассматривать
команды в буфере обратной трассировки с двух различных точек зрения.
Пример:
Этот пример выведет на экран команды из буфера обратной трассировки,
начиная с 40-ой инструкции от конца буфера.
TRACE
TRACE -- Включает режим эмуляции пошагового исполнения
|