網站首頁 健康小知識 母嬰教育 起名 運動知識 職場理財 情感生活 綠色生活 遊戲數碼 美容 特色美食 愛好

彙編語言程序的上機過程

欄目: 學習交流 / 發佈於: / 人氣:1.93W

本處文檔結合大學階段《微機原理與接口技術》,彙編語言也是大學階段重要的計算機語言,希望借實驗説明讓大家更好理解彙編語言這一塊。

彙編語言程序的上機過程

操作方法

(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張