微型計算機實驗指導書 英真時代

2023-01-06 02:24:05 字數 4951 閱讀 4555

微型計算機技術

實驗指導書

計算機與資訊學院

2023年6月

一、實驗目的

(1) 熟悉組合語言整合實驗環境asm lab的基本使用方法。

(2) 學會檢視8086cpu各暫存器的狀態以及記憶體中的資料。

(3) 了解通過直接修改視訊記憶體來修改顯示內容的方法。

二、實驗內容

2.1 啟動asm lab

在安裝有asm lab的計算機上,可以使用兩種不同的方法來啟動asm lab:

在桌面上雙擊「engintime asm lab」圖示。或者

點選「開始」選單,在「程式」中的「engintime asm lab」中選擇「engintime asm lab」。

2.2 註冊使用者並登入

asm lab每次啟動後都會彈出乙個「登入」對話方塊,可以進行以下操作:

使用已有使用者進行登入

讀者可以在「登入」對話方塊中填寫已有的學號、姓名、密碼完成登入。登入成功後,asm lab的標題欄會顯示出讀者用來登入的學號和姓名。

註冊新使用者

讀者可以點選「註冊」按鈕,在彈出的「註冊」視窗中填寫基本資訊、所屬機構、密碼、密保問題完成註冊,並自動登入。

2.3 新建實驗專案

新建乙個實驗專案的步驟如下:

(1) 在「檔案」選單中選擇「新建」,然後單擊「專案」,開啟「新建專案」對話方塊。

(2) 在「新建專案」對話方塊中,選擇專案模板「lab001」。注意,其他模板會在後面的實驗題目中使用。

(3) 在「名稱」中輸入新專案使用的資料夾名稱「lab001」。

(4) 在「位置」中輸入新專案儲存在磁碟上的位置「c:\asmlab」。

(5) 點選「確定」按鈕。

新建完畢後, asm lab 會自動開啟這個新建的專案。在「專案管理器」視窗中(如圖1-1所示),根節點是專案節點,各個子節點是專案包含的資料夾或者檔案。

提示:右鍵點選「專案管理器」視窗中的專案節點,選擇快捷選單中的「開啟所在的資料夾」,即可使用「windows資源管理器」開啟專案所在的資料夾。

圖1-1: 開啟專案後的「專案管理器」視窗

2.4 閱讀實驗源**

該實驗包含了乙個彙編原始檔「下面對這這個檔案的主要內容、結構和作用進行說明。

在「專案管理器」視窗中雙擊「開啟此檔案。此檔案主要包含了以下內容:

提示:請認真理解這部分內容,其他實驗題目中的源**檔案也嚴格遵守這些約定,如無特殊情況將不再進行如此詳細的說明。

2.5 生成專案

使用「生成專案」功能將會自動完成匯程式設計序的編譯和鏈結過程。此時可以在「輸出」視窗中檢視生成過程輸出的提示資訊。

在「生成」選單中選擇「生成專案」(快捷鍵是f7)。

在專案生成過程中,「輸出」視窗會實時顯示生成的進度和結果。如果源**中不包含語法錯誤,會在生成的最後階段提示生成成功,如圖1-2所示:

圖1-2:生成專案成功後的「輸出」視窗

生成專案的過程,如圖1-3所示:

圖1-3:生成專案的過程

以本實驗為例,成功生成專案後,缺省會在「c:\asmlab\ lab001\debug" 目錄下生成 「檔案和 「檔案。

2.6 解決語法錯誤

如果在源**中存在語法錯誤,在生成專案的過程中,「輸出」視窗會顯示相應的錯誤資訊(包括錯誤所在檔案的路徑,錯誤在檔案中的位置,以及錯誤原因),並在生成的最後階段提示生成失敗。此時,在「輸出」視窗中雙擊錯誤資訊所在的行,asm lab會使用源**編輯器自動開啟錯誤所在的檔案,並定位到錯誤所在的**行。

可以按照下面的步驟進行練習:

(1) 在源**檔案中故意輸入一些錯誤的**,例如將「mov」修改為錯誤的「mv」。

(2) 生成專案。

(3) 在「輸出」視窗中雙擊錯誤資訊來定位存在錯誤的**行,並將**修改正確。

(4) 重複步驟(2)、(3),直到專案生成成功。

2.7除錯匯程式設計序

斷點新增斷點後,當匯程式設計序執行到斷點所在行時就會中斷執行,此時可觀察處理器的狀態以及記憶體中的資料,幫助理解匯程式設計序的行為。兩種新增斷點的方法。

(1) 將游標定位到需要新增斷點的**行,單擊滑鼠右鍵,選擇選單中的「插入/刪除斷點」,此時在左側的灰色區域會顯示出斷點。如圖1-4所示。

圖1-4:新增斷點

若**行存在斷點,將游標定位到該行,單擊滑鼠右鍵,選擇選單中的「插入/刪除斷點」,可將該行斷點刪除。

(2) 點選**行所對應的左側灰色區域,可直接新增斷點。當該行存在斷點時,單擊斷點後可刪除斷點。

啟動除錯

在生成專案成功後,在「除錯」選單中選擇「啟動除錯」(快捷鍵是f5)。如果匯程式設計序中有斷點,就會在斷點處中斷執行,如圖1-5所示,黃色箭頭指向接下來要執行的彙編**。此時可以按f5繼續除錯,也可以使用其他除錯功能。

如果沒有斷點,就會在程式執行完畢後結束除錯。

圖1-5:程式在斷點處中斷執行

單步除錯

選擇「除錯」選單中的「逐語句」或「逐過程」,會在匯程式設計序的第一條指令處中斷執行,如圖1-6所示。接下來可以繼續使用單步除錯功能跟蹤程式的執行過程,直到程式結束。也可以選擇「除錯」選單中的「停止除錯」,結束除錯。

圖1-6:在第一條指令處中斷執行

每當程式命中斷點後中斷執行,或者進行單步除錯而中斷執行時,asm lab提供的「暫存器」視窗、「棧」視窗、「反彙編」視窗、「記憶體」視窗、「自動變數」視窗和「自動記憶體」視窗會顯示暫存器和記憶體的內容和變化,方便理解匯程式設計序的行為。

「暫存器」視窗

在「暫存器」視窗中可以實時檢視各個暫存器的十六進製制的值。可使用其工具欄中的按鈕,手動修改各個暫存器的值(注意,手動修改暫存器的值可能會造成不可**的行為而使程式崩潰)。當暫存器的值發生變化時,會使用紅色高亮顯示。

如圖1-7所示。

圖1-7:「暫存器」視窗

「棧」視窗

在「棧」視窗顯示了記憶體中的棧資料。左側是棧的段基址ss和偏移值,右側是十六進製制的記憶體值,其中ss:sp總是指向棧頂。當棧資料發生變化時,會用紅色高亮顯示,如圖1-8所示。

圖1-8:「棧」視窗

「反彙編」視窗

在「反彙編」視窗中顯示了指令的反彙編**,如圖1-9所示。使用「反彙編」視窗工具欄中的按鈕可以檢視任意一處記憶體的反彙編**。「反彙編」視窗顯示的內容包括:

(1) 黃色箭頭表示cs:ip指向的指令。

(2) 指令所在記憶體的段位址和偏移。

(3) 指令的機器碼。

(4) 反彙編後的指令。

圖1-9:「反彙編」視窗

「記憶體」視窗

在」記憶體」視窗中可以檢視記憶體塊中的資料。使用其工具欄上的按鈕可以新增需要檢視的記憶體塊,當有多個記憶體塊時,可以使用下拉列表選擇想要檢視的記憶體塊。還可以使用工具欄上的按鈕修改記憶體中的資料。

如果記憶體值發生了變化,會使用紅色高亮顯示,如圖1-10所示。左側是每行記憶體的起始位址,包括段位址和偏移,其中偏移總是16的倍數,也就是說每行顯示16個位元組的值。右邊是每個記憶體單元中的資料對應的可顯示的ascii字元。

圖1-10:「記憶體」視窗

「自動變數」視窗

「自動變數」視窗顯示匯程式設計序中定義的變數的記憶體值。當有多個變數時,可以使用其工具欄上的下拉列表選擇想要檢視的變數。如果變數的值發生了變化,會使用紅色高亮顯示,如圖1-11所示。

圖1-11:「自動變數」視窗

「自動記憶體」視窗

「自動記憶體」視窗顯示當前指令的反彙編**和其訪問的記憶體資料,以及上條指令的反彙編**和其訪問的記憶體資料。注意,當指令沒有訪問記憶體而只是訪問了暫存器時,也就沒有記憶體資料需要顯示了。此視窗可以使讀者在單步除錯匯程式設計序時,非常方便的觀察到指令執行前的記憶體值,以及指令執行後的記憶體值。

當指令修改了記憶體值時,會使用紅色高亮顯示,如圖1-12所示。

圖1-12:「自動記憶體」視窗

2.9執行匯程式設計序

生成專案成功後,在asm lab中可以選擇「除錯」選單中的「開始執行」(快捷鍵是ctrl+f5),可以執行dos應用程式。程式執行完畢後會在dos視窗中顯示資訊「program terminated normally」,表示程式正常結束。或者:

通過前面的詳細介紹,相信已經對asm lab的各種基本操作和重要的工具視窗有了一定的了解。接下來通過幾個簡單的匯程式設計序,實際體驗如何操作asm lab並觀察相關資訊。

2.10 檢視暫存器的值

使用單步除錯功能逐行執行任務(一)中的彙編指令,每執行一行彙編指令後,仔細觀察「暫存器」視窗中各個暫存器的值。

2.11 在指定記憶體單元處寫入指令

通過下面這個練習,認真體會指令也是儲存在記憶體中的資料,以及cs:ip指示了cpu當前將要執行指令的位址。

(1) 按f10啟動單步除錯,此時可在「反彙編」視窗中檢視任務(二)中兩條指令的機器碼分別為「b80100」和「03c0」。

(2) 在「記憶體」視窗中點選「修改記憶體」按鈕,設定基址為「2000」,偏移為0,值為「b8 01 00 03 c0」,點選確定。

(3) 在「暫存器」視窗中點選「cs:ip」按鈕,設定cs為「2000」,偏移為0,點選確定。此時,在「反彙編」視窗中會顯示2000:

0000處指令的反彙編,可以看到其與任務(二)中的兩條指令相同。

(4) 按f10單步除錯,在「反彙編」視窗中可以看到執行的指令為「mov ax, 0001」。

(5) 再次按f10單步除錯,當指令「add ax, ax」執行完畢後,ax=0002。

(6) 在「暫存器」視窗中點選「cs:ip」按鈕,修改偏移為「0003」,點選確定,使cs:ip重新指向「add ax, ax」指令。

(7) 按f10單步除錯,指令「add ax, ax」執行完畢後,ax=0004。

(8) 重複上述操作步驟6、7,當指令「add ax, ax」執行8次後,ax=0100h,完成2的8次方計算。

2.12 修改視訊記憶體

通過下面這個練習,認真體會修改視訊記憶體中的資料,就能修改螢幕中顯示的內容。

(1) 啟動單步除錯。

(2) 在「記憶體」視窗中點選「修改記憶體按鈕」,設定基址為「b810」,偏移為「0」資料為「31 01 32 01 33 01 41 01 42 01 43 01」,點選「確定」。此時可在dos視窗中檢視修改後的效果。可觀察看螢幕中顯示為藍色的字串「123abc」。

實驗一微型計算機結構認識

一 實驗目的 1 了解計算機組成原理。2 認識微型計算機的主要組成部件。二 實驗環境 atx主機板,機箱,軟碟機,硬碟,光碟機,cpu,記憶體條,電源,顯示卡,音效卡,網絡卡,鍵盤,滑鼠,顯示器等。三 實驗內容 步驟及要求 1 識別微型計算機的主要組成部件。主機板 cpu 軟碟機 硬碟 光碟機 記憶...

微型計算機原理實驗報告1250312019郝耀峰六

實驗報告單 課程名稱 微機原理與接 術 學號 1250312025 姓名 郝耀峰 班級 計科3班 院系 計算機學院 專業 軟體工程 實驗室 s4411 同組人 高雨 陽樂 譚俊 蔡橋利 組號輔導老師 李劍 實驗專案編號 8103101706 實驗專案名稱 雙機並行通訊下 日期2014.12.17成績...

計算機測控系統實驗指導書

南京工業大學自動化學院測控系 二o o五年九月 前言本課程為測控技術與儀器專業的專業課,它是計算機技術與測控技術 電子技術相結合的產物,是學生從事本專業的科研 生產工作必備的理論基礎。通過此課程的學習,使學生了解微機化測控儀器和系統的整機原理,掌握它的總體設計思想,使學生能從過去學過的微型計算機 感...