1. 程式人生 > >彙編實驗三 程式設計·編譯·連結·跟蹤

彙編實驗三 程式設計·編譯·連結·跟蹤

1. 練習內容:

練習一:

  • 編寫彙編源程式t1.asm, 源程式程式碼如圖1-1所示。在這裡插入圖片描述

經過一系列的編寫啊,除錯啊等等,截圖如下: 在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

發現有兩個輸出,為3和6。

  • 練習2: 將 line4和line9種暫存器dl 的值分別修改為 0~9 中任何一個數字,重新彙編→ 連線→執行,觀察結果的變化。 將line 4 dl的值改為7,將line 9 dl的值改為4。因為截圖有的重複,就不一一截取了。
  • 練習3:用debug對生成的可執行檔案 t1.exe 進行除錯。

① 使用 r 命令檢視。觀察暫存器 cx 的值是 多少;觀察暫存器 ds 和 cs 的值是多 少,它們之間是否滿足關係(cs)=(ds)+10H?

② PSP(程式段字首)的頭兩個位元組是CD 20, 用debug檢視PSP的內容,驗證是否 如此。

③ 使用 u 命令對 t1.exe 進行反彙編,觀察反彙編得到的原始碼。

④ 使用 t 命令和 p 命令(遇到 int 命令時,用 p 命令)單步除錯,觀察結果。

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

  1. 改變:輸出變成7和4。
  2. ①如圖可知:CX的值為0016,DS的值為075A,CS的值為076A,兩者間關係滿足(cs)=(ds)+10H。 在這裡插入圖片描述

在這裡插入圖片描述

②③④:用t或p命令逐條執行,每次執行p命令後都有輸出值。

練習二:

  • 第1步,編寫彙編源程式t2.asm,源程式程式碼如圖所示。 line6-7 相當於 mov [0], 0433h line9-10 相當於 mov [2], 0436h 至於為什麼這樣使用兩條指令,而不直接簡化寫成上面的形式,有兩個原因。其中一個是方便以後迴圈;另一個原因,留待第 5 章再解釋說明。暫時,先這樣使用。

在這裡插入圖片描述

  • 第 2 步,對源程式 t2.asm 進行彙編、連線、執行、除錯 (1). 對 t2.asm 進行彙編、連線後,得到可執行檔案 t2.exe。執行 t2.exe,觀察程式執行結果,驗證是否在螢幕左上方出現紅色的數值 36。 注*)經測試,有些平臺在 dosbox 下執行這個程式時有些問題,如果螢幕左上方沒有輸出結果,請執行程式 t2.exe 前,先輸入 cls 命令清空一下螢幕,然後再執行 t2.exe。 (2). 如果(1)結果得到驗證,重新開啟t2.asm,嘗試將原始碼中line7的0433h→0432h, line10 的 0436h→0439h, 然後重新彙編、連線,得到可執行檔案 t2.exe。使用 cls 命令清屏後,再次觀察程式執行結果。 (3). 如果(1)結果得到驗證,重新開啟 t2.asm,嘗試將原始碼中 line7 的 0433h→0333h, line10 的 0436h→0336h, 然後重新彙編、連線,得到可執行檔案 t2.exe。使用 cls 命令清 屏後,再次觀察程式執行結果。

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

emmm,可以看出來,隨著指令程式碼的改變,相應的輸出也發生了改變。

  • 延伸思考和分析 (1)把練習 2 和實驗 1「實驗任務(4)」,放到一起看,觀察並思考這兩個實驗任務之間 的關聯,結合實驗 1「實驗任務(4)」以及練習 2 中每行彙編指令的功能,理解練習 2 中程 序 t2.asm 實現的功能; (2)把練習 2 和練習 1 放到一起看,結合兩個程式各自的原始碼以及執行結果,觀察 並思考這兩個程式在實現數值顯示時不同的做法。
  • 思考: (1)在程式t2.exe中,常數值中bh中存放的資料控制著輸出的顏色,bl中存放的資料控制著輸出的值。

(2) 練習一和練習二輸出的形式不同:一是用命令形式輸出,二是在debug環境下用g命令顯示器輸出。

  1. command,debug,t1.exe之間是什麼關係? command呼叫debug,debug呼叫t1;t1結束時返回到debug,debug結束時返回到command;command呼叫debug,debug呼叫t1;t1結束時返回到debug,debug結束時返回到command;

  2. debug除錯常用的命令? t–執行當前命令,cs:ip指向下一條指令t–執行當前命令,cs:ip指向下一條指令 當遇到int 21指令時,用p執行,返回到debug 當debug使用完畢要退出回到command,使用q

  3. PSP的作用是什麼? DOS用來和程式進行通訊,t1.exe在作業系統上編寫並執行彙編程式的,作業系統管理著記憶體,它也管理著編譯連結生成的彙編程式DOS用來和程式進行通訊,t1.exe在作業系統上編寫並執行彙編程式的,作業系統管理著記憶體,它也管理著編譯連結生成的彙編程式