📄 lesson501.htm
字号:
</span></p>
<p align="left"><span class="p9"> 计算式是典型的数字,也可以是数字和运算式的结合。所有的数字均以 16 进位表示。一个字节
(byte) 参数有 2 位,字(word) 参数有 4 位。双字 (double word) 是两个由 : 分隔的字组参数。以下是一些参数的例子: </span></p>
<p align="left"><span class="p9"> 12 --- 字节参数 <br>
10FF --- 字参数 <br>
E000:0100 --- 双字参数 </span></p>
<p align="left"><span class="p9"> 寄存器在计算式中可以拿来当字节或字参数用。例如: U CS:IP -10 的指令会从现在指令指标所指地址向前
10 byte 开始反汇编。以下的寄存器名称可以用在计算式中:</span></p>
<p align="left"><span class="p9"> AL 、AH 、AX 、BL 、BH 、BX 、CL 、CH 、CX 、DL 、DH
、DX 、DI 、 SI 、BP 、SP 、IP 、CS 、DS 、ES 、SS 、FL </span></p>
<blockquote>
<p><span class="p9">10 指定内存地址</span></p>
</blockquote>
<p align="left"><span class="p9"> 许多 Soft-ICE 的指令要求以内存地址当参数。一个内存地址是由两个 16 位的字中间以分号
(:) 分隔而组成的。第一个字组表示节段地址 (segment address) 而第二个字组表示偏移地址 (offset segment) 。 </span></p>
<p align="left"><span class="p9"> 公用符号可以在所有 Soft-ICE 指令中用来取代地址。公用符号必需先由 Soft-ICE
的程序载入器 (LDR.EXE) 载入。</span></p>
<p align="left"><span class="p9"> Soft-ICE 计算式的运算器接受一些特殊字节和地址的使用。这些字节是:</span></p>
<p align="left"><span class="p9"> $ --- 现在 CS:IP 所指的地址<br>
@地址 --- 间接双字<br>
.number --- 原始程序码行号 </span></p>
<p align="left"><span class="p9"> 当你要输入目前指令指标的地址时,可以用 $ 代替 CS:IP 。</span></p>
<p align="left"><span class="p9"> 使用 @ 可以让你参考到地址所指处的双字。你可以使用多层的 @ 。</span></p>
<p align="left"><span class="p9"> 如果用 . 来代表地址,它是用来代表原程序码中的行号,而非实际的地址。 这只有在原始程序码有载入的情形下才能使用。这种情况下,地址是以
10 进位 表示。</span></p>
<p align="left"><span class="p9"> 例如: U.1234 --- 从原始程序码第 1234 行开始反汇编 <br>
U $-10 --- 从目前指令指标所指处向前 10 byte 开始反汇编 <br>
G @SS:SP --- 假如你目前正在第一个中断程序,下这个指令会在堆栈的返回地址设个暂时中断点并跳过此中断程序。</span></p>
<blockquote>
<p><span class="p9"> 11 功能键 </span></p>
</blockquote>
<p align="left"><span class="p9"> 功能键可以代替一串 Soft-ICE 指令。功能键可以由命令行设定或在WINICE.DAT
中定义。</span></p>
<p align="left"><span class="p9"> Soft-ICE 的配制文件winice.dat已经对 12 个功能键有设定。你可以在任何时候改变任何一个设定。每个键定义如下表所示。这样设计是为了方便微软的
CodeView 的使用者。 </span></p>
<p align="left"><span class="p9"> F1 --- 显示一般辅助画面 ( H; ) <br>
F2 --- 在寄存器窗中切换 ( ^WR; )<br>
F3 --- 改变目前原始码的模式 ( ^SRC; ) <br>
F4 --- 恢复屏幕内容 ( ^RS; ) <br>
F5 --- 回到原程序 ( ^X; ) <br>
F6 --- 在命令窗中和程序码窗中切换 ( ^EC; ) <br>
F7 --- 执行到光标所在那行 ( ^HERE; ) <br>
F8 --- 单步执行 ( ^T; ) <br>
F9 --- 在光标所在那行设中断点 ( ^BPX; ) <br>
F10 --- 单步执行 ( ^P; ) <br>
F11 --- 执行到返回地址 ( ^G @SS:SP; ) <br>
F12 --- 显示 Soft-ICE 的版别 ( ^VER; ) </span></p>
<p align="left"><span class="p9">指令前的 ^ 会让这个指令不显示出来。指令后的 ; 则代表按下 Enter 。输入 FKEY
的指令可以显示目前功能键所代表的意义。要使用功能键直接按下功能键即可 ,不需再键入指令。</span></p>
<blockquote>
<p><span class="p9">12 辅助 </span></p>
</blockquote>
<p align="left"><span class="p9"> 利用辅助的指令可以得到有关指令的简单解说、语法和使用例子。要得到辅助的信息,键入: </span></p>
<p align="left"><span class="p9"> ? 或 H --- 显示所有指令和运算式的简短解说 <br>
? 指令 或 H 指令 --- 显示关于指令语法和例子更详细的信息<br>
? 计算式 或 H 计算式 --- 把计算式的结果以 16 、10 进位及 ASCII 码显示出来 </span></p>
<p align="left"><span class="p9"> <font color="#FF3333"><b><font color="#000000">二、如何使用中断点指令</font></b></font>
(初学者如看不懂下面的可先跳过,看看下一节的例题,然后再回过来理解) </span></p>
<p align="left"><span class="p9">1 序言 Soft-ICE</span></p>
<p align="left"><span class="p9"> 具有以往只有硬件调试器才具有的中断点能力。</span></p>
<p align="left"><span class="p9"> 中断点的触发可以由内存某地址的读取、内存范围的读取、程序的执行及端口的存取来达到的。Soft-ICE
赋与每个中断点一个一位的 16 进位号码数( 0 - F ) 。这个中断点号码是当你对中断点做删除、中止、启动、编辑等动作时使用。 </span></p>
<p align="left"><span class="p9"> Soft-ICE 的所有中断点都是 "sticky" 。这个意思是这些中断点在启动后不会自动消失。你必需以
BC 或 BD 指令来消除或关闭它。Soft-ICE 一次可以处理 16 个中断点。同种形态的中断点最多可以有 10 个。但内存地址的中断点 ( BPM
) 因 80386 处理器的寄存器的原故,最多只能设 4 个。 </span></p>
<p align="left"><span class="p9"> 中断点可以设个计数参数。计数参数是中断点真正触发作用前被忽略的次数。 </span></p>
<p align="left"><span class="p9">2 设置中断点 </span></p>
<p align="left"><span class="p9">指令:</span></p>
<p align="left"><span class="p9"> BPM BPMB BPMW BPMD --- 在内存地址被存取或执行时引发中断 <br>
BPR --- 对内存范围设置中断点 <br>
BPIO --- 对 I/O 端口存取时触发中断 <br>
BPINT --- 呼叫插断时触发中断 <br>
BPX --- 设置 / 清除 执行中断点 <br>
CSIP --- CS:IP 范围的检定判断 <br>
BPAND --- 等待复合中断点的发生 <br>
BPM BPMB BPMW BPMD --- 在内存地址被存取或执行时引发中断 </span></p>
<p align="left"><span class="p9">3 处理中断点 </span></p>
<p align="left"><span class="p9">Soft-ICE 提供许多指令来处理中断点。处理类的指令可以用来列出、修改、删除、启动和中止中断点。中断点是以由
0h 到 Fh 的中断点号码来识别的。处理中断点的指令有:</span></p>
<p align="left"><span class="p9"> BD --- 中止中断点 <br>
BE --- 启动中断点<br>
BL --- 列出中断点 <br>
BPE --- 编辑中断点<br>
BPT --- 把中断点当样板<br>
BC --- 清除中断点 </span></p>
<p align="left"><span class="p9"><font color="#FF3333"><b><font color="#000000">三、使用其它指令
</font></b></font></span></p>
<p align="left"><span class="p9">1 显示及编辑类指令</span></p>
<p align="left"><span class="p9"> 指令:</span></p>
<p align="left"><span class="p9"> U --- 反汇编或显示原程序码 <br>
R --- 显示或更改寄存器<br>
MAP --- 显示系统内存分布图 <br>
D --- 用最后一次指定的形式显示内存<br>
DB --- 以字节的形式显示内存 <br>
DW --- 以字的形式显示内存<br>
DD --- 以双字的形式显示内存 <br>
E --- 用最后一次指定的形式编辑内存 <br>
EB --- 以字节的形式编辑内存 <br>
EW --- 以字的形式编辑内存<br>
ED --- 以双字的形式编辑内存 <br>
INT? --- 显示最后一次呼叫的插断号码<br>
? 或 H --- 显示帮助信息<br>
VER --- 显示 Soft-ICE 的版本号码<br>
U --- 反汇编或显示原程序代码 </span></p>
<table width="80%" border="1" cellspacing="0" cellpadding="0" align="center" bgcolor="#99CCFF" bordercolorlight="#99CCFF" bordercolordark="#99CCFF">
<tr>
<td width="82%" class="p8" height="2">Copyright @看雪 2000 All rights reserved
<a href="mailto:toye@126.com">与我联系</a></td>
<td width="10%" class="p9" height="2"><a href="index.htm" tppabs="http://toye.dihou.org/index.htm">返回<br>
首页</a></td>
<td width="8%" class="p8" height="2"><a href="molu.htm" tppabs="http://toye.dihou.org/molu.htm" class="p9">返回<br>
目录</a></td>
</tr>
</table>
<p></p>
<p></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -