1.一個彙編語言程式從寫出到最終執行的簡要過程?
第一步:編寫彙編源程式
第二步:對源程式進行編譯連接配接(結果是:産生了一個可在作業系統中運作的可執行檔案)
第三步:執行可執行檔案中的程式
2.在彙編語言源程式中,包含兩種指令,一種是彙編指令,一種是僞指令。
彙編指令是有對應的機器碼的指令,可以被編譯為機器指令,最終為CPU所執行。
僞指令沒有對應的機器指令,最終不能被CPU所執行。僞指令是由編譯器來執行的指令,編譯器根據僞指令來進行相關的編譯工作。
3.僞指令的種類:
①.XXX segment XXX ends
②.end
③.assume
4.程式的結構
①定義一個段,名稱為abc
abc segment
:
abc end
②在這個段中寫入彙編指令,來實作我們的任務
abc segment
mov ax,2
add ax,ax
add ax,ax
abc end
③然後,要指出程式在何處結束
abc segment
mov ax,2
add ax,ax
add ax,ax
abc end
end
④abc當作代碼段來用,是以,應該将abc和cs聯系起來
assume cs:abc
abc segment
mov ax,2
add ax,ax
add ax,ax
abc end
end
5.程式傳回
mov ax,4c00H
int 21H
這兩條指令所實作的功能就是程式傳回,在目前階段,我們不必去了解int 21H的含義和mov ax,4c00H的含義。
6.編譯源程式和連接配接成可執行檔案
用到的編譯器是:微軟的masm5.0 masm.exe
用到的連接配接器是:微軟的Overlay Linker3.60 Link.exe
編譯源程式.asm,生成的目标檔案.obj,中間會生成中間檔案.lst和.crf,可以不用生成這些檔案。
連接配接目标檔案.obj,生成可以執行檔案.exe,中間會生成中間檔案.map和.lib,也可以不用生成這些檔案。
7.程式執行過程的跟蹤
在dos下,執行指令:
debug 檔案名稱.exe 在debug下運作,并跟蹤程式執行過程
-r 可以檢視,把.exe程式加載進記憶體後,哥哥寄存器的設定情況
-u 可以以彙編代碼的形式檢視,記憶體中各個位址中存放的機器碼
-t 可以單步執行,并跟蹤程式的運作情況
8. 程式被裝入記憶體的什麼地方?
①程式加載後,ds中存放着程式所在記憶體區的段位址,這個記憶體區的偏移位址為0,則程式所在的記憶體區的位址為ds:0
②這個記憶體區的前256個位元組中存放的是PSP,DOS用來和程式進行通信。從256位元組處向後的空間存放的是程式。
從ds中可以得到PSP的段位址SA,PSP的偏移位址為0,則實體位址為SA*16+0。