S-ICE - часть 95
4. В Soft-ICE установите I3HERE ON. Это необходимо, чтобы вызвать
Soft-ICE после того, как были выполнены условия.
5. Установите общие условия точки останова Soft-ICE.
Когда выполнится любое из этих условий точки останова,
будет вызвана ваша подпрограмма спецификации.
11.2.1 Пример Пользовательской Точки Останова
Эта часть содержит пример пользовательской точки останова, которая
проверяет условия AX = 3, BX = 4 и CX = 5, когда происходит выполнение
точки останова.
Сначала мы создаем подпрограмму спецификации. Для целей этого примера,
мы будем транслировать команды прямо в память при помощи интерактивного
ассемблера Soft-ICE. Для этого примера мы будем произвольно транслировать
подпрограмму с ячейки 9000:0H. В Soft-ICE, при этом, вводятся следующие
выражения:
A 9000:0
9000:0 CMP AX,3
9000:3 JNE 10
9000:5 CMP BX,4
9000:7 JNE 10
9000:A CMP CX,5
9000:D JNE 10
9000:F INT3
9000:10 IRET
Теперь, когда подпрограмма находится в памяти, вы должны направить на нее
вектор прерывания. Для этого примера, мы произвольно выбираем INT 99H. Чтобы
поместить 9000:0H в вектор INT 99H, введите:
ED 0:99*4 9000:0
Установите команду ACTION, чтобы Soft-ICE вызывал вашу подпрограмму
спецификации точки останова при каждом останове.
ACTION 99
Установите I3HERE, чтобы подпрограмма спецификации активизировала Soft-ICE
при выполнении условий.
I3HERE ON
Теперь вы должны установить точки останова. Для этого примера, нас
интересует только когда регистры: AX = 3, BX = 4, CX = 5 в специфической
программе и нам не нужно никаких дальнейших уточнений. Чтобы это сделать,
используйте точку останова на диапазон на чтение памяти:
BPR сегмент:начальное-смещения сегмент:конечное-смещение
Это вызовет обращение к вашей подпрограмме спецификации точки останова после
выполнения каждой команды в указанном диапазоне памяти. Когда условия по
регистрам не выполняются, тогда выполняется команда IRET.
Когда условия, наконец, будут соответствовать указанным выражениям, будет