您的位置:首页精文荟萃破解文章 → SOFTICE 使用说明 第 五章

SOFTICE 使用说明 第 五章

时间:2004/10/15 1:00:00来源:本站整理作者:蓝点我要评论(0)

  使用其它指令

§5.1 显示及编辑类指令

指令:

U --- 反组译或显示原程式码

R --- 显示或更改暂存器

MAP --- 显示系统记忆体分布图

D --- 用最後一次指定的形式显示记忆体

DB --- 以位元组的形式显示记忆体

DW --- 以字组的形式显示记忆体

DD --- 以双字组的形式显示记忆体

E --- 用最後一次指定的形式编辑记忆体

EB --- 以位元组的形式编辑记忆体

EW --- 以字组的形式编辑记忆体

ED --- 以双字组的形式编辑记忆体

INT? --- 显示最後一次呼叫的插断号码

? 或 H --- 显示辅助讯息

VER --- 显示 Soft-ICE 的版本号码

U --- 反组译或显示原程式码

语法: U [address] [L [=] length]

length --- 要反组译的程式码长度

解说:

U 这个指令会显示正在除错的程式的程式码。

如果没有指定 length ,内定值是 8 行或萤幕长度减一。

如果未指定 address ,这个指令会从最後一次反组译的後一位元组开始反组
译。如果从未使用过反组译指令,则从目前 CS:IP 开始。

如果程式码窗是可见的,则程式码会显示在其中。

如果指定的位址范围的原始程式码有载入,由目前的原始码模式来决定是否
显示原始码。

〔例〕 U $-10
这道指令从目前位址的前 10h 位元组开始反组译。

〔例〕 u .499
这道指令会从 499 行开始显示 原始码。程式码窗必需是可见的且必需在
原始码模式。

R --- 显示或更改暂存器

语法: R register-name [ [=] value ]

register-name --- 为下列任一:
AL 、AH 、AX 、BL 、BH 、BX 、CL 、CH 、CX 、DL
DH 、DX 、DI 、SI 、BP 、SP 、IP 、CS 、DS 、ES
SS 、或 FL

value --- 如果 register-name 不是 FL ,value 是个 16 进位值或运算式
。若 register-name 为 FL ,value 下列旗号符号一或多个的组
合。旗号符号可视需要在前面加上 + 或 - 。

O -- Overflow flag 溢位旗号
D -- Direcrion flag 方向旗号
I -- Interrupt flag 插断旗号
S -- Sign flag 正负号旗号
Z -- Zero flag 零值旗号
A -- Auxiliary carry flag 辅助进位旗号
P -- Parity flag 极性旗号
C -- Carry flag 进位旗号

解说:

R 指令是用来显示或更改暂存器之值的。

如果没有指定参数会显示所有暂存器和旗号的值及目前 CS:IP 的程式码。

如果仅指定 register-name 而未加 value ,则 Soft-ICE 会显示指定暂存
器现在的值并提示你输入新值。如果 register-name 是 FL ,目前设置的旗号会
以高亮度大写显示;未设置的旗号则用普通小写显示。要维持现在暂存器的值,
直接按 Enter 。

如果 register-name 和 value 均有指定,则指定的暂存器的值将被改成
value 。

想要改变旗号的值,把 FL 当 register-name ,後接你想切换的旗号符号。
如果要设置某旗号,在旗号符号前加上 + 。要关闭某旗号,则在旗号符号前加上
一个 - 。旗号可以按任何顺序排列。

〔例〕 R AH 5
这道指令会把 AH 暂存器的值改成 5 。

〔例〕 R FL = O Z P
这道指令会切换 O 、Z 、P 旗号的值。

〔例〕 R FL
这道指令会显示目前旗号的值并让你可以修改其值。

〔例〕 R FL O +A -C
这道指令会切换 O 旗号,设置 A 旗号并关闭 C 旗号。

MAP --- 显示系统记忆体分布图

语法: MAP

解说:

MAP 指令显示各记忆体部份的名称、位置和大小。大小是以页来计算的。一
页等於 10h byte 。

CS:IP 所指的部份会以高亮度显示。

使用 MAP 指令的时机:

* 中断点发生时指向未知的记忆体区段。

* 你想控制常驻程式或系统程式。你可以根据 MAP 指令所显示的开始位址
汉大小来设置范围中断点。

* 你怀疑程式或系统在其记忆体空间之外写码。MAP 指令可用来找出此区段
的记忆体位址以便在 CSIP 中使用。

* 你必需找出哪个常驻程式拥有目前的插断向量。

〔例〕 MAP
以下是这道指令显示的范例:

..........

若 DOS 的版本低於 3.1 ,将显示程式的位址而非其程式名称。

D DB DW DD --- 显示记忆体

语法: D [size] [address] [ L [=] length ]

size --- B -- byte W -- word D -- double word

length --- 要显示几位元组。

解说:

D 这个指令会显示指定位址的记忆体内容。

记忆体内容是以指定的 size 的形式显示。如果没有指定 size ,会以最後
一次使用的 size 来显示。所有的形式均会显示 ASCII 码。

如果未指定 address ,则由前一次显示的最後一位元组的後一位元组开始显
示。

如果没有指定 length ,内定值是 8 行或因视窗较小而少一些。

若资料窗是可见的,则资料会显示在资料窗且 length 会被忽略。

〔例〕 DW DS:00 L=8
这道指令会以字组和 ASCII 的形式显示目前资料节段的前 8 位元组。

E EB EW ED --- 以位元组的形式编辑记忆体

语法: E [size] address [data-list]

size --- B -- byte W -- word D -- double word

data-list --- 一串指定之 size 的资料,(位元组、字组或双字组)或以
逗号、空白分隔的加引号字串。加引号的字串可以使用单引
号或双引号。

解说:

E 指令显示指定位址的记忆体内容并让你编辑其值。

这个指令以 ASCII 的形态显示记忆体内容,并且是以指定的 size 形态。

记忆体编辑器让你可以快速的更新记忆体。你可以键入 ASCII 字元或打入位
元组、字组、双字组之值以编辑记忆体。如果没有指定 size ,以最後一次使用
的 size 为准。以下是记忆体编辑的按键:

--- 游标上移
--- 游标下移
--- 游标右移
--- 游标左移
SPACE --- 游标移至下一个元素上
TAB --- 在数字区和 ASCII 区间切换
ESC 或 Enter --- 离开记忆体编辑器

在你输入资料之时,真正记忆体上的值也随之更新。所有的数字值都是以 16
进位表示。按 TAB 键可以在数字区和 ASCII 区间切换。

如果资料窗是可见的,则在其中修改资料;否则在指令窗中修改。

资料显示的长度,在指令窗中内定为 8 行。如果资料窗是可见的,则和资料
窗同大小。

如果未加参数且资料窗是可见的,则游标会移到资料窗中。若资料窗是不可
见的,则在指令窗中由最後一次显示或编辑的位址开始进行编辑。

〔例〕 EB 1000:0
这道指令由 1000:0000 开始,以位元组的形态,用数字和 ASCII 字元显
示资料的值。你可以编辑这些显示出来的值。

〔例〕 EB 8000:0 "HELLO",0D
这道指令把从 8000:0000 开始的值以 HELLO 字串和一个归位字元代替。

INT? --- 显示最後一次呼叫的插断号码

语法: INT?

解说:

INT? 指令显示最後一次发生的插断号码及其位址。

〔例〕 INT?
以下是 INT? 显示结果的例子:

Last Interrupt: 16
At: 0070:0255

这个例子显示在 Soft-ICE 视窗被叫出之前,系统最後一次呼叫的是 16h
插断,位址在 0070:0255 。如果最後一次插断是个软体插断,从 0070:0255
做反组译会显示此插断的程式码。若是个硬体插断,反组译则会显示插断发生
时所执行的程式码。

? 或 H --- 显示辅助讯息

语法: < ? | H > [command | expression]

解说:

? 和 H 指令两者均会显示辅助讯息。

如果未指定参数将会一次一个萤幕的显示所有指令和运算子的简单解说。按
任意键以继续显示或按 ESC 键离开辅助说明。

若有指定参数则会显示包括指令语法及范例的详尽说明。

如果加上运算式,则会计算并以 16 进位、10 进位及 ASCII 字元显示其结
果。

〔例〕 ? ALTKEY
这道指令会显示包括 ALTKEY 指令的语法及范例的资料。

〔例〕 H 10 + 14*2
这道指令会显示: 0038 00056 "8" 。这是 10+14*2 的 16 进位、10 进
位值及 ASCII 字元。

VER --- 显示 Soft-ICE 的版本号码

语法: VER

〔例〕 VER
这道指令会显示 Soft-ICE 的版本及 Nu-Mega 的版权讯息。

§5.2 I/O 埠指令

指令:

I 、IB --- 由位元组 I/O 埠输入

IW --- 由字组 I/O 埠输入

O 、OB --- 由位元组 I/O 埠输出

OW --- 由字组 I/O 埠输出

I 、IB 、IW --- 由 I/O 埠输入

语法: I [size] port

size --- B -- byte W -- word D -- double word

port --- 一个位元组或字组的值

解说:

这个由埠输入的指令是用来读取及显示硬体埠之值的。你可以从位元组或字
组埠输入。如果没有指定 size ,内定值是位元组。

〔例〕 I 21
这道指令是显示一号中断控制器的遮罩暂存器之值。

O 、OB 、OW --- 由字组 I/O 埠输出

语法: O [size] port value

size --- B -- byte W -- word D -- double word

port --- 一个位元组或字组的值

value --- 位元埠为一位元组值;字组埠为一字组值

解说:

对埠输出的指令是用来对硬体埠写值的。你可以对位元组埠或字组埠做输出
,如果没有指定 size ,内定值是位元组。

〔例〕 O 21 FF
这道指令会遮罩住一号中断控制器的所有中断。

§5.3 转换控制指令

指令:

X --- 离开 Soft-ICE 之视窗

G --- 执行到某位址

T --- 追踪一道程式码

P --- 单步执行程式

HERE --- 执行到目前游标那行

GENINT --- 强制某一插断

EXIT --- 强制离开目前之 DOS 程式

BOOT --- 载入系统 (保留 Soft-ICE )

HBOOT --- 硬体系统载入 (完全重设)

X --- 离开 Soft-ICE 之视窗

语法: X

解说:

X 指令会离开 Soft-ICE 视窗并恢复因叫出 Soft-ICE 而中断的程式之控制
权。Soft-ICE 视窗会消失。如果有设置任何中断点,它将被启动。

〔例〕 X

G --- 执行到某位址

语法: G [=staer-address] [break-address]

解说:

G 指令会离开 Soft-ICE 视窗并设置一个只用一次的执行中断点。除此之外
,所有的 sticky 中断点也会被启动。

若有指定 start-address 参数,将从 start-address 开始执行;否则会从
目前的 CS:IP 开始执行。程式将一直执行,直到达到 break-address 、使用了
叫出视窗的热键或 sticky 中断点发生才会停止。

break-address 必需是一道程式码的第一位元组。

当达到指定的 break-address 时,CS:IP 将指向设置中断点的位置。

未加参数的 G 指令和 X 指令有相同的作用。

除非所有的中断点暂存器都被 sticky 中断点占满了,不然 non-sticky 中
断点会使用 80386 中断点暂存器。在这种状况下,中断点将会使用 INT 3 方式
。这种情形下,在 ROM 中 G 或 P 指令将无法正常工作。如果你尝试这样做将会
显示出错误讯息。

〔例〕 G CS:1234
这道指令将在 CS:1234 设置一个只用一次的执行中断点。

T --- 追踪一道程式码

语法: T [=start-address] [count]

解说:

T 指令使用单步旗号以单步执行一道程式码。

如果没有指定 start-address ,将从目前的 CS:IP 开始执行。若有指定
start-address ,则 CS:IP 将指向 start-address 以进行单步执行。

如果有指定 count ,Soft-ICE 将单步执行 count 次。TRACE 指令将持续执
行直到 count 为零或按了 ESC 键,而不管是否有中断点发生。

若是在原始码模式,T 指令会单步到下一道原始码叙述。如果目前的叙述是
个程序或呼叫函数且呼叫的程序的原始码存在,T 指令会单步执行进入这个呼叫
。如果没有呼叫的程序或函数的原始码,T 指令会单步执行完整个程序。

〔例〕 T = 1284 3
这道指令会单步执行在记忆体位址 1284 的 3 道程式码。

P --- 单步执行程式

语法: P

解说:

P 指令是个逻辑的程式单步执行。除非目前 CS:IP 之程式码是呼叫、插断、
回圈或反复字串,不然将执行此程式码。若为呼叫、插断等程式码,将会执行完
整个程序或反复动作才会回到 Soft-ICE 。

P 指令会设置一个只用一次的执行中断点。除非所有的中断点暂存器都被
sticky 中断点占满了,不然 non-sticky 中断点会使用 80386 中断点暂存器。
在这种状况下,中断点将会使用 INT 3 方式。这种情形下,在 ROM 中 G 或 P
指令将无法正常工作。如果你尝试这样做将会显示出错误讯息。

若是在原始码模式,P 指令会单步到下一道原始码叙述。如果目前的叙述是
个程序或呼叫函数,P 指令会把它整个执行完。

〔例〕 P
这道指令会单步执行程式。

HERE --- 执行到目前游标那行

语法: HERE

解说:

HERE 指令会一直执行到目前游标所在那行。只有当游标在程式码窗中才能使
用 HERE 指令。如果程式码窗不可见或游标不在其中,用 G 指令代替。

HERE 指令会离开 Soft-ICE 视窗并设置一个只用一次的执行中断点。此外,
所有的 sticky 中断点也会被启动。

程式将由目前的 CS:IP 开始执行,直到执行到游标所在位置的程式码、使用
了叫出视窗的热键或某 sticky 中断点发生为止。

除非所有的中断点暂存器都被 sticky 中断点占满了,不然 non-sticky 中
断点会使用 80386 中断点暂存器。在这种状况下,中断点将会使用 INT 3 方式
。这种情形下,在 ROM 中 G 或 P 指令将无法正常工作。如果你尝试这样做将会
显示出错误讯息。

〔例〕 HERE
这个例子在目前游标所在设置一个执行中断点,然後离开 Soft-ICE 并从
目前的 CS:IP 开始执行。

GENINT --- 强制某一插断

语法: GENINT INT1 | INT3 | NMI | interrupt-number

interrupt-number --- 00 到 FF 中的一个数字

解说:

GENINT 指令会强制发生某一插断。当 Soft-ICE 和另一个软体除错器共用时
,这个功能可以用来把控制权交给另一个除错器。这也可以用来测试插断程序。

GENINT 指令会模拟执行一道硬体插断或 INT 程式码。它将把 falg 、CS 、
IP 之值推入堆叠,并把 CS 、IP 之值改成插断向量表中和指定的 interrupt-
number 相对的进入点。

〔例〕 GENINT NMI
这道指令会强制发生一个无法遮罩的插断。如果 Soft-ICE 和 CodeView
一起使用,这将把控制权交回 CodeView 。

EXIT --- 强制离开目前之 DOS 程式

语法: EXIT [R] [D]

R --- 恢复插断向量表

D --- 清除所有中断点

解说:

EXIT 指令藉强制执行 INT 21h 的 4Ch 功能来中止目前程式。这个指令只有
在 DOS 处於可以接受此函数呼叫的状态下才能使用。如果此呼叫是由目前的中断
函式呼叫或是在 DOS 尚未备妥时,系统的行为将无法预期。

使用 R 参数时,除了中断向量表外,不会做任何系统重设的动作。这意味著
BIOS 变数、视讯模式及其它系统层次的资料并不会被还原。

使用 R 参数会把中断向量还原成它们最後一次储存的状态。Soft-ICE 会在
其载入时、程式以 LDR.EXE 载入时及使用 VECS S 指令时储存中断向量。

〔注〕依照下列步骤来重新启动由 LDR.EXE 载入的程式:

EXIT R
LDR prog.EXE

EXIT 指令会把中断向量表还原成程式载入前之值,然後回到命令处理器。
由执行 LDR 并加上 .EXE 的尾巴可以把程式重新载入而不需重载符号及原
始码。符号和原始码会保持在记忆体中。

〔注意〕EXIT 指令必需小心使用。因为 Soft-ICE 可以在任何时候叫出,可能会
有 DOS 不能接受中止函数呼叫的情形发生。而且 EXIT 指令也不会重置
程式的状况。举例来说,EXIT 指令不会重设视讯模式。如果你的程式把
BIOS 和硬体放在特别的视讯模式中,使用 EXIT 指令後仍会留在此模式
中。

〔例〕 EXIT R
还原中断向量表并跳出目前的程式。如果程式是用 LDR.EXE 载入的,则要
加 R 参数。

BOOT --- 载入系统 (保留 Soft-ICE )

语法: BOOT

解说:

BOOT 指令会重置系统并保留 Soft-ICE 。BOOT 可以用来对载入程序、DOS
驱动程式及非 DOS 的作业系统做除错。

BOOT 是以 ROM BIOS 的 19h 插断呼叫的方法。有时候 19h 插断可能无法工
作。如果发生这种状况,叫出 Soft-ICE 并使用 HBOOT 指令。

为了让 BOOT 正确的工作,Soft-ICE 必需由 CONFIG.SYS 中做第一个驱动程
式载入。这样 Soft-ICE 才能尽可能的还原系统原始状态。

〔例〕 BOOT
这道指令会重新载入系统。Soft-ICE 依然保留。

HBOOT --- 硬体系统载入 (完全重设)

语法: HBOOT

解说:

HBOOT 指令会重置整个系统。在重置的过程中 Soft-ICE 不会保留。除非介
面卡需要重开电源才能重置否则 HBOOT 就够用了。在这种罕有的状况中,你必需
关掉电源再重新打开。

〔例〕 HBOOT
这道指令会重新载入系统。Soft-ICE 必需要重新载入。

§5.4 除错模式指令

指令:

ACTION --- 设定中断点发生後的动作

WARN --- 设定 DOS/ROM BIOS 重入 (re-entrancy) 警告模式

BREAK --- 在任何时候中断

13HERE --- 把 INT 3 指向 Soft-ICE

ACTION --- 设定中断点发生後的动作

语法: ACTION [INT1 | INT3 | NMI | HERE | int-number]

int-number --- 任何可用的插断号码 (0-FFh) 。只有当自己的中断点处理
程序已取代原插断向量时才可使用。(参阅 §11.2)

解说:

ACTION 指令用来决定当中断点条件成立时要把控制权交给谁。大部份的状况
都是 INT3 或 HERE 。INT3 是在 Soft-ICE 和其它除错器一起使用时使用;HERE
则是用来使中断点条件成立时回到 Soft-ICE 。INT1 和 NMI 则是两者择一用在
无法使用 INT3 的除错器时。例如:使用 CodeView 时,ACTION 设为 NMI 最好


只有当自己的中断点处理程序已取代原插断向量时才可使用 int-number 。
如果没有中断点处理程序而使用 int-number 将会发生错误。参阅 §11.2
以取得更多资讯。

如果没有加任何参数将会显示目前的设定。

ACTION 的内定值是 HERE 。

〔例〕 ACTION HERE
这道指令设定当中断点条件成立时将返回 Soft-ICE 。

WARN --- 设定 DOS/ROM BIOS 重入 (re-entrancy) 警告模式

语法: WARN [ON | OFF]

解说:

WARN 指令是用来让 Soft-ICE 和会使用 DOS 或 ROM BIOS 的除错器一起使
用。许多除错器使用 DOS 和 ROM BIOS 来做萤幕输出和读取按键。因为 DOS 和
ROM BIOS 不完全能重入,若中断点发生在 DOS 或 ROM BIOS 在执行时,除错器
可能无法正常的工作。

如果设定 WARN ON 而且 ACTION 不是 HERE ,在真正动作发生前会先把控制
权交给 Soft-ICE 。系统会显示目前 CS:IP 并让你决定是要继续或是回到 Soft-
ICE 。一般而言,你应该选择回到 Soft-ICE 以继续除错。只有在你确定不会造
成 DOS 或 ROM BIOS 重入时才可选择继续。

在 Soft-ICE 和 DEBUG 、SYMDEB 及 CodeView 一起使用时应该把 WARN 设
为 ON 。

如果未加参数将会显示目前 WARN 的状态。

WARN 的内定值是 OFF 。

〔例〕 WARN ON
这道指令会打开 DOS/ROM BIOS 重入警告模式。

BREAK --- 在任何时候中断

语法: BREAK [ON | OFF]

解说:

BREAK 指令让你即使在关闭插断的状况下也能从当掉的系统叫出 Soft-ICE
。你可以在整个除错过程中使用 BREAK 模式或在需要时开关它。

BREAK 模式会些微的降低系统的效率。系统的效率虽会降低,但却可以跳出
当掉的程式。即使效率会降低,若是程式随时可能会当掉,使用者还是可能会一
直使用 BREAK 模式。

不像其它也可以随时叫出的除错器,Soft-ICE 不需要外加的开关。当 BREAK
为 ON 时,只要按热键即可叫出 Soft-ICE 。

如果没有加参数将会显示目前 BREAK 的状态。

BREAK 的内定值是 OFF 。

〔例〕 BREAK ON
这道指令会打开 BREAK 模式。这意味著即使关闭插断,Soft-ICE 也可随
时叫出。

13HERE --- 把 INT 3 指向 Soft-ICE

语法: 13HERE [ ON | OFF]

解说:

13HERE 指令让你指定所有的 INT 3h 均会叫出 Soft-ICE 的视窗。这项功能
在你想让程式停在某特定位置时很有用。

要使用这项功能,在你的程式码中你想停下来的位置加上 INT 3 指令。当
INT 3 发生时会叫出 Soft-ICE 视窗。这时候,你可以使用 R IP 指令来改变指
令指标指向 INT 3 的下一个程式码;然後你可以继续进行除错。

如果没有加参数将会显示目前 13HERE 的状态。

13HERE 的内定值是 OFF 。

〔例〕 13HERE ON
这道指令会打开 13HERE 模式。在这之後的所有 INT 3 均会叫出 Soft-
ICE 视窗。

§5.5 公用指令

指令:

A --- 组译程式码

S --- 搜寻资料

F --- 将资料填入记忆体

M --- 搬移资料

C --- 比较两记忆区块

A --- 组译程式码

语法: A [address]

解说:

Soft-ICE 的组译器允许你把程式码直接组译进记忆体中。这个组译器支援基
本的 8086 程式码及 80186 、80286 真实定址模式的扩充。但是运算辅助器及
80386 的特殊程式码、暂存器定址模式等无法组译。

A 指令会进入 Soft-ICE 内建的组译器。每行前会显示位址当提示符号。当
组合语言之程式码打入并按下 Enter 後,此程式码会组译进指定位址的记忆体中
。程式码必需符合标准的 Intel 模式。在位址提示符号下按 Enter 会离开组译
模式。

如果你正组译的记忆体范围在程式码窗中是可见的,在你组译时程式码会交
互变化。

Soft-ICE 的组译器支援标准的 8086 族指令,不过有些加强:

* DB 指令用来直接定义记忆体中之位元组资料。DB 指令後接一串位元组资
料 或/和 由空白、逗号分隔的字串。

* RETF 代表一个 far return 。

* WORD PTR 和 BYTE PTR 用来决定资料的大小。如:
MOV BYTE PTR ES:[1234],1

* 使用 FAR 和 NEAR 以明确的指定远程或近程的跳跃或呼叫。如果未指定
FAR 、NEAR ,一律视为 NEAR 。

* 参考到记忆体位置的运算域必需放在方括号中。如: MOV AX,[1234] 。

〔例〕 A CS:1234
这道指令会提示你输入组合语言码并从 CS:1234 开始组译之。输入最後一
道程式码後在位址提示符号後按 Enter 。

S --- 搜寻资料

语法: S address L lebgth data-list

data-list --- 一串位元组资料或以逗号、空白分隔的加引号字串。加引号
的字串可以使用单引号或双引号。

length --- 位元组长度。

解说:

S 指令会在记忆体中搜寻和 data-list 相同之位元组或字元。搜寻的动作由
指定的 address 开始,持续搜寻 length 位元组。每个发现的位址都会显示出来


〔例〕 S DS:SI+10 L CX 'Hello',12,34
这道指令会从目前的资料节段中差距位址为 SI+10 处开始搜寻 Hello 字
串後接 12h 、13h 的资料。搜寻会持续 CX 位元组才停止。

H --- 将资料填入记忆体

语法: F address L length data-list

data-list --- 一串位元组资料或以逗号、空白分隔的加引号字串。加引号
的字串可以使用单引号或双引号。

length --- 位元组长度。

解说:

F 指令会用指定的 data-list 来填满记忆体。填入的动作会从指定的
address 开始并持续 length 位元组。如果有需要会重覆 data-list 。

〔例〕 F 8000:0 l 100 'Test'
这道指令会从 8000:0000 开始填入 100h 位元组的 Test 。Test 字串会
一直重覆直到填完指定的长度。

M --- 搬移资料

语法: M start-address L length end-address

length --- 位元组长度。

解说:

M 指令会从指定的 start-address 搬移 length 位元组的资料到
end-address 。

〔例〕 M 1000:0 L 200 2000:0
这道指令会从记忆体位址 1000:0000 处搬移 200h 位元组的资料到
2000:0000 处。

C --- 比较两记忆区块

语法: C address1 L length address2

length --- 位元组长度。

解说:

C 指令会拿 address1 处 length 位元组大小的记忆体区块和 address2 处
之资料做比较。如果第一块区块的值和第二块的值不同时会显示两者各自之值及
其记忆体位址。

〔例〕 C 5000:100 L 10 6000:100
这道指令会比较从记忆体位址 5000:100 开始 10h 位元组之记忆体区块和
从 6000:100 开始 10h 位元组的记忆体区块之值。

§ 5.6 特别的除错指令

指令:

SHOW --- 显示在 history buffer 中之程式码

TRACE --- 进入模拟追踪模式 (trace simulation)

XT --- 在模拟追踪模式中进行单步执行

XP --- 在模拟追踪模式中进行程式单步

XG --- 在模拟追踪模式中执行到某位址

XRSET --- 重设回溯追踪缓冲区 (back trace buffer)

VECS --- 储存/还原/比较插断向量

SNAP --- 拍下记忆体区段的快照

EMMMAP --- 显示 EMM 分配图

SHOW --- 显示在 history buffer 中之程式码

语法: SHOW [B | start]

B --- 这会使 SHOW 指令从缓冲区中最早的程式码开始显示。

start --- 从缓冲区中最後一个程式码(最後抓入之程式码)之前多少程式
码开始显示。

解说:

SHOW 指令会显示在回溯追踪缓冲区中之程式码。如果有程式码之原始码,会
以混合的方式显示;否则只显示程式码。

SHOW 指令可以用上、下、PageUp 、PageDown 等键来卷动。按 Esc 键以离
开 SHOW 指令。

在每道程式码位址之前有个缓冲区记入号码。这个号码表示你多深入显示缓
冲区。号码越高表示你在缓冲区中更深的地方。

〔注〕在使用 SHOW 指令之前必需先用范围回溯追踪记录程式码。参阅第九章以
取得更多有关范围回溯追踪的资讯。

〔建议〕把程式码窗设为可见并在其中显示目前回溯追踪缓冲区之真正程式码区
段是很有用的。以此比较程式码和真正之流程时较不会为跳跃和呼叫困
扰。

在 TRACE 指令後接著使用 SHOW 指令可以让你用两种不同的观点来看在回溯
追踪缓冲区中之程式码。

〔例〕 SHOW 40
这道指令会从回溯追踪缓冲区倒数第 40 个程式码开始显示。

TRACE --- 进入模拟追踪模式 (trace simulation)

语法: TRACE [start] | [OFF]

start --- 从缓冲区中最後一个程式码(最後抓入之程式码)之前多少程式
码开始模拟追踪。

OFF --- 离开模拟追踪模式。

解说:

TRACE 指令让你可以把回溯追踪缓冲区中之程式码以宛如第一次执行之情形
再重播一次。你必需把程式码窗设为可见才能使用模拟追踪模式。进入模拟追踪
模式後,你可以使用 XT 、XP 和 XG 指令来追踪缓冲区中之程式码。

输入 TRACE OFF 以离开模拟追踪模式。

未加参数的 TRACE 指令会显示目前模拟追踪模式是 ON 或 OFF 。

〔注〕在使用 TRACE 指令之前必需先用范围回溯追踪记录程式码。参阅第九章以
取得更多有关范围回溯追踪的资讯。

〔建议〕在程式码窗设为可见之状态下模拟追踪模式可发挥最大功能。把 TRACE
指令和 SHOW 指令连接使用是很有用的。这会同时以两种不同的型式显
示回溯追踪缓冲区中之程式码。

〔例〕 TRACE 40
这道指令会从回溯追踪缓冲区倒数第 40 个程式码开始进入模拟追踪模式
。在输入 TRACE OFF 指令之前会一直留在模拟追踪模式。

XT --- 在模拟追踪模式中进行单步执行

语法: XT [R]

R --- 反向进行单步执行。

解说:

XT 指令会单步执行在回溯追踪缓冲区中之程式码。这个指令的行为类似普通
除错中之 T 。要注意的是在模拟追踪模式中单步执行不会改变除了 CS 、IP 外
之暂存器的值。

XT 指令让你可以重播回溯追踪缓冲区中之程式码。

〔注〕在使用 XT 指令之前必需先进入模拟追踪模式。参阅第九章及 TRACE 指令
以取得更多有关范围回溯追踪的资讯。

〔建议〕如果你常常使用 XT 指令,它可以像其它指令一样设个功能键代替。

〔例〕 XT
这道指令会在模拟追踪模式中单步执行一道程式码。

XP --- 在模拟追踪模式中进行程式单步

语法: XP

解说:

XP 指令会在回溯追踪缓冲区中进行一程式单步。这个指令的行为类似普通除
错中之 T 。要注意的是除了 CS 、IP 外之暂存器的值均不会改变。

XP 指令让你可以重播回溯追踪缓冲区中之程式码。

〔注〕在使用 XP 指令之前必需先进入模拟追踪模式。参阅第九章及 TRACE 指令
以取得更多有关范围回溯追踪的资讯。

〔建议〕如果你常常使用 XP 指令,它可以像其它指令一样设个功能键代替。

〔例〕 XP
这道指令会在模拟追踪模式中程式单步一道程式码。

XG --- 在模拟追踪模式中执行到某位址

语法: XG [R] address

R --- 反向搜寻位址。

address --- 回溯追踪缓冲区中欲执行到之位址。

解说:

XG 指令会把程式码指标移到回溯追踪缓冲区中指定之位址的下一道程式码。
如果在位址之前有加 R 的话会把程式码指标移到指定位址的前一道程式码。

address 必需是一道程式码叙述的第一位元组。

XG 指令的行为类似普通除错中之 G 。

〔注〕在使用 XG 指令之前必需先进入模拟追踪模式。参阅第九章及 TRACE 指令
以取得更多有关范围回溯追踪的资讯。

〔例〕 XG 273:1030
这道指令会把程式码指标移到位址 273:1030 的後一道指令。

XRSET --- 重设回溯追踪缓冲区 (back trace buffer)

语法: XRSET

解说:

XRSET 指令会重设回溯追踪缓冲区。如果在回溯追踪缓冲区中有你不想要的
程式码时,在设定回溯范围时要先执行这个指令。

〔例〕 SRSET
这道指令会重设回溯追踪缓冲区。

VECS --- 储存/还原/比较插断向量

语法: VECS [C|S|R]

C --- 比较目前的插断向量表和储存起来之表。

S --- 储存目前插断向量表。

R --- 由缓冲区中还原插断向量表。

解说:

VECS 指令允许你把插断向量表储存到 Soft-ICE 中之内建缓冲区或还原之。
你也可以比较真正的插断向量表和储存起来之表并显示出两者间不同之处

使用 C 指令比较目前的插断向量表和储存之向量表时,会以下列格式显示:

address old-vector new-vector

每个有改变的插断向量均会显示出来。

载入 Soft-ICE 时之插断向量表会被储存起来。当程式以 LDR.EXE 载入时也
会自动储存向量表。只有一份插断向量表会被储存,所以每次执行 VECS S 时上
一份备份的插断向量表会被覆写掉。

如果没有加参数则会显示整个插断向量表。

〔例〕 VECS C
这道指令会比较真正的插断向量表和上次储存在 Soft-ICE 内建缓冲区中
之插断向量表。

SNAP --- 拍下记忆体区段的快照

语法: SNAP [C | S | R] address1 address2

C --- 比较缓冲区和记忆体范围。

S --- 把记忆体范围存到缓冲区中。

R --- 从缓冲区还原记忆体范围。

解说:

SNAP 指令会拍下记忆体区段的快照以供稍後的比较用。用 S 参数会把一记
忆体范围备份到延伸记忆体中之缓冲区里。使用 C 参数会显示延伸记忆体中缓冲
区和指定的位址范围之真实记忆体间不同之处。加上 R 参数则会把延伸记忆体中
之缓冲区拷贝到主记忆体中之位址范围。

如果使用 C 参数来比较缓冲区和位址范围,则会以下列格式输出:

address old-data new-data

每一改变的位元组都会显示出来。

使用 C 和 R 指令时通常不需加 address 。如果没有指定 address ,则会
使用最後一次有加 address 之 SNAP 指令的 address 。

〔注〕要使用 SNAP 指令你必需在 CONFIG.SYS 中 S-ICE.EXE 那行加上
/TRA XXXX 参数。

SNAP 指令会把资料储存到回溯追踪缓冲区中。如果你正在使用回溯追踪则会
和 SNAP 起冲突。如果你在回溯追踪缓冲区中有程式码资料时使用 SNAP S 指令
会把回溯追踪资讯覆写掉。反过来说,如果你用 SNAP 指令储存一区段然後又打
开范围回溯追踪则会覆写掉 SNAP 的缓冲区。

〔例〕 SNAP S 2000:0 4000:0
这道指令会把从 2000:0 到 4000:0 的资料区段存到 Soft-ICE 的回溯追
踪缓冲区。

EMMMAP --- 显示 EMM 分配图

语法: EMMMAP

解说:

EMMMAP 指令会显示 EMM 记忆体中每一个可取得的 page 及目前映射到的
page 。

〔注〕你必需启动 Soft-ICE 的 EMM 特性才能使用这个功能。参阅第八章以
取得更多有关启动 EMM 能力的资讯。

〔例〕 EMMMAP
这会以下列的格式显示目前 EMM 的分配情形:

Phy Page Seg addres Handle/Page
00 D000 FFFF
01 D400 0001/0000
02 D800 0001/0001
03 DC00 0001/0002

在这个范例中,page 0 是在 D000 且没有映射。pgae 1 是在 D400 ,
handle 是 1 且 page 0 映射到此。page 2 是在 D800 ,handle 是 1 且
page 1 映射到此。page 3 是在 DC00 ,handle 是 1 且 page 2 映射到此。

§5.7 视窗指令

指令:

WR --- 切换暂存器窗

WC --- 切换/设定程式码窗之大小

WD --- 切换/设定资料窗之大小

EC --- 进入/离开程式码窗

. --- 定位目前的程式码

Soft-ICE 有三种视窗:暂存器窗、资料窗和程式码窗。这些视窗都可以随时切
换出来或关闭。资料和程式码窗可以改变其大小;暂存器窗的大小是固定的。视窗
的顺序总是固定不变。从萤幕顶端由上而下依次是暂存器窗、资料窗、程式码窗。

WR --- 切换暂存器窗

语法: WR

解说:

如果暂存器窗目前是不可见的则这个指令会把它切为可见。若暂存器窗目前
是可见的,WR 指令会关闭暂存器窗。

暂存器窗会显示 8086 暂存器及各旗号之值。

内定的功能键: F2

WC --- 切换/设定程式码窗之大小

语法: WC [window-size]

window-size --- 1 到 21 间的十进位数。

解说:

如果没有指定 window-size ,这个指令会切换程式码窗。如果程式码窗是不
可见的会把它切为可见;若是可见的则会关闭之。

如果有指定 window-size ,则程式码窗会重设大小。如果程式码窗本来是不
可见的则会以指定的大小显示。

〔注〕如果你想把游标移到程式码窗中要使用 EC 指令。参阅 EC 指令的解说以
取得更多资讯。

〔例〕 WC 12
如果程式码窗是不可见的则会显示一个 12 行大小的程式码窗。如果程式
码窗目前在萤幕上,它的大小会重设为 12 行。

WD --- 切换/设定资料窗之大小

语法: WD [window-size]

window-size --- 1 到 21 间的十进位数。

解说:

如果没有指定 window-size ,这个指令会切换资料窗。如果资料窗是不
可见的会把它切为可见;若是可见的则会关闭之。

如果有指定 window-size ,则资料窗会重设大小。如果资料窗本来是不
可见的则会以指定的大小显示。

〔例〕 WD 1
如果资料窗是不可见的则会显示一个 1 行大小的资料窗。如果资料窗
目前在萤幕上,它的大小会重设为 12 行。

EC --- 进入/离开程式码窗

语法: EC

解说:

EC 指令会使游标在程式码窗和指令窗中切换。如果游标在指令窗中,它会被
移到程式码窗中。如果游标在程式码窗中,它会被移到指令窗中。

当游标在程式码窗时,会有更多可用的功能,这使得除错更为容易。这些功
能是:

* Point-and-shoot break points
Point-and-shoot break points 是用 BPX 指令设置的。如果没有加参数
,会在目前游标所在位置设置中断点。游标所在那行必须包含程式码。(
如果你不确定,把程式码窗以混合的模式开著) 内定 BPX 的功能键是 F9


* Go to cursor line
你可以在游标所在位置设个暂时中断点,用 HERE 指令执行到那里。游标
所在那行必须包含程式码。(如果你不确定,把程式码窗以混合的模式开
著) 内定 BPX 的功能键是 F7 。

* Scrolling the code window
只有当游标在程式码窗中时才能卷动程式码窗。卷动的按键在程式码窗中
有不同的定义。

UP --- 把程式码窗向上卷一行。
DOWN --- 把程式码窗向下卷一行。
PageUp --- 把程式码窗向上卷一页。
PageDown --- 把程式码窗向下卷一页。

〔注〕 程式码窗必须是可见的 EC 指令才能使用。

. --- 定位目前的程式码

语法: .

解说:

当程式码窗是可见的时候,"." 指令会显示目前的程式码。

§ 5.8 除错器设定指令

指令:

PAUSE --- 显示满一个萤幕後暂停

ALTKEY --- 设定 Soft-ICE 的启动热键

FKEY --- 显示、修改功能键

BASE --- 设定/显示目前的基数

CTRL-P --- 把 LOG 送到印表机

Print-Screen --- 印出目前萤幕

PRN --- 设定印表机的输出埠

PAUSE --- 显示满一个萤幕後暂停

语法: PAUSE [ON | OFF]

解说:

PAUSE 指令会在每一页的结束时暂停萤幕。如果 PAUSE 设为 ON,Soft-ICE
会提示你按任意键以继续卷动视窗,提示讯息会显示在萤幕底部的状态行里。

如果没有指定任何参数则会显示目前 PAUSE 的状态。

PAUESE 的内定值是 ON。

〔例〕 PAUSE ON
这个指令指定接下来萤幕上的显示会等你输入任意键後才继续卷动。

ALTKEY --- 设定 Soft-ICE 的启动热键

语法: ALTKEY [ALTletter] | [CTRLletter] | [SYSREQ]

letter --- 任何一字母 (A - Z)

解说:

ALTKEY 指令可以让你改变用来叫出 Soft-ICE 的热键。你可以把热键改成
CTRL + 字母、ALT + 字母或是 SysRq (即 PrtScr) 键。

有时候你或许会使用会和 Soft-ICE 的 Ctrl-D 热键相冲突的程式,避免这
种冲突的方法之一是使用 ALTKEY 指令改变叫出 Soft-ICE 的热键。另一个方法
则是在热键组合中多按个 SHIFT 键,Soft-ICE 对这样的组合不会有反应,所以
能把热键传到你的程式去。举例来说,如果你使用的常驻程式是以 Ctrl-D 叫出
来的,试著用 Ctrl-Shift-D 来叫出你的程式。有些键盘上你必须按 Alt-PrtScr
来模拟发出个 System Request。小心不要意外的把萤幕上的东西印了出来。

如果没有指定参数则会显示目前的热键。

内定的热键是 Ctrl-D。

〔例〕 ALTKEY ALT Z
这道指令指定 Ctrl-Z 是叫出 Soft-ICE 的热键。

FKEY --- 显示、修改功能键

语法: FKEY [function-key-name string]

function-key-name --- F1, F2...... F12

string --- string 包含任何 Soft-ICE 的指令和特殊字元:^ 及 ;。^ 是
用来让指令不显示出来,; 则代表按下 ENTER。

解说:

FKEY 指令是用来指定某功能键所代表的指令字串,功能键可设定来代表任何
Soft-ICE 中的指令。

如果没有指定参数则会显示目前各功能键代表的指令。

要取消某个功能键可以用这样的方法:FKEY 加 function-key-name,然後接
上一个空白字串。

你也可以在设定档 S-ICE.DAT 中预先指定功能键的功能。参阅 §6.4 以
取的更多有关在设定档中设定功能键的资讯。

在功能键设定字串中加上归位键的符号可以让一个功能键代表一系列的指令
指令。归位键是用 ; 来表示。

如果你在功能键的设定前面加上 ^ (Shift-6),则接下来的指令将不会显示
出来。指令的作用还是一样没变,但是显示在指令窗中的所有讯息 (包括错误讯
息) 都不会再出现。这个模式在指令会改变视窗中资料而你又不想因此造成指令
窗中的混乱时特别有用。

当功能键有加上 ^ 设定时,你可以在键入其他指令的途中使用这个功能键而
不会对输入中的指令造成任何影响。例如,如果你使用的是 F2 的内定值,你可
以在输入你下一个指令的时候按 F2 来切换暂存器窗。

〔注〕Soft-ICE 有个 S-ICE.DAT 的设定档,你可以把功能键的设定写在这个档
案中,这样在载入 Soft-ICE 的时候会自动设定功能键。在设定档中设定
功能键的语法是: function-key-name = "string" 。在设定档中设定功
能键的时候要用双引号把字串括起来。

〔例〕 FKEY F2 ^WR; (command line)
这道指令用来设定 F2 代表切换暂存器窗的指令, ^ 代表这个指令不会显
示出来, ; 代表按下 Enter。如此 F2 键就可以用来切换暂存器窗的 on
或 off,而且即使是在输入其他指令的时候也可以随时使用。

〔例〕 FKEY F1 "G CS:120; R; G CS:" (command line)
这个例子显示你可以用一个功能键代表许多指令,也可以代表一个指令的
一部份,等待使用者的输入来完成它。输入这道指令後,按下 F1 键会执
行到 CS:120 处,显示目前的暂存器之值,然後显示 G 指令等待使用者的
输入。

〔例〕 FKEY F1 WD 3;D DS:100; (command line)
这个例子会设定 F1 键代表一串指令。这个按键是可见的,而且以 Enter
结束。它会把资料窗设为三行的大小并显示从 DS:100 处起的的资料。

〔例〕 F1 = "WR;WD 2; WC 10;" (S-ICE.DAT)
如果这一行是放在 S-ICE.DAT 中,当载入 Soft-ICE 时会自动设定 F1 键
。当在 Soft-ICE 中按下 F1 键时,它会切换暂存器窗,打开一个二行的
资料窗,及一个十行的程式码窗。参阅第六章以取得更多有关在 S-ICE.DAT
设定功能键的资讯。

BASE --- 设定/显示目前的基数

语法: BASE [10 | 16]

解说:

BASE 指令是用来设定基数是以 10 或 16 为底。以 10 为底在小视窗模式中
会受到限制,这是受到视窗宽度的影响。即使是在大视窗模式中有些指令显示的
资料数目也会受限制。

当基数为 10 的时候,所有输入和显示的数字和位址都是以十进位表示。如
果基数是 16 的话,则是除了原始码行号,WIN 指令中的萤幕座标、大小以 10
进位表示外,均为 16 进位。

基数的内定值是 16。

〔例〕 BASE 16
这道指令会会把基数设为 16。

CTRL-P --- 把 LOG 送到印表机

语法: CTRL - P

解说:

在你按下 CTRL - P 後,所有显示在指令窗中的的讯息也会被送到印表机去
。要停止把 LOG 送到印表机的动作只要再按一次 CTRL - P 即可。

当你用 CTRL - P 送许多资料到印表机时,会许你会想把 PAUSE 设为 OFF,
这样资料才可以一直卷动下去而不需要去按键。

Print-Screen --- 印出目前萤幕

语法: Print-Screen

解说:

按下 Print-Screen 键後会把整个萤幕上的东西倾印印表机去。

如果你只是想印出记忆体内容或是某个指令的的辅助资料,使用 CTRL - P
会比用 Print-Screen 快得多,这是因为 Print-Screen 会把萤幕上包括边界的
每个字元都送到印表机去。

PRN --- 设定印表机的输出埠

语法: PRN [LPTx | COMx]

x --- 介於 1 到 4 的数字

解说:

PRN 指令允许你把 CTRL - P 和 Print-Screen 的资料送到不同的印表机去


如果没有指定参数则会显示目前指定的印表机。

〔例〕 PRN COM 1
这道指令会把 CTRL - P 和 Print-Screen 的输出送到 COM 1 埠去。

§ 5.9 萤幕控制指令

指令:

FLASH --- 执行 P 或 T 指令时还原萤幕

FLICK --- 减轻萤幕的闪烁

WATCHV --- 设定监控显示模式

RS --- 显示程式萤幕

CLS --- 清除视窗

ALTSCR --- 转换到替换萤幕

WIN --- 改变 Soft-ICE 的视窗大小

FLASH --- 执行 P 或 T 指令时还原萤幕

语法: FLASH [ON | OFF]

解说:

FLASH 指令让你指定在 T 或 P 指令执行时是否要还原萤幕。如果你指定要
还原萤幕,则在 T 或 P 指令执行的时候会短暂的还原一下。在对会存取 VIDEO
MEMORY 的程式片段时你会需要用到这个功能。

如果 P 指令用来执行一个 CALL 或中断,则一定会有萤幕还原的动作,因为
执行的函式中可能会对萤幕写入。

如果没有指定参数则会显示目前 FLASH 的状态。

FLASH 的内定值是 OFF。

〔例〕 FLASH ON
这道指令会把 FLASH 的状态设为 ON。执行任何 P 或 T 指令时会还原萤
幕。

FLICK --- 减轻萤幕的闪烁

语法: FLICK [ON | OFF]

解说:

有些显示卡在输出字元之前要先等垂直、水平扫描完成才行。如果任意的输
出,在显示字元时将会发生闪烁的现象。如果你使用 Soft-ICE 时萤幕会有闪烁
的现象,你应该把 FLICK 设为 ON。

有些 EGA 卡上你离开 Soft-ICE 时颜色可能没有还原的很正确,这是模拟的
EGA 显示的问题。3DA 埠是个有两个功能的显示埠。第一种是一些老旧的 CGA 软
体靠 3DA 来做 hsync 和 vsync,这样可以避免在一些老旧的 CGA 控制卡上造成
闪烁的现象。第二个功能则是用来重新设定 EGA 卡的调色盘。Soft-ICE 有个演
算法可以不用一直监控这个埠,一直监控会减慢一些认为自己在 CGA 卡上执行的
老旧程式之速度。但是在某些状况下,这套演算法可能无法使用。如果你是在 EGA
上使用 Soft-ICE 而且发现颜色并没有正确的还原的话,把 FLICK 设为 ON,这
样 Soft-ICE 会监控 3DA 埠而解决这个问题。

当 FLICK 设为 ON 时,萤幕更新的速度会变慢。

如果没有指定参数则会显示目前 FLICK 的状态。

FLICK 的内定值是 OFF。

〔例〕 FLICK ON
这道指令会把 FLICK 模式设为 ON。Soft-ICE 会等水平、垂直扫描完成後
再输出字元。

WATCHV --- 设定监控显示模式

语法: WATCHV [ON | OFF]

解说:

WATCHV 指令让你指定 Soft-ICE 要如何监控显示埠。通常 Soft-ICE 只有在
执行 INT 10 切换到非文字模式後才监控显示埠。但是有些程式不用 INT 10 来
切换显示模式,这种状况下,如果 WATCHV 设为 OFF,则 Soft-ICE 在储存或还
原萤幕时可能会发生问题。把 WATCHV 设为 ON 则会让 Soft-ICE 随时监控显示
埠。

如果你发现 Soft-ICE 并未正确的处理你的萤幕,或不能正确的还原游标的
位置,把 WATCHV 设为 ON。把 WATCHV 设为 ON 可能会影响目前显示模式的效率


如果没有指定参数则会显示目前 WATCHV 的状态。

WATCHV 的内定值是 OFF。

〔例〕 WATCHV ON
这道指令会把 WATCHV 设为 ON。

RS --- 显示程式萤幕

语法: RS

解说:

RS 指令让你暂时还原程式萤幕,Soft-ICE 视窗将消失直到你按任一键为止


这个功能在对经常更新萤幕的程式做除错时很有用。当 Soft-ICE 叫出来时
会回到文字模式,使用 RS 指令可以暂时回到绘图模式萤幕。

〔例〕 RS

CLS --- 清除视窗

语法: CLS

解说:

CLS 指令会清除 Soft-ICE 的视窗,并把提示符号及游标移到视窗的左上角


〔例〕 CLS

ALTSCR --- 转换到替换萤幕

语法: ALTSCR [ON | OFF]

解说:

ALTSCR 指令允许你把萤幕的输出从原定萤幕重新导向到替换萤幕去。这个功
能在你对绘图模式程式除错时非常有用,这样你就不用在绘图模式和 Soft-ICE
间切换来切换去。

ALTSCR 要求系统连接两台显示器。替换萤幕必须处於文字模式,这是显示器
的内定模式。

WATCHV 的内定值是 OFF。

〔例〕 ALTSCR ON
这道指令会把萤幕的输出重新导向到替换显示器上。

WIN --- 改变 Soft-ICE 的视窗大小

语法: WIN [N | W] [start-row length [start-column]]

N --- 当指定 N 时,视窗会被设为较小的模式: 46 字元宽。

W --- 当指定 W 时,视窗会被设为整个萤幕的宽度。

start-row --- 0 到 17 的数字。指定视窗从哪一列开始。

length --- 8 到 25 的数字。指定视窗有几列。

start-column --- 在小视窗模式中指定视窗位置为从左边算过来第几行。
start-row 和 start-column 指定小视窗模式中视窗左上
角的位置。在大视窗模式中,start-column 会被忽略。

解说:

WIN 指令可以让你修改 Soft-ICE 视窗的宽度和高度。

如果没有指定参数,这个指令会在小视窗模式和大视窗模式中切换。

如果 WIN 指令只有加上 N 或 W 参数时,则视窗的宽度会变换成指定的大小
,但高度不变。

如果视窗的行数加上 start-row 大於 25,则视窗的 length 到萤幕底端为
止。

WIN 的内定值是小视窗模式。

〔例〕 WIN N 4 9 30
这个指令会把视窗设定为从第 4 列、第 30 行处开始显示,并且是 9 列
高、46 个字元宽。

〔例〕 WIN
这道指令会在大视窗和小视窗模式间切换。

〔例〕 WIN W 10 8
这个指令会把视窗设定为从第 10 列处开始显示,并且是 8 列高、整个萤
幕的宽度。

§ 5.10 符号及原始码指令

*** 对不起.... 不会用所以不会翻..... 期待其他高人的大作.... ***


Z 是叫出 Soft-ICE 的热键。

FKEY --- 显示、修改功能键

语法: FKEY [function-key-name string]

function-key-name --- F1, F2...... F12

string --- string 包含任何 Soft-ICE 的指令和特殊字元:^ 及 ;。^ 是
用来让指令不显示出来,; 则Hacker.AIX/00000024/00000006.htm 100644 023417 000143 00000010644 06446674335 015467 0 ustar 00bbsroot bbs 000000 000000


S-ICE 指令说明

--------------------------------------------------------------------
/TRA 0000k ; 设定追踪缓冲区之大小、最小10K...
/SYM 0000k ; 设定载入语法档之缓冲区大小.........
/S ; 如其延伸记忆体不够才加此参数.......
--------------------------------------------------------------------
BOUNDS [ON | Off ] ;
BOUNDS ON ; 打开核对保护模式中断之指令.........
BOUNDS OFF ; 关掉核对保护模式中断之指令.........
--------------------------------------------------------------------
R 32 ; 在S-ICE视窗内分解32位元之指令......
--------------------------------------------------------------------
SHOW [B | Start] [L Length]; 增强Demp的功能可指定开始长度列印PRN
B - ; 设定节段位址及节内位址至缓冲区.....
Start - ; 指定开始的节段位址起点.............
Length - ; 指定结束的节段位址终点.............
--------------------------------------------------------------------
FILE [file-name |*] ; 指令语法档案以供参考组合码.........
--------------------------------------------------------------------
TABS [2 | 4 | 8] ; 指令原始档案的控制扩充长度.........
--------------------------------------------------------------------
PRN COM1 ; 指令PRN至正确的通讯埠..............
--------------------------------------------------------------------
Colors = " 4FH,4EH,7EH, 2FH,0EH,70H, 1EH,1FH,5FH, 30H,3CH,3EH"
Colors = " 暂存器颜色, 资料区颜色, 程式码颜色, 指令颜色 "
; 指令 SOFT-ICE 的视窗的颜色以16进位.
--------------------------------------------------------------------
新特性 ---> 由除错程式及常驻程式设定一个中断点、硬体模拟...........

Mov Ah,09h
Mov AL,所须交给之函数(副程式)
Mov SI,'FG' ( 4647h )
Mov DI,'JM' ( 4A4Dh )
Int 03h

其 SOFT-ICE 副函数如下:

AL 副函数数值说明
10h 显示 SOFT-ICE 的重要资料至指定位址
11H 执行一个 SOFT-ICE 的指令
12H 得到一个硬体中断点的位址
13H 设定一个硬体中断点的位址
14H 清除一个硬体中断点的位址

其 SOFT-ICE 副函数定义如下:

10h 显示 SOFT-ICE 的重要资料至指定位址
引用 DS:DX 作其索引位址.....
字串索引最大可以一百个字元(0Dh)...

11H 执行一个 SOFT-ICE 的指令
引用 DS:DX 作其索引指令.....

12H 得到一个硬体中断点的位址
返回值暂存器数值定义如下:
DH - 传回最後中断的向量而成过去
DL - 传回最後硬体中断的类型而成过去
BH - 传回最後中断的向量
BL - 传回最後硬体中断的类型
传回类型如下:
1 - I/O
2 - INT
3 - BPX (int 3 style BP)
4 - 保留的
5 - 定范图

13H 设定一个硬体中断点的位址
返回值暂存器数值定义如下:
AX - 传回设定错误码
BX - 传回设定中断码

14H 清除一个硬体中断点的位址
输入:BX = 硬体中断号码
返回:BX = ????


    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程