實驗三 程式設計,編譯,連線,跟蹤
實驗內容:
(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。