发信人: liyv.bbs@bbs.cst.sh.cn (小邱), 信区: cnhacker
标 题: 使用soft_ICE 08 使用其它指令(4) (完)
发信站: 生命玄机站 (Mon Sep 7 01:52:52 1998)
转信站: Lilac!ustcnews!cstshnews!lifebbs
§ 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 符号及原始码指令
*** 对不起.... 不会用所以不会翻..... 期待其他高人的大作.... ***
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 = ????
--
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃萧秋水虽脸色苍白,但依然笑问道:“老铁,小邱,看来你们的 ┃
┃武功又有精进!” ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
※ 来源:·生命玄机 bbs.cst.sh.cn·[FROM: 202.127.16.22]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:206.540毫秒