⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 盗版 (2001年4月4日).txt

📁 delphi 编程技巧
💻 TXT
📖 第 1 页 / 共 5 页
字号:

〔例〕 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -