Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Руководство по Soft-ICE (DOS) - 9
Автор: Сергей Середа
WEB-сайт: http://consumer.nm.ru

Лаборатория Касперского выпустила совет по поводу 11 сентября: "В связи с возможными терактами в первую годовщину атаки на WTC 11 сентября рекомендуем вам в этот день не просыпаться или 10 сентября перевести свои часы на 12-е."


R название-регистра [ [ = ]значение] ]

название-регистра -- Любое из следующих: AL, AH, AX, BL, BH, BX, CL, CH, CX, DL, DH, DX, DI, SI, BP, SP, IP, CS, DS, ES, SS Или FL
значение -- Если название-регистра - любое, кроме FL, значение - шестнадцатеричное значение или выражение. Если название регистра - FL, то значение - серия из одного или более следующие символов флагов, каждый с предшествующим ему знаком плюс или минус :

O (флаг Переполнения) (Overflow)
D (флаг Направления) (Direction)
I (флаг Прерывания) (Interrupt)
S (флаг Знака) (Sign)
Z (флаг Нуля) (Zero)
A (флаг Вспомогательного переноса) (Auxiliary carry)
P (флаг Паритета) (Parity)
C (флаг Переноса) (Carry)

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

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

Без параметров выводит значения всех регистров и флагов, а также инструкцию по адресу текущего CS:IP.

Если название регистра указано без значения, Soft-ICE показывает текущие значения указанного регистра и спрашивает у вас новое значение. Если название регистра - FL, установленные флаги выводятся подсвеченными символами верхнего регистра; сброшенные флаги выводятся без подсветки в нижнем регистре. Для сохранения текущего значения регистра, нажмите ВВОД.

Если указаны и название регистра, и значение, содержимое указанного регистра заменяется указанным значением.

Чтобы изменить значение флага, используйте FL как имя регистра, сопровождаемое символами флагов, значения которых вы хотите переключить. Для установки флага поставьте перед символом флага знак плюс. Чтобы сбросить флаг, поставьте перед символом флага знак минус. Флаги могут быть указаны в любом порядке.

Примеры:


R AH 5

Эта команда устанавливает регистр AH равным 5.


R FL = OZP

Эта команда переключает значения флагов O, Z и P.


R FL

Эта команда выводит текущие значения флагов и предоставляет возможность их изменения.


R FL O +A -C

Эта команда переключает значение флага O, устанавливает флаг A и сбрасывает флаг C.

MAP

MAP -- Показать карту памяти системы

Синтаксис:


MAP

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

Команда MAP выводит названия, местоположение и размеры компонент памяти системы. Размер указывается в параграфах. Один параграф эквивалентен 10 (шестнадцатеричное) байтам.

Компонент, на который в настоящее время указывает CS:IP, подсвечивается.

Используйте команду MAP когда:

  • Произошел останов и CS:IP в неизвестной области памяти.
  • Вы хотите получить контроль над резидентной или системной программой. Точка останова на диапазон может быть установлена основываясь на адресе начала и размере, отраженных командой MAP.
  • Вы подозреваете программу или компонент системы в записи поверх кода вне своей области памяти. MAP используется, чтобы получить адрес памяти области для использования в команде CSIP.
  • Вам необходимо выяснить, какая резидентная программа перехватывает определенные векторы прерываний.

Пример:


MAP

Вот - пример вывода, произведенного командой:

Начало Длина
0000:0000 0040 Таблица Векторов Прерываний
0040:0000 0030 Переменные ROM BIOS
0070:0000 00FE Система ввода/вывода
016E:0000 06B7 DOS
0842:0000 02CE Таблицы файлов и Буферы DOS
A000:0000 5E00 Системная шина
F000:0000 1000 ROM BIOS

Версии DOS ниже, чем 3.1 выдают адреса программ вместо вывода их названий.

D, DB, DW, DD

D, DB, DW, DD -- Показать память

Синтаксис:


D [размер] [адрес] [L[ = ]длина]

размер -- B -- Байт
W -- Слово
D -- Двойное Слово

длина -- Число байтов, которое должно быть выведено.

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

Команда D выводит содержимое памяти по указанному адресу.

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

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

Если длина не определена, по умолчанию принимается восемь строк или меньше если высота окна меньше.

Если окно данных видимо, данные выводятся в окне данных и длина игнорируется.

Пример:


DW DS:00 L=8

Эта команда показывает в формате слова (WORD) и в ASCII- формате значение первых восьми байтов текущего сегмента данных.

E, EB, EW, ED

E, EB, EW, ED -- Редактировать память

Синтаксис:


E [размер] адрес [список-данных]

Размер -- B -- Байт
W -- Слово
D -- Двойное Слово

список данных -- список объектов данных указанного размера (Байты, Слова или Двойные Слова) или строк в кавычках, разделенных запятыми или пробелами. Строка может начинаться одинарной или двойной кавычкой.

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

Команды E показывают содержимое памяти по указанному адресу и позволяет вам редактировать значения.

Эта команда показывают содержимое памяти в формате ASCII и в формате указанного размера.

Редактор памяти создан для быстрой ее модификации. Память можно редактировать вводя ASCII-символы или вводя значения размером байт, слово или двойное слово. Если размер не определен, будет принят последний использованный размер.

Вот клавиши редактирования памяти:

-- Перемещает курсор вверх
-- Перемещает курсор вниз
-- Перемещает курсор вправо
-- Перемещает курсор влево

ПРОБЕЛ -- Перемещает курсор на следующий элемент
TAB -- переключает между числовым и ASCII-областями
ESC или
ВВОД -- Выход из редактора памяти

После ввода значения обновляются реальные ячейки памяти. Все числовые значения - шестнадцатеричные числа. Для перехода между ASCII и числовой областями экрана нажмите клавишу TAB.

Если окно данных видимо, данные редактируются в окне данных, иначе данные редактируются в окне команд.

Длина данных по умолчанию принимается 8 строк, если в окне команд, или равной размеру окна данных, если оно видимо.

При отсутствии параметров, курсор перемещается в окно данных, если оно видимо. Если окно данных не видимо, данные редактируются в окне команд по последнему отображенному или редактированному адресу.

Примеры:


EB 1000:0

Эта команда выводит в формате байта до шести строк, содержащих как числовое, так и ASCII представление значений данных, начиная с ячейки 1000:0000. Вы можете редактировать значения отображенных строк. EB 8000:0 "Привет",0D Эта команда заменяет значения, начинающиеся с ячейки 8000:0000, строкой "Привет", сопровождаемой знаком возврата каретки.

INT?

INT? -- Выводит номер последнего прерывания

Синтаксис:


INT?

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

Команда INT? отображает адрес и номер последнего происшедшего прерывания.

Пример:


INT?

Вот пример экрана, выданного командой INT?:


Last Interrupt: 16
At: 0070:0255

Этот пример показывает, что последним прерыванием, сгенерированным системой перед вызовом окна Soft-ICE, было прерывание 16 (шестнадцатеричный номер) по адресу 0070:0255H. Если последнее происшедшее прерывание было программным, дизассемблирование кода по адресу 0070:0255H покажет инструкцию прерывания. Если это было аппаратное прерывание, дизассемблирование кода покажет команду, которая выполнялась когда произошло аппаратное прерывание.

? Или H

? Или H -- Выводит справочную информацию

Проект Delphi World © Выпуск 2002 - 2024
Автор проекта: USU Software
Вы можете выкупить этот проект.