1. 程式人生 > >實驗三 程式設計,編譯,連線,跟蹤

實驗三 程式設計,編譯,連線,跟蹤

實驗內容:

(1)將下面的程式儲存為t1.asm檔案,將其生成可執行檔案t1.exe

assume  cs:codesg

codesg  segment

      mov  ax , 2000H

      mov  ss , ax

      mov  sp , 0

      add  sp , 10

      pop  ax

      pop  bx

      push  ax

      push  bx

      pop  ax

      pop  bx

      mov  ax , 4c00H

      int  21H

codesg  ends

end

具體操作如下:

a.在Edit中編輯程式,然後儲存檔案D:t1.asm後,退出Edit

 

b.對程式進行編譯

 

c.對程式進行連線和執行

 

 

(2)用Debug跟蹤t1.exe的執行過程,寫出每一步執行後,相關暫存器中的內容和棧頂的內容。

具體操作如下:

a.Debug將程式從t1.exe中載入入記憶體,然後用r命令檢視一下暫存器的設定情況再用u命令檢視一下其他指令

 

b.然後開始進行跟蹤,用t命令單步執行程式中的每一條指令,並觀察每條指令的執行結果,直到得到int 21

 

c.最後,用p命令執行int 21

 

 

 (3)PSP的頭兩個位元組1是CD 20,用Debug載入t1.exe,檢視PSP的內容。

具體操作如下:

注:最後是使用q命令退出

 

 

實驗總結:

1.彙編程式從寫入到執行的過程:程式設計(Edit)~ t1.asm ~ 編譯(masm)~ t1.ojb ~ 連線(link)~ t1.exe ~ 載入(command)~ 記憶體中的程式 ~ 執行(CPU)

2.在DOS中用“debug t1.exe”執行Debug對t1.exe進行跟蹤時,程式載入順序是:command載入Debug,Debug載入t1.exe

   返回順序是:從t1.exe中的程式返回到Debug,從Debug返回到command