彙編語言(王爽)第四章第一個程序

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

第一步:編寫彙編源程序;第二步:對源程序進行編譯和鏈接:編譯器進行編譯,生成目標文件,鏈接器對目標文件進行鏈接,生成可執行文件;第三步:執行可執行文件。操作系統

4.2源程序debug

彙編語言源程序中有兩種指令:一種是彙編指令,一種是僞指令。彙編指令對應有機器碼,能夠被編譯爲機器指令;而僞指令是由編譯器來執行的指令,是輔助編譯工做的指令,並不轉化成機器碼,更不會被執行。內存

程序返回:一個程序要被執行,首先要被加載到內存,而後將CPU控制權交給該程序。好比對於單任務操做系統DOS下,若P1正在執行,要執行P2的話,則P1先要將P2加載到內存,將CPU控制權交給P2,而後P2開始運行,P1暫停。當P2運行結束後,須要將CPU控制權交還給P1,這個交還稱之爲「程序返回」。彙編指令裏的「mov ax,4c00H/int 21H"實現的功能就是程序返回。編譯器

與結束相關的指令:編譯

目的                   相關指令        指令性質      指令執行者bug

通知編譯器一個段結束   段名 ends      僞指令      編譯時編譯器執行程序

通知編譯器程序結束    end         僞指令      編譯時編譯器執行通信

程序返回       mov ax,4c00H int 21h    彙編指令       執行時由CPU執行  數據

4.9程序執行過程

經過debug可對程序進行單步跟蹤,程序加載進入內存後,cx寄存器中存放的是該程序的長度。程序的第一條指令地址即在CS:IP。

在DOS系統中可執行文件的加載過程以下:先找到一段足夠容量的內存空閒區域,設其起始地址爲SA:0000;在該區域前256個內存單元中建立PSP數據區(這個區主要是DOS系統用來和該程序進行通訊);在這256個內存單元以後開始存入程序。

因此,各區域分配以下:

內存空閒區域:SA:0000~;

PSP區:SA:0000~SA:00FF;

程序裝載區:(SA+10):0000~;(這裏爲什麼不能夠是:SA:0100?).

程序加載完畢後,DS設置爲SA,CX設置爲程序長度。由上可知,CS=SA+10H=DS+10H;

相關文章
相關標籤/搜索