DEBUG DOS中的Debug:[是為DOS提供的有力的偵錯,跟蹤程式執行,檢查系統資料的工具程式,它是在字元介面下以單字元命令方式工作。要很好地使用它必須具備一定的彙編程式設計和硬體基本知識的能力,當然,它為組合語言程式設計師提供了有效的除錯手段,它的功能包括以下幾個方面。?1. 直接輸入、更改、跟蹤、執行匯鋂栽闖絛潁華2. 觀察作業系統的內容;?3. 檢視ROM BIOS的內容;?4. 觀察更改RAM內部的設定值;?5. 以扇區或檔案的方式讀寫軟盤資料。?在DEBUG中地址用段地址與段內地址來表示,而段地址可以明確地指出來,也可以用一個段指示器(段暫存器)來代表,用段暫存器表示時,其段地址就是此暫存器的內含值:?如:用段地址和段內地址表示FOFF:0100?用段暫存器和段內地址表示CSF:0100←CS指向F000?下面列出了常用命令用法。-A 地址 從指定地址開始編寫小彙編程式,按兩個回車鍵結束編輯 -U 地址 從指定地址開始反彙編32位元組的機器指令,預設地址則從上一U命令繼續 -D 始址 終址 以16進位制/Asc字元對照方式顯示指定記憶體範圍的資料,每行顯示10H個位元組 -E 地址 值表 用給出的值表(空格分隔)替換指定地址開始的記憶體單元,例:-E 100 "v" 1F "hello" -N 檔名 為後續的L/W命令約定所操作的檔名 -L 地址 將N命令所指定檔案的內容讀入到指定記憶體位置。另,邏輯卷扇區直接讀:-L 地址 邏卷號 起始邏扇號 扇數 -W 地址 將BX-CX個位元組的記憶體資料寫入N命令指定的檔案中。另,邏輯卷扇區直接寫:-W 地址 邏卷號 起始邏扇號 扇數 -R 暫存器名 顯示並允許修改指定暫存器的值 -G=始址 終址 執行指定記憶體中的機器指令程式 -T=地址 單步執行機器指令,預設地址則從上一T命令繼續。另,繼續跟蹤m條指令:-T m 讀取c:卷的引導扇區,並儲存到Boot.1檔案中,並簡單分析載入程式的前面幾條指令:-L 1000 2 0 1-N boot.1-R bx ;輸入0000-R cx ;輸入0200-W 1000-U 1000讀取第一個硬碟上的主引導扇區,並儲存到MB.1檔案中,在螢幕上顯示硬碟分割槽表資料:-A 100yyyy:0100 mov dx,0080yyyy:01xx mov cx,0001yyyy:01xx mov ax,yyyy yyyy:01xx mov es,ax yyyy:01xx mov bx,1000yyyy:01xx mov ax,0201yyyy:01xx int 13yyyy:01zz nop-G=yyyy:0100 01zz-N mb.1-R bx ;輸入0000-R cx ;輸入0200-W 1000-D 11be 11ffDebugger"Debugger"這個詞按它的英文字面意思來講是這樣一種“裝置”(-er),這種裝置可以“消除”(De-)“系統中的缺陷”(bug)。然而事實上,迄今為止我們經常使用到的"Debugger"只是用來幫助我們進行Debug的工具,"Debugger"本身不能自動完成"Debug"。我們可以回想一下我們是如何進行Debug的,在進行Debug的過程中,我們透過Debugger來完成以下工作:(1)監視“Debug物件”的狀態;(2)控制“Debug物件”的執行;這些工作可以為“發現Debug物件中存在的問題”以及“對解決問題方案的檢驗”提供有用的資訊。監控工作有時只需要由軟體就可以完成,有時不僅需要軟體支援,還需要硬體的支援。Debugger除了被用來Debug,還被用來幫助我們理解“Debug的物件”內部結構,因為我們用到的Debugger能夠完成對“Debug物件”的監控工作,在監控的過程中可以獲取“Debug物件”動態特徵的資訊,這對我們理解其結構是非常有用的。
DEBUG DOS中的Debug:[是為DOS提供的有力的偵錯,跟蹤程式執行,檢查系統資料的工具程式,它是在字元介面下以單字元命令方式工作。要很好地使用它必須具備一定的彙編程式設計和硬體基本知識的能力,當然,它為組合語言程式設計師提供了有效的除錯手段,它的功能包括以下幾個方面。?1. 直接輸入、更改、跟蹤、執行匯鋂栽闖絛潁華2. 觀察作業系統的內容;?3. 檢視ROM BIOS的內容;?4. 觀察更改RAM內部的設定值;?5. 以扇區或檔案的方式讀寫軟盤資料。?在DEBUG中地址用段地址與段內地址來表示,而段地址可以明確地指出來,也可以用一個段指示器(段暫存器)來代表,用段暫存器表示時,其段地址就是此暫存器的內含值:?如:用段地址和段內地址表示FOFF:0100?用段暫存器和段內地址表示CSF:0100←CS指向F000?下面列出了常用命令用法。-A 地址 從指定地址開始編寫小彙編程式,按兩個回車鍵結束編輯 -U 地址 從指定地址開始反彙編32位元組的機器指令,預設地址則從上一U命令繼續 -D 始址 終址 以16進位制/Asc字元對照方式顯示指定記憶體範圍的資料,每行顯示10H個位元組 -E 地址 值表 用給出的值表(空格分隔)替換指定地址開始的記憶體單元,例:-E 100 "v" 1F "hello" -N 檔名 為後續的L/W命令約定所操作的檔名 -L 地址 將N命令所指定檔案的內容讀入到指定記憶體位置。另,邏輯卷扇區直接讀:-L 地址 邏卷號 起始邏扇號 扇數 -W 地址 將BX-CX個位元組的記憶體資料寫入N命令指定的檔案中。另,邏輯卷扇區直接寫:-W 地址 邏卷號 起始邏扇號 扇數 -R 暫存器名 顯示並允許修改指定暫存器的值 -G=始址 終址 執行指定記憶體中的機器指令程式 -T=地址 單步執行機器指令,預設地址則從上一T命令繼續。另,繼續跟蹤m條指令:-T m 讀取c:卷的引導扇區,並儲存到Boot.1檔案中,並簡單分析載入程式的前面幾條指令:-L 1000 2 0 1-N boot.1-R bx ;輸入0000-R cx ;輸入0200-W 1000-U 1000讀取第一個硬碟上的主引導扇區,並儲存到MB.1檔案中,在螢幕上顯示硬碟分割槽表資料:-A 100yyyy:0100 mov dx,0080yyyy:01xx mov cx,0001yyyy:01xx mov ax,yyyy yyyy:01xx mov es,ax yyyy:01xx mov bx,1000yyyy:01xx mov ax,0201yyyy:01xx int 13yyyy:01zz nop-G=yyyy:0100 01zz-N mb.1-R bx ;輸入0000-R cx ;輸入0200-W 1000-D 11be 11ffDebugger"Debugger"這個詞按它的英文字面意思來講是這樣一種“裝置”(-er),這種裝置可以“消除”(De-)“系統中的缺陷”(bug)。然而事實上,迄今為止我們經常使用到的"Debugger"只是用來幫助我們進行Debug的工具,"Debugger"本身不能自動完成"Debug"。我們可以回想一下我們是如何進行Debug的,在進行Debug的過程中,我們透過Debugger來完成以下工作:(1)監視“Debug物件”的狀態;(2)控制“Debug物件”的執行;這些工作可以為“發現Debug物件中存在的問題”以及“對解決問題方案的檢驗”提供有用的資訊。監控工作有時只需要由軟體就可以完成,有時不僅需要軟體支援,還需要硬體的支援。Debugger除了被用來Debug,還被用來幫助我們理解“Debug的物件”內部結構,因為我們用到的Debugger能夠完成對“Debug物件”的監控工作,在監控的過程中可以獲取“Debug物件”動態特徵的資訊,這對我們理解其結構是非常有用的。