實驗1 用機器指令和彙編指令程式設計

2022-06-04 15:27:13 字數 2351 閱讀 7994

一、實驗目的

1. 熟練掌握使用debug工具編寫和除錯x86彙編命令的方法

2. 掌握8086cpu、暫存器、記憶體的基礎知識

3. 理解並掌握記憶體中多位元組資料的存放:小端法

4. 理解並掌握「棧」記憶體空間的特性和使用

5. 掌握指令mov, add, sub, jmp, push, pop的基礎用法

二、實驗準備

1. 複習教材第1~2章內容,完成教材內相關檢測點

2. 複習教材第3章「棧」的知識:棧的特性、暫存器 ss 和 sp、指令 push 和 pop ,完成教材 3.6~3.9 節內的問題 3.6~3.12,檢測點 3.1~3.2

3. 結合教材實驗1(p35)和課程qq群檔案中的文件,學習debug工具用法。

練習debug的使用:

使用debug、退出以及a命令t命令執行

使用常用的r命令,d命令,e命令

三、實驗內容

1. 教材實驗1(p35)

練習教材p35-45「預備知識:debug的使用」,學習debug啟動、退出及常用指令用法; 在練習基礎上,完成「2. 實驗任務」

2. 教材實驗2(p71)r

練習「1.預備知識:debug 的使用」 在練習基礎上,完成「2. 實驗任務」

四、實驗結論

1.教材實驗1(p45)

實驗任務(1)

使用e命令方式寫入指令:

使用a命令方式寫入彙編指令:

實驗任務(2)

三次執行後最終得到ax暫存器為8:

實驗任務(3)

找到日期記錄在fff0:00f5 日期為01/01/92

嘗試修改日期,發現修改失敗,查詢書可知該空間屬於rom的位址空間,屬於唯讀不能寫的位址。

實驗任務(4)

根據書本要求對b810h位址操作,查書可知8000h的記憶體單元的資料會被顯示卡輸入到顯示器上。修改不同的值出現不同的顏色。

2. 教材實驗2結論

教材實驗2(p74)

實驗任務(1)

根據要求**出相應暫存器的值:

實際執**況:

修改資料並檢視

寫入命令並執行:

發現與**一致。

實驗任務(2)

實驗執行過程如下:

思考:

① 前3行彙編指令的功能,特別是,mov sp, 10意味著什麼?初始時棧頂和棧底分別是?

前三行指令通過ax暫存器中轉使得ss:sp為指定的2000:0010。

答:mov sp,10指將10賦值給sp暫存器,說明sp暫存器可以直接用數值賦值(而ss屬於段暫存器不可以)

初始時棧頂和棧底都是0483:fffd

三行執行後棧頂為:2000:0010 棧底為 2000:000e

② 基於單步除錯觀察到的變化,給出你對此的思考及可能原因分析。

答:前三部設定了棧段的位置,後面單步執行結果表面使用t指令執行時將ax的3123,3366分別被壓入棧內,棧頂指標變化為0010,000e,000c

同時使用t指令後發現還未執行push指令時棧段2000:0到2000:f內出現變化,查詢資料和書本可知該情況基於t指令引發cpu執行的中斷過程。

根據書p249,單步中斷引發的過程會使得標誌暫存器入棧,cs,ip入棧,正好與此處0192,0483,010c對應。

彙編實驗1 用機器指令和彙編指令程式設計

1.實驗執行環境 win10系統下的dosbox 2.實驗所用偵錯程式為debug 一 基礎指令 此次實驗中所用到的7條debug命令 r,d,e,u t,a 1.r命令 檢視 改變cpu暫存器的內容 檢視暫存器的值 改變cs ip的值 可見cs,ip的值由上面的073f和0100變成了0000 2...

實驗1 用機器指令和彙編指令程式設計

1.熟練掌握使用debug工具編寫和除錯x86彙編命令的方法 2.掌握8086cpu 暫存器 記憶體的基礎知識 3.理解並掌握記憶體中多位元組資料的存放 小端法 4.理解並掌握 棧 記憶體空間的特性和使用 5.掌握指令mov,add,sub,jmp,push,pop的基礎用法 練習教材p35 45 ...

實驗1 用機器指令和彙編指令程式設計

1 使用e命令將指令輸入記憶體,並用t命令單步執行。使用a命令將指令寫入記憶體,並使用t命令單步執行。2 使用a命令輸入命令,並使用t命令進行單步執行。3 使用d命令查詢記憶體fff00h fffffh,查詢到日期。使用e命令修改後發現並未修改成功。分析原因 位址為c0000h fffffh的記憶體...