個人總結的微機原理學習要點

2021-10-20 01:40:24 字數 4551 閱讀 3396

dos的提示符下,可如下鍵入debug啟動除錯程式:

debug[路徑\檔名][引數1][引數2]

debug後可以不帶檔名,僅執行debug程式;需要時,再用n和l命令調入被除錯程式。命令中可以帶有被除錯程式的檔名,則執行debug的同時,還將指定的程式調入主存;引數1/2是被除錯程式所需要的引數。

在debug程式調入後,根據有無被除錯程式及其型別相應設定暫存器組的內容,發出debug的提示符「-」,此時就可用debug命令來除錯程式。

執行debug程式時,如果不帶被除錯程式,則所有段暫存器值相等,都指向當前可用的主存段;除sp之外的通用暫存器都設定為0,而sp指示當前堆疊頂在這個段的尾部;ip=0100h;狀態標誌都是清0狀態。

執行debug程式時,如果帶入的被除錯程式副檔名不是.exe,則bx.cx包含被除錯檔案大小的位元組數(bx為高16位),其他同不帶被除錯程式的情況。

執行debug程式時,如果帶入的被除錯程式副檔名是.exe,則需要重新定位。此時,cs:

ip和ss:sp根據被除錯程式確定,分別指向**段和堆疊段。ds=es指向當前可用的主存段,bx.

cx包含被除錯檔案大小的位元組數(bx為高16位),其他通用暫存器為0,狀態標誌都是清0狀態。

debug的命令都是乙個字母,後跟乙個或多個引數: 字母[引數]

命令的使用中注意:

①字母不分大小寫;

②只使用16進製制數,沒有字尾字母;

③分隔符(空格或逗號)只在兩個數值之間是必須的,命令和引數間可無分隔符;

④每個命令只有按了回車鍵後才有效,可以用ctrl+break中止命令的執行;

⑤命令如果不符合debug的規則,則將以「error」提示,並用「^」指示錯誤位置。

許多命令的引數是主存邏輯位址,形式是「段基位址:偏移位址」。其中,段基位址可以是段暫存器或數值;偏移位址是數值。

如果不輸入段位址,則採用預設值,可以是預設段暫存器值。如果沒有提供偏移位址,則通常就是當前偏移位址。

對主存操作的命令還支援位址範圍這種引數,它的形式是:「開始位址結束位址」(結束位址不能具有段位址),或者是:「開始位址l位元組長度」。

顯示命令d

d(dump)命令顯示主存單元的內容,它的格式如下(注意分號後的部分用於解釋命令功能,不是命令本身):

d [位址];顯示當前或指定開始位址的主存內容

d [範圍];顯示指定範圍的主存內容

例如,顯示當前(接著上乙個d命令顯示的最後乙個位址)主存內容:

左邊部分是主存邏輯位址,中間是連續16個位元組的主存內容(16進製制數,以位元組為單位),右邊部分是這16個位元組內容的ascii字元顯示,不可顯示字元用點「.」表示。乙個d命令僅顯示「8行×16個位元組」(80列顯示模式)內容。

再如: -d 100 ;顯示資料段100h開始的主存單元

-d cs:0 ;顯示**段的主存內容

-d2f0 l20;顯示ds:2f0h開始的20h個主存資料

e(enter)命令用於修改主存內容,它有兩種格式:

e位址 ;格式1,修改指定位址的內容

e位址資料表;格式2,用資料表的資料修改指定位址的內容

格式1是逐個單元相繼修改的方法。例如,鍵入「eds:100」,debug顯示原來內容,使用者可以直接輸入新資料,然後按空格鍵顯示下乙個單元的內容,或者按「-」鍵顯示上乙個單元的內容;不需要修改可以直接按空格或「-」鍵;這樣,使用者可以不斷修改相繼單元的內容,直到用回車鍵結束該命令為止。

格式2可以一次修改多個單元,例如:

-eds:100f3`xyz`8d;用f3/`x`/`y`/`z`/8d這5個資料替代ds:0100~0104的原來內容

f(fill)命令用於對乙個主存區域填寫內容,同時改寫原來的內容,其格式為:

f範圍資料表

該命令用資料表的資料寫入指定範圍的主存。如果資料個數超過指定的範圍,則忽略多出的項;如果資料個數小於指定的範圍,則重複使用這些資料,直到填滿指定範圍。

r(register)命令用於顯示和修改處理器的暫存器,它有三種格式。

r ;格式1,顯示所有暫存器內容和標誌位狀態

例如,當我們剛進入debug時,就可以執行該命令,顯示示例如下:

其中,前兩行給出所有暫存器的值,包括各個標誌狀態。最後一行給出了當前cs:ip處的指令;由於這是乙個涉及資料的指令,這一行的最後還給出相應單元的內容。

r暫存器名;格式2,顯示和修改指定暫存器

例如,鍵入「rax」,debug給出當前ax內容,冒號後用於輸入新資料,如不修改則按enter鍵。

rf ;格式3,顯示和修改標誌位

debug將顯示當前各個標誌位的狀態。顯示的符號及其狀態如表f1.1所示,使用者只要輸入這些符號就可以修改對應的標誌狀態,鍵入的順序可以任意。

彙編命令a(assemble)用於將輸入的彙編指令彙編成為機器**儲存於主存。

a[位址];從指定位址開始彙編指令

a命令中如果沒有指定位址,則接著上乙個a命令的最後乙個單元開始;若還沒有使用過a命令,則從當前cs:ip開始。

輸入a命令後,就可以輸入8086指令,debug將它們彙編成機器**,相繼地存放在指定位址開始的儲存區中,記住最後要輸入乙個回車結束a命令。進行彙編的步驟如下:

①輸入彙編命令a[位址],按回車。debug提示位址,等待你輸入新指令;

②輸入彙編指令,按回車;

③如上繼續輸入彙編指令,直到輸入所有指令;

④不輸入內容就按回車,結束彙編,返回debug的提示符狀態。

a命令支援標準的8086(和8087浮點)指令系統以及組合語言語句格式,但要注意以下一些規則:

所有輸入的數值都是16進製制數;

段超越指令需要在相應指令前,單獨一行輸入;

段間(遠)返回的助記符要使用retf;

a命令也支援最常用的兩個偽指令db和dw。

反彙編命令u(unassemble)將主存內容按照機器**形成彙編指令顯示:

u[位址];從指定位址開始,反彙編32個位元組(80列顯示模式)

u範圍;對指定範圍的主存內容進行反彙編

u命令中如果沒有指定位址,則接著上乙個u命令的最後乙個單元開始;若還沒有使用過u命令,則從當前cs:ip開始。

螢幕顯示的左邊是主存邏輯位址,中間是該指令的機器**,而右邊則是對應的指令彙編格式。

執行命令g(go)從指定位址處開始執行程式,直到遇到斷點或者程式正常結束。

g[=位址][斷點位址1,斷點位址2,...,斷點位址10]

g命令等號後的位址指定程式段執行的起始位址,如不指定則從當前的cs:ip開始執行。斷點位址如果只有偏移位址,則預設是**段cs;斷點可以沒有,但最多只能有10個。

程式遇到斷點(實際上就是斷點中斷指令int3),停止執行,並顯示當前所有暫存器和標誌位的內容、以及下一條將要執行的指令(顯示內容同r命令),以便觀察程式執行到此的情況。程式正常結束,將顯示「programterminatednormally」。

注意,g命令以及後面的t和p命令要指向正確的指令**,否則會出現不可**的結果,例如「宕機」。

跟蹤命令t(trace),也稱為單步命令,每執行一條指令就顯示執行結果,使程式設計師可以細緻地觀察程式的執**況。

t[=位址] ;逐條指令跟蹤

t[=位址][數值];多條指令跟蹤

從指定位址起執行一條或數值引數指定條數的指令後停下來,每條指令執行後都要顯示所有暫存器和標誌位的值以及下一條指令。如未指定位址則從當前的cs:ip開始執行。

注意給出的執行位址前有乙個等號,否則會被認為是被跟蹤指令的條數(數值)。

t命令逐條指令執行程式,遇到子程式(call)或中斷呼叫(intn)指令也不例外,也會進入到子程式或中斷服務程式當中執行。

繼續命令p(proceed)類似t命令,逐條執行指令、顯示結果。但是當遇到子程式呼叫、中斷功能呼叫和迴圈指令等時,不在子程式、中斷服務程式或迴圈體中單步執行,而是直接執行完成子程式、中斷服務程式或迴圈體,然後顯示結果。

當不需要除錯子程式、中斷服務程式或迴圈程式段時,要應用p命令,而不是t命令。

p[=位址][數值]

繼續命令p(proceed)類似t命令,逐條執行指令、顯示結果。但是當遇到子程式呼叫、中斷功能呼叫和迴圈指令等時,不在子程式、中斷服務程式或迴圈體中單步執行,而是直接執行完成子程式、中斷服務程式或迴圈體,然後顯示結果。

當不需要除錯子程式、中斷服務程式或迴圈程式段時,要應用p命令,而不是t命令。

p[=位址][數值]

命名命令n(name)把乙個或兩個可以包含路徑的檔案全名存入debug中,以便在其後用l或w命令把檔案裝入或存檔。

n檔名1[,檔名2]

裝入命令l(load)將磁碟中的檔案或扇區內容裝載到主存中。

l[位址] ;格式1:裝入由n命令指定的檔案

格式1的l命令裝載乙個檔案到給定的主存位址處。

l位址驅動器扇區號扇區數;格式2:裝入指定磁碟扇區範圍的內容

格式2的l命令裝載磁碟的若干扇區(最多80h)到給定的主存位址處;預設段位址是cs。其中,0表示a盤,1表示b盤,2表示c盤,……。

寫盤命令w(write)主存內容寫入磁碟的檔案或扇區中,與l命令相反。

格式1的w命令將指定開始位址的資料寫入乙個檔案(這個檔案應該已經用n命令命名);如未指定位址則從cs:100開始。要寫入檔案的位元組數應先放入bx(高字)和cx(低字)中。

如果採用這個w命令儲存你的可執行程式,它的副檔名應是com;它不能寫入具有exe和hex副檔名的檔案。

微機原理學習心得

本學期的微機原理課程即將要結束,以下是關於微機這門課程的心得體會 初學 微機原理 時,感覺摸不著頭緒。面對著眾多的術語 概念及原理性的問題不知道該如何下手。在了解課程的特點後,我發現,應該以微機的整機概念為突破口,在如何建立整體概念上下功夫。麻雀雖小,五臟俱全 可以通過學習乙個模型機的組成和指令執行...

自動控制原理學習總結

班級 09自動化2班姓名 朱猛學號 0905071015 自動控制原理是自動控制理論的基礎,其主要內容包括 自動控制系統的基本組成和結構 自動控制系統的效能指標,自動控制系統的型別 連續 離散 線性 非線性等 及特點 自動控制系統的分析 時域法 頻域法等 和設計方法等。控制 control 是指為了...

學習管理學原理的收穫與體會

去年我們選擇了工程管理,因為我們的選擇,因為我們的志願,管理我們從此結緣,可能只是現在,可能是日後的分分秒秒,不管如何既然有了緣分,那就讓緣分加緣分,讓他成為我們的好幫手。記得老師說過,而且總是提醒我們,咱們是學管裡的做事要有條理 想事情要有方向與良好的思路,聽別人說話不要感情用事,要用自己的理智好...