組合語言程式的上機過程

來源:酷知科普網 1.96W

本處文件結合大學階段《微機原理與介面技術》,組合語言也是大學階段重要的計算機語言,希望借實驗說明讓大家更好理解組合語言這一塊。

組合語言程式的上機過程

操作方法

(01)一、 建立組合語言的工作環境為執行組合語言程式至少要在磁碟上建立以下檔案:1、 編輯程式,如2、 彙編程式,如3、 連線程式,如4、 除錯程式,如必要時,還可建立如,等檔案。

組合語言程式的上機過程 第2張

(02)二、在計算機上執行組合語言的步驟1、 用編輯程式建立ASM原始檔,以ASM作為副檔名2、 用匯程式設計序把ASM檔案轉換成OBJ檔案3、 用連線程式把OBJ檔案轉換成可執行檔案4、 在DOS提示符下直接鍵入可執行檔名即可執行該程式

組合語言程式的上機過程 第3張

(03)三、 建立ASM檔案建立ASM檔案的編輯程式可以是DOS自身帶的編輯程式,在DOS提示符下鍵入EDIT命令即可出現EDIT介面,其操作如下:D:>edit源程式輸入完後,以ASM作為副檔名進行儲存,假設所儲存的檔名為:。ASM原始檔的格式1:;定義資料段,如果需要的話,其中segment和ends是一對偽操作,表示段的開始和結束data segment ;資料段開始;定義資料段的主體,如定義變數data ends ;資料段結束;定義附加段,如果需要的話extra segment ;附加段開始;定義附加段的主體,如定義變數extra ends ;附加段結束;定義程式碼段,必須的code segment ;程式碼段開始main proc far ;程式的主體部分,proc和endp這一對偽操作表示一個程式模組的開始和結束assume ds:data, es:extra, cs:code ;assume 偽操作指定某個段分配給哪個段暫存器start: ;程式的入口地址push ds ;儲存原資料段sub ax,ax ;ax暫存器清零,作為資料段0偏移地址push ax ;資料段0偏移地址壓入堆疊中mov ax,datamov ds,ax ;把資料段地址裝入資料段暫存器dsmov ax,extramov es,ax ;把附加段地址裝入附加段暫存器es;自己所要實現的功能原始碼在此新增ret ;程式結束後返回DOSmain endp  ;程式的主體部分結束code ends ;程式碼段結束end start  ;彙編程式的結束,程式在start處開始執行ASM原始檔的格式2:;定義資料段,如果需要的話,其中segment和ends是一對偽操作,表示段的開始和結束data segment ;資料段開始;定義資料段的主體,如定義變數data ends ;資料段結束;定義附加段,如果需要的話extra segment ;附加段開始;定義附加段的主體,如定義變數extra ends ;附加段結束;定義程式碼段,必須的code segment ;程式碼段開始main proc far ;程式的主體部分,proc和endp這一對偽操作表示一個程式模組的開始和結束assume ds:data, es:extra, cs:code ;assume 偽操作指定某個段分配給哪個段暫存器start: ;程式的入口地址mov ax,datamov ds,ax ;把資料段地址裝入資料段暫存器dsmov ax,extramov es,ax ;把附加段地址裝入附加段暫存器es;自己所要實現的功能原始碼在此新增mov ax,4c00h ;程式結束後返回DOSint 21hmain endp  ;程式的主體部分結束code ends ;程式碼段結束end start  ;彙編程式的結束,程式在start處開始執行該步以及以下幾步在電腦上一邊講解,一邊演示給同學們看。

組合語言程式的上機過程 第4張
組合語言程式的上機過程 第5張
組合語言程式的上機過程 第6張
組合語言程式的上機過程 第7張
組合語言程式的上機過程 第8張

(04)四、 用MASM程式產生OBJ檔案原始檔建立後,就要用匯程式設計序對原始檔彙編,彙編後產生二進位制目標檔案(以OBJ作為副檔名),其操作如下:D:>masm 彙編程式輸入的是ASM檔案,其輸出檔案可以是3個,第一個是OBJ檔案,這是我們彙編的主要目的。第二個是LIST檔案,稱為列表檔案,這個檔案列出源程式和機器語言程式清單,並給出符號表,因而可使程式除錯更加方便,這個檔案可有可無,如果不需要,則可對[]直接按回車鍵。LST清單的最後部分為段名錶和符號表,表中分別給出段名、段的大小及有關屬性,以及使用者定義的符號名、型別和屬性。第三個是CRF檔案,這個檔案用來產生交叉引用表REF,對於一般程式不需要建立此檔案。為了建立交叉引用表,必須呼叫CREF程式。至此,彙編過程已經完成了。但是,彙編程式還有另一個重要功能,可以給出源程式的出錯資訊。警告資訊(warning errors)指出彙編程式所認為的一般性錯誤,嚴重警告錯誤(severe errors)則指出彙編程式認為已使彙編程式無法進行正確彙編的錯誤。除給出錯誤的個數外,彙編程式還給出出錯資訊,包括出錯的行和錯誤型別。當然彙編程式只能給出程式中的語法錯誤,至於程式的演算法或編制程式中的其他錯誤則程式的除錯時去解決。

組合語言程式的上機過程 第9張

(05)五、 用LINK程式產生EXE檔案在DOS提示符下鍵入LINK命令即可,具體的操作如下:D:>link INK程式有兩個輸入檔案OBJ和LIB。OBJ是我們需要連線的目標檔案,LIB則是程式中需要用到的庫檔案,如果程式中沒有用到庫檔案,則直接按回車健。LINK程式有兩個輸出檔案EXE和MAP檔案,EXE檔案就是可執行檔案,MAP檔案是連線程式的列表檔案,又稱為連線映像,它給出每個段在儲存器中的分配情況。

組合語言程式的上機過程 第10張
組合語言程式的上機過程 第11張

(06)六、 程式的執行在DOS提示符下直接鍵入可執行的檔名即可,具體的操作如下:D:>ex

組合語言程式的上機過程 第12張

(07)七、 舉例下面這個原始碼的功能是在螢幕上顯示一個字串“This is my first ASM program.”。data segmentstring db 'This is my first ASM program.',13,10,'$'  ;字串以’$’符號結尾,以單引號括起來data endscode segmentmain proc farassume cs:code,ds:data ;assume 偽操作指定某個段分配給哪個段暫存器,但它不能把段地址裝入段暫存器中start: ;程式的入口地址push ds ;save old data segmentsub ax,ax ;ax暫存器清零,作為資料段0偏移地址push ax ;零偏移地址入棧mov ax,datamov ds,ax ;把資料段地址裝入資料段暫存器dslea dx,string ;把字串首地址裝入dx暫存器,或寫成mov dx, offset stringmov ah,9 ;DOS功能呼叫,在螢幕上顯示字串int 21h ;DOS中斷ret ;return to DOSmain endpcode endsend start ;彙編的結束,程式在此執行

組合語言程式的上機過程 第13張
熱門標籤