📄 sice.txt
字号:
Page Down --- 显示向下卷一页
BackSpace --- 消除前一个字元
Esc --- 取消目前命令
当游标在资料窗或程式码窗时,另有特殊的按键,这在後面将会讨论到。
§3.7 动作状态行
在萤幕底部的状态行提供指令语法的辅助。
§3.8 指令语法
Soft-ICE 是个由指令操控的除错工具。要令 Soft-ICE 有动作,你要下指令给
它。指令可以因不同参数而有改变。
所有的指令都是 1 到 6 个字元的字串且不分大小写。所有的参数都是字串或
运算式。
运算式是典型的数字,也可以是数字和运算子的结合。所有的数字均以 16 进
位表示。一个位元组 (byte) 参数有 2 位,字组 (word) 参数有 4 位。双字组
(double word) 是两个由 : 分隔的字组参数。以下是一些参数的例子:
12 --- 位元组参数
10FF --- 字组参数
E000:0100 --- 双字组参数
暂存器在运算式中可以拿来当位元组或字组参数用。例如: U CS:IP -10 的指
令会从现在指令指标所指位址向前 10 byte 开始反组译。以下的暂存器名称可以用
在运算式中:
AL 、AH 、AX 、BL 、BH 、BX 、CL 、CH 、CX 、DL 、DH 、DX 、DI 、
SI 、BP 、SP 、IP 、CS 、DS 、ES 、SS 、FL
§3.8.1 指定记忆体位址
许多 Soft-ICE 的指令要求以记忆体位址当参数。一个记忆体位址是由两个
16 位元的字组中间以分号 (:) 分隔而组成的。第一个字组表示节段位址 (segment
address) 而第二个字组表示差距位址 (offset segment) 。
公用符号可以在所有 Soft-ICE 指令中用来取代位址。公用符号必需先由
Soft-ICE 的程式载入器 (LDR.EXE) 载入。参阅第七章以取得使用公用符号的完
整说明。
Soft-ICE 运算式的运算器接受一些特殊字元和位址的使用。这些字元是:
$ --- 现在 CS:IP 所指的位址
@位址 --- 间接双字组
.number --- 原始程式码行号
当你要输入目前指令指标的位址时,可以用 $ 代替 CS:IP 。
使用 @ 可以让你参考到位址所指处的双字组。你可以使用多层的 @ 。
如果用 . 来代表位址,它是用来代表原程式码中的行号,而非实际的位址。
这只有在原始程式码有载入的情形下才能使用。这种情况下,位址是以 10 进位
表示。
例如:
U.1234 --- 从原始程式码第 1234 行开始反组译
U $-10 --- 从目前指令指标所指处向前 10 byte 开始反组译
G @SS:SP --- 假如你目前正在第一个中断程序,下这个指令会在堆叠的
返回位址设个暂时中断点并跳过此中断程序。
§3.9 功能键
功能键可以代替一串 Soft-ICE 中之指令。功能键可以由命令行设定或从
S-ICE.DAT 中定义。
Soft-ICE 磁片上原来的 S-ICE.DAT 已经对 12 个功能键有设定。你可以在任
何时候改变任何一个设定。个键定义如下表所示。这样设计是为了方便微软的
CodeView 的使用者。
F1 --- 显示一般辅助画面 ( H; )
F2 --- 在暂存器窗中切换 ( ^WR; )
F3 --- 改变目前原始码的模式 ( ^SRC; )
F4 --- 回复视窗 ( ^RS; )
F5 --- 回到原程式 ( ^X; )
F6 --- 在命令窗中和程式码窗中切换 ( ^EC; )
F7 --- 执行到游标所在那行 ( ^HERE; )
F8 --- 单步执行 ( ^T; )
F9 --- 在游标所在那行设中断点 ( ^BPX; )
F10 --- 单步执行 ( ^P; )
F11 --- 执行到返回位址 ( ^G @SS:SP; )
F12 --- 显示 Soft-ICE 的版别 ( ^VER; )
指令前的 ^ 会让这个指令不显示出来。指令後的 ; 则代表按下 Enter 。输入
FKEY 的指令可以显示目前功能键所代表的意义。要使用功能键直接按下功能键即可
,不需再键入指令。要自定功能键,参阅 §5.8 FKEY 指令的解说或第六章有关
在 S-ICE.DAT 设定功能键的部份。
§3.10 辅助
利用辅助的指令可以得到有关指令的简单解说、语法和使用例子。要得到辅助
的资讯,键入:
? 或 H --- 显示所有指令和运算子的简短解说
? 指令 或 H 指令 --- 显示关於指令语法和例子更详细的资讯
? 运算式 或 H 运算式 --- 把运算式的结果以 16 、10 进位及 ASCII 码
显示出来
§3.11 课程
(好多喔....偷懒一下,跳过去吧!)
From - Thu Feb 06 21:57:32 1997
Received: from gingko.dlut.edu.cn (gingko [202.118.66.8]) by rose.dlut.edu.cn (8.7.3/8.7.3) with ESMTP id TAA03359 for <ygh@rose.dlut.edu.cn>; Sat, 8 Mar 1997 19:46:36 +0800 (CST)
Received: from synet.edu.cn (saint.synet.edu.cn [202.112.29.85]) by gingko.dlut.edu.cn (8.7.5/3.3W9-dlut) with SMTP id UAA16779 for <ygh@rose.dlut.edu.cn>; Sat, 8 Mar 1997 20:50:06 +0800 (CST)
┌——————————————————┐
│ 第 一 节 学习使用 Soft-ICE │
└——————————————————┘
第 二 章 开始使用 Soft-ICE
§2.1 磁片
Soft-ICE 是在 5 1/4" 或 3 1/2" 的磁片上。
当你执行 Soft-ICE 时,萤幕上会显示这份拷贝的所有人的姓名以防止软体的盗
拷。为了您的方便,Soft-ICE 的磁片上并没有设置防拷。为了我们的方便,我们感
激您对我们版权声明的尊重。只有当母片损坏时才能使用拷贝的副本。
Soft-ICE 的目录下将包含下列档案:
S-ICE.EXE S-ICE.DAT LDR.EXE MSYM.EXE
EMMSETUP.EXE UPTIME.EXE README.SI SAMPLE.EXE
SAMPLE.ASM SAMPLE.SYM
S-ICE.EXE 是 Soft-ICE 的程式。
S-ICE.DAT 是设定 Soft-ICE 的档案。
LDR.EXE 是 Soft-ICE 的程式,也是符号档的载入器。
MSYM.EXE 是 Soft-ICE 符号档的制造程式。
EMMSETUP.EXE 用来设定系统如何使用扩充记忆体。
UPTIME.EXE 将时间设为真实模式下的时钟。
README.SI 包括有关 Soft-ICE 但未出现在手册中之资料。
SAMPLE.EXE 是个在课程中使用到的展示程式。
SAMPLE.ASM 是展示程式的组合语言程式码。
SAMPLE.SYM 是展示程式的符号档。
§2.2 载入 Soft-ICE
使用 Soft-ICE 之前先把磁片上所有档案拷进硬碟中,这些档案必需放在 DOS
可以存取的目录中。
Soft-ICE 可以当做驱动程式由 CONFIG.SYS 中载入或直接在命令列下执行。
Soft-ICE 有许多功能必需由 CONFIG.SYS 中载入才能使用。
〔注〕如果你没有延伸记忆体,就不能由 CONFIG.SYS 中载入 Soft-ICE 。此时你必
需在 DOS 提示符号下执行它。
§2.2.1 没有延伸记忆体的载入法
没有延伸记忆体时,Soft-ICE 会尽可能的载入较高的记忆体位址。Soft-ICE
使用的记忆体将会消失,使 DOS 程式无法找到它。既然在载入 Soft-ICE 後 DOS
下的可见之记忆体变少了,建议您最好在其它常驻或控制程式之前先载入 Soft-
ICE 。没有延伸记忆体时,你只需要在 DOS 下输入:S-ICE 即可。
§2.2.2 以延伸记忆体来载入 Soft-ICE
要以延伸记忆体来载入 Soft-ICE 可以用下列二种方法之一:
1.由 CONFIG.SYS 中载入:如果你想使用下列功能时,你必需以此方法载
Soft-ICE 。
* 和其它使用 ROM BIOS 的程式共用记忆体。(像:VDISK.SYS 、
RAMDRIVE.SYS 、HIMEM.SYS 、CACHE 程式等。)
* 使用 Soft-ICE EMM 4.0 的功能。
* 使用 Soft-ICE 做符号或原始程式码层次的除错。
* 使用 back trace ranges 。
* 和其它 Nu-Mega 产品一起使用。像:MagicCV 。
由 CONFIG.SYS 中载入时,Soft-ICE 会为自己和它的相关部份在延伸记
忆体中配置一块记忆体,如此才不会发生记忆体冲突。Soft-ICE 必需在
其它会配置延伸记忆体的程式载入前载入。一般而言,Soft-ICE 最好是
CONFIG.SYS 中第一个载入的驱动程式。对刚使用 Soft-ICE 的人来说,
用以下叙述把 Soft-ICE 当成是 CONFIG.SYS 中第一个载入的程式事明
智的: DEVICE = drice:\path\S-ICE.EXE /SYM 50
drive 和 path 代表 Soft-ICE 所在的磁碟和路径。这叙述会在系统开始
时载入 Soft-ICE 且在课程中也适用。然而这样并没有启动 Soft-ICE
一些有用的功能,像 EMM 4.0 。你可以在你更有经验後重新设定 Soft-
ICE 以启用这些功能。如果你已经有使用 Soft-ICE 的经验或想立刻使用
这些功能,请参阅第六章 --- Soft-ICE 初始状态的选择。
〔注意〕在你的系统上初次载入任何新的驱动程式时准备一张可以开机
的磁片才是明智的。这是用来防止现在的设定和你的系统不相
容的不幸事故。
2.直接在 DOS 的提示符号下输入 S-ICE 来执行 Soft-ICE 。载入前 Soft-
ICE 会显示载入的讯息和提示符号。如果不想出现这提示符号,在
S-ICE.DAT 中加入 EXTENDED 。查阅 §6.4 以获得更多有关
S-ICE.DAT 的资讯。以这个方法载入 Soft-ICE 时,Soft-ICE 会自动载
入延伸记忆体的最高处,不管是否有东西已经在那儿。如果你确定没有
其它程式使用延伸记忆体,这种载入法是可接受的。以此方法载入时,
Soft-ICE 完全不占主记忆体。
〔注〕由命令列载入 Soft-ICE 时,你无法使用 Soft-ICE 的全部功能
。如果你想把 Soft-ICE 当独立的除错器使用,建议您从
CONFIG.SYS 中载入 Soft-ICE 。
如果你必把 Soft-ICE 当驱动程式载入,但不想 Soft-ICE 永远存在,你应
在载入时加上 /UN 参数。查阅 §6.3.1 以取得更多资讯。
§2.2.3 把 Soft-ICE 设定成定制载入
你可以从 CONFIG.SYS 中以参数或用 Soft-ICE 的初状态档 S-ICE.DAT 来定
制 Soft-ICE 。CONFIG.SYS 中的参数设定让你可以设定 Soft-ICE 如何使用延伸
记忆体。S-ICE.DAT 让你设定功能键和定义自动启始字串。自动启始字串是用来
载入一串每次载入 Soft-ICE 要做的命令。参阅第六章以取得更多资讯。
§2.3 解除 Soft-ICE 的常驻
偶尔你可能会需要解除 Soft-ICE 的常驻。典型的例子是为了要执行 80286 或
80386 保护模式程式而需要解除 Soft-ICE 。要解除 Soft-ICE ,打入:S-ICE /U
。
这个命令会把机器切回真实位址模式。如果 Soft-ICE 是由 CONFIG.SYS 中载
入的,则解除後记忆体仍不能被其它程式使用。如果 Soft-ICE 从命令列载入的,
则解除後会释放记忆体。
〔注意〕如果你的系统有任何 backfilled memory 或扩充记忆体正被使用,解
除 Soft-ICE 会使系统当掉。
§2.4 重新载入 Soft-ICE
即使 Soft-ICE 一开始是从 CONFIG.SYS 中载入的,也可以在任何时候重新载
入。如果 Soft-ICE 是由 CONFIG.SYS 中载入的,那原先载入时的设定依然有效。
要重新载入 Soft-ICE ,输入:S-ICE 。
┌——————————————————┐
│ 第 二 节 指 令 │
└——————————————————┘
第二节包括每个指令的语法、解释及范例。所有的数字均以 16 进位表示。使
用到 + - * / 或暂存器的数字均可视为运算式。所有的指令都不区分大小写。指令
语法叙述中的斜体字需以真实的值代替而不是打入斜体字。
以下是本节中所使用的代号:
[ ] --- 语法中非必用的部份
< > --- 可选用的部份
X|Y --- 使用 X 或 Y ( X Y 择一使用 )
count --- count 指定中断点条件要成立几次才会真正引发中断。如果没
有设定,内定值是 1 。每次引发中断而叫出 Soft-ICE 的视窗
後,记数器自动回复为原先指定值。
verb --- 指定在什麽状况下中断点会做用。R 代表读取;W 代表写入;
RW 代表读取及写入;X 代表执行。
address --- 位址。由两个 16 位元之字组以冒号分隔而组成。第一个字组
代表区段位址,第二个字组代表差距位址。位址可以由符号或
暂存器构成,也可以包括 $ 、. 、@ 等特殊符号。参阅
§3.8 以取得更多资讯。
break-number --- 中断点号码是在你修改中断点(即编辑、删除、重新启动
、暂停作用)时使用的。它是用来代表各中断点的代码。
中断点号码是由 0 到 F 。
list --- 一串由逗号或空白分隔的中断点号码。
mask --- 由 1 、0 、X 所构成的位元遮罩。X 代表不处理的位元。
例如: BPIO 21W EQ M 1XXX XXXX
如果 21 埠被写入且造成其高位元被设定则会引发中断。
第 四 章 如何使用中断点指令
§4.1 序言
Soft-ICE 具有以往只有硬体除错器才具有的中断点能力。因为 80386 晶片的
威力和弹性,使我们不需要额外的硬体设备就能有更强大的中断点能力。
中断点的触发可以由记忆体某位址的读取、记忆体范围的读取、程式的执行及
埠的存取来达成。Soft-ICE 赋与每个中断点一个一位的 16 进位号码( 0 - F )
。这个中断点号码是当你对中断点做删除、中止、启动、编辑等动作时使用。
Soft-ICE 的所有中断点都是 "sticky" 。这个意思是这些中断点在启动後不会
自动消失。你必需以 BC 或 BD 指令来消除或关闭它。Soft-ICE 一次可以处理 16
个中断点。同种形态的中断点最多可以有 10 个。但记忆体位址的中断点 ( BPM )
因 80386 处理器之暂存器的缘故,最多只能设 4 个。
中断点可以设个计数参数。计数参数是中断点真正触发作用前被忽略的次数。
§4.2 设置中断点
指令:
BPM BPMB BPMW BPMD --- 在记忆体位址被存取或执行时引发中断
BPR --- 对记忆体范围设置中断点
BPIO --- 对 I/O 埠存取时触发中断
BPINT --- 呼叫插断时触发中断
BPX --- 设置 / 清除 执行中断点
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -