SoftICE使用說明(七)

   §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 = ???? 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章