一、實驗目的
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的記憶體...