匯編語言程序設計實驗報告二


南京信息工程大學實驗報告 實驗名稱 實驗 2 用機器指令和匯編指令編程 實驗日期 12.21
學院 計軟院
專業 計算機科學與技術
年級 2017級
班次 5
姓名 陳奕明
學號 20171308194

一、實驗目的
1. 熟練掌握使用debug工具編寫和調試匯編命令的方法 2. 理解並掌握內存中多字節數據的存放 3. 理解並掌握「棧」內存空間的特性和使用 4. 理解並掌握8086匯編指令mov, add, sub, push, pop的用法

二、實驗准備
1. 復習第 3 章「棧」的知識:棧的特性、寄存器 SS 和 SP、指令 push 和 pop
2. 完成教材 3.6~3.9 節內的問題 3.6~3.12,檢測點 3.1~3.2 3. 結合教材實驗1 (P35)及公郵文件中心→實驗下的 “實驗1輔助文檔.pdf”復習debug 工具用法。

三、實驗內容

1. 教材實驗2(P71)
(1)練習「1.預備知識:Debug 的使用」
(2)在練習基礎上,完成「2. 實驗任務」 補充: 為了便於驗證實驗結果,對「2. 實驗任務」中的(1)做如下兩點調整:
① 在使用 a 命令輸入指令調試前,使用 e 命令將內存單元 0021:0 ~0021:7 連續 8 個字節數據修改為 30H, 31H, 32H, 33H,34H,35H,36H,37H
② 將 P74 實驗任務(1)中第 1行的 mov ax, ffff → 改為 mov ax, 0021 實驗前,請理論上分析指令執行后各個填空處的值,並記錄下來。 實驗時,通過在 debug 中調試,觀察實驗結果與理論分析是否一致,如不一致,嘗試 發現問題所在,並分析原因。

四、實驗結論
此部分書寫內容: 1. 教材實驗2中「2. 實驗任務」(P74)

實驗任務(1):
① 截圖記錄:使用 e 命令修改 0021:0~0021:f 數據,及修改后查看是否正確寫入的操作

數據輸入完成,查詢結果正確。

 

② 截圖記錄:使用 a 命令輸入的 p74 指令

指令輸入完成。
③ 截圖記錄:每一行指令單步調試(如單步調試步驟多,可分屏截圖,但不要有遺漏)

STEP1

STEP2

STEP3

STEP4
④ P74 中指令執行后各個寄存器填空結果,以在文檔中手工標注或手機拍照截圖方式 復制在文檔中。

對於③單步調試的觀察,與理論上分析的結果進行比較,檢驗是否一致。 如不一致,分析查找原因。

結果一致:數據出棧和入棧的規則為入棧時 sp=sp-2,出棧時 sp=sp+2。
實驗任務(2):
① 截圖記錄圖 3.19 中使用 a命令輸入的 7 行指令,使用 e 命令修改 2000:0~2000:f 的值,及修改后查看的部分 

② 單步調試每一行匯編指令的截圖。且每一條指令單步調試后,都使用 d 命令查看 2000:0~2000:f 的值。觀察每一條指令執行后相關寄存器值的變化,及 2000:0~2000:f 單 元值的變化,並思考原因。 以文字方式陳述: ① 前3行匯編指令的功能,特別是,mov sp, 10意味着什么?初始時棧頂和棧底分別 是? ② 基於單步調試觀察到的變化,給出你對此的思考及可能原因分析。

截圖如下:

1、從mov ax,3123 這條指令開始 2000:0 ~ 2000:f 中的值就發生了沒有意料到的變化,出現了不需要的數字;2、在棧頂所在位置的的內存單元中存放的始終是AX 中的值即3123;
五、總結與體會
棧,是一種計算機領域極其常見的一種數據結構,而通過這次實驗,我覺得算是了解到了棧這一種數據結構在系統內存中最基層的變化原理,感覺受益匪淺,尤其需要注意學習的是棧頂在有數據變動的SP的值的變化規則,即入棧時 sp=sp-2,出棧時 sp=sp+2。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM