彙編語言第三版(王爽著)(第四章.第一個程序)

4.1 一個源程序從寫出到執行的過程

編寫彙編源程序-對源程序進行編譯鏈接-執行程序

4.2 源程序

assume cs:codesg

codesg segment

       mov ax,0123h
       mov bx,0456h
       add ax,bx
       add ax,ax
       
       mov ax,4c00h
       int 21h
       
codesg ends
end

1.僞指令
段名 segment…段名 ends 必須成對使用,功能是定義一個段
end 是一個彙編程序的結束標誌,不要混亂了ends
assume 這條僞指令的含義爲假設,它假設某一段寄存器和程序中的某一個用segment…ends定義的段相連。
例如上面的程序 第一排的意思就是:
用assume cs:codesg將用代碼段codesg和CPU中的段寄存器cs聯繫起來
2.源程序中的“程序”
最終由計算機執行、處理的指令或數據(除去僞指令)
3.標號
除了彙編指令和僞指令,還有標號,例如codesg。一個標號指代了一個地址。
這個標號最終將被編譯、鏈接程序處理爲一個段的段地址。
4.程序的結構
定義一個段 段名 segment…段名 ends
在段中寫入彙編指令 mov。。。
指出程序在哪裏結束 end
當做什麼段來使用 assume
5.程序返回
一個程序P2在可執行文件中,則必須有一個正在運行的程序P1,將P2從可執行文件中加載入內存後,將CPU的控制權交給P2,P2才得以運行。
而當P2運行完畢後,應該將CPU的控制權交還給使他得以運行的程序P1 這個過程爲:程序返回
mov ax,4c00h
int 21h
這兩條指令所實現的功能就是程序返回
6.語法錯誤和邏輯錯誤
被編譯器發現的都是語法錯誤。
運行時發生的錯誤時邏輯錯誤。邏輯錯誤不易被發現。

4.3編輯源程序

4.4編譯

在編譯的過程中,我們提供了一個輸出,即源程序文件。最多可以得到三個輸出:

目標文件obj 列表文件 List 交叉引用文件crf 目標文件是我們最終要得到的結果,而其他兩個只是中間結果。

4.5連接

連接的作用
當程序很大時,可以將他分爲多個源程序文件來編譯,每個源程序編譯成爲目標文件後,再用連接程序將它們連接到一起,生成一個可執行文件;
程序中調用了某個庫文件中的子程序,需要將這個庫文件和該程序生成的目標文件連接到一起,生成一個可執行文件。

4.6 以簡化的方式進行編譯和鏈接

在命令行的結尾加上分好就行了

4.7 exe的執行

程序運行了,只是從屏幕上看不到任何運行結果。

4.8 誰將可執行文件中的程序裝載進入內存並使它運行?

在DOS運行exe時,是正在運行的command,將exe中的程序加載入內存
command設置CPU的CS:IP指向程序的第一條指令,從而執行
程序執行結束後,返回到command中,CPU繼續執行command。

4.9 程序執行過程的跟蹤

程序加載的順序是:command-debug-exe
返回:exe-debug-command

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章