?? 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 + -