用機器指令和匯編指令編程(修改版)
- 實驗名稱 用機器指令和匯編指令編程(1)
- 實驗日期 2018.10.22
- 學院:計軟院
- 專業:計算機科學與技術
- 年級:2017級
- 班次:5班
- 姓名:陳奕明
- 學號 20171308194
一、實驗目的
1. 掌握使用debug工具編寫和調試匯編命令的方法
2. 掌握第1-2章所學的關於CPU、寄存器、內存的基礎知識
3. 掌握第1-2章涉及的幾條指令mov, add, sub, jmp的用法
二、實驗準備
1. 復習教材第1~2章內容,完成教材內相關檢測點
2. 結合教材實驗1 (P35)及公郵文件中心→實驗下的 “實驗1輔助文檔.pdf”學習debug 工具用法。
三、實驗內容
1. 教材實驗1(P35)
(1)練習教材 P35-45「預備知識:Debug 的使用」,學習 debug 啟動、退出及常用指 令用法;
(2)在練習基礎上,完成「2. 實驗任務」
Tips: 「2. 實驗任務」中每一項任務都可以在教材前序內容或練習中找到提示線索。建議先 完成「二、實驗準備」中要求的內容及實驗內容的第(1)項,這樣完成「2. 實驗任務」時會 很容易完成。比如: 實驗任務(1)可參照教材P41-43的(7)完成; 實驗任務(2)與教材 P20的檢測點(2)相似且相關;
四、實驗結論
任務一:
把如下的程序段寫入內存,逐條執行,觀察每條指令執行後CPU中相關寄存器中內容的變化。
首先使用e指令按題目要求的寫入機器碼指令(隨便找了個地址1000:0):
到達文本輸入限制後沒辦法,只能先執行了...執行完後,看一下已經寫入數據的內存單元的情況...嗯...數據是對的
繼續輸入並執行,執行完全部代碼後,使用u指令反匯編機器碼命令:
跟書上寫明的匯編命令相符。
然後輸入匯編命令:
中間又把1和字母l分不清了,出了個error。。。
命令輸入完畢,-t命令單步執行:
和上課聽講的一樣,對指定的寄存器進行數據的改寫操作。
後面的命令行有點多就用-t+數字=執行往後的幾條命令全部執行了:
最後的結果:
任務二:將下面三條指令寫入從2000:0開始的內存單元中,利用這3條指令計算2的8次方。
mov ax,1
add ax,ax
jmp 2000:0003
解題思路:2的三次方就是8,再看下題目給我們的三條命令。執行完第一條後ax的值為1,執行完第二條命令後ax的值為2,那麽就需要我們再執行這條語句7次了,所以就要使用jmp命令,通過改變CS和IP寄存器的值來使得CPU繼續反復執行這條命令,所以往下又寫了七句jmp 2000:0003使得CPU再反復執行其次該語句,從而使得AX中的值變為二的八次方。。。。這是最終結果。
最終實驗截圖
第三題
PC主板上的ROM中寫有一個生產日期,在內存FFF00H~FFFFFH的某幾個單元中,請找到這個生產日期並且試圖改變它。
實驗截圖如下:
試圖修改但是失敗了,看來是因為ROM的關系,無法修改。
第四題
向內存B8100H開始的單元中填寫數據,如:
-e B810:0000 01 01 02 02 03 03 04 04
這是進行了一系列實驗過後的結果:
有這麽些結果和感悟:
再向寄存器寫入數據時,每多兩個字節的數據就會產生一個新的顏色區域,而且寫入區域的CS碼每產生一次進位,就會使得產生的色塊區域產生換行,最終得到了這麽些結果。
五、實驗心得與感悟
這次實驗主要實驗了R命令(用於查看、修改寄存器中的內容)、D命令(查看內存中的內容)、E命令(修改內存中的內容)、U命令(反匯編命令)、T命令(執行代碼行命令)
第四題經過這麽多次的實驗測試,看來這一段內存空間是顯存。
我的電腦屏幕運行Dosbox窗口極小,最後查到按Alt+Enter可以進入全屏模式進行操作。
當初安裝Dosbox時經歷過,千萬別把程序裝在系統盤,否則會有權限問題。
暫時就這樣把,肯定還有許多要學的,要完善的,好好學習匯編!!
2018-10-27 21:28:25於宿
用機器指令和匯編指令編程(修改版)