彙編語言程序的上機過程
本處文檔結合大學階段《微機原理與接口技術》,彙編語言也是大學階段重要的計算機語言,希望借實驗說明讓大家更好理解彙編語言這一塊。
操作方法
(01)一、 建立彙編語言的工作環境爲執行彙編語言程序至少要在磁盤上建立以下檔案:1、 編輯程序,如2、 彙編程序,如3、 連接程序,如4、 調試程序,如必要時,還可建立如,等檔案。
(02)二、在計算機上執行彙編語言的步驟1、 用編輯程序建立ASM源檔案,以ASM作爲副檔名2、 用匯編程序把ASM檔案轉換成OBJ檔案3、 用連接程序把OBJ檔案轉換成可執行檔案4、 在DOS提示符下直接鍵入可執行檔案名即可執行該程序
(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處開始執行該步以及以下幾步在電腦上一邊講解,一邊演示給同學們看。
(04)四、 用MASM程序產生OBJ檔案源檔案建立後,就要用匯編程序對源檔案彙編,彙編後產生二進制目標檔案(以OBJ作爲副檔名),其操作如下:D:>masm 彙編程序輸入的是ASM檔案,其輸出檔案可以是3個,第一個是OBJ檔案,這是我們彙編的主要目的。第二個是LIST檔案,稱爲列表檔案,這個檔案列出源程序和機器語言程序清單,並給出符號表,因而可使程序調試更加方便,這個檔案可有可無,如果不需要,則可對[]直接按回車鍵。LST清單的最後部分爲段名錶和符號表,表中分別給出段名、段的大小及有關屬性,以及用戶定義的符號名、類型和屬性。第三個是CRF檔案,這個檔案用來產生交叉引用表REF,對於一般程序不需要建立此檔案。爲了建立交叉引用表,必須調用CREF程序。至此,彙編過程已經完成了。但是,彙編程序還有另一個重要功能,可以給出源程序的出錯資訊。警告資訊(warning errors)指出彙編程序所認爲的一般性錯誤,嚴重警告錯誤(severe errors)則指出彙編程序認爲已使彙編程序無法進行正確彙編的錯誤。除給出錯誤的個數外,彙編程序還給出出錯資訊,包括出錯的行和錯誤類型。當然彙編程序只能給出程序中的語法錯誤,至於程序的算法或編制程序中的其他錯誤則程序的調試時去解決。
(05)五、 用LINK程序產生EXE檔案在DOS提示符下鍵入LINK命令即可,具體的操作如下:D:>link INK程序有兩個輸入檔案OBJ和LIB。OBJ是我們需要連接的目標檔案,LIB則是程序中需要用到的庫檔案,如果程序中沒有用到庫檔案,則直接按回車健。LINK程序有兩個輸出檔案EXE和MAP檔案,EXE檔案就是可執行檔案,MAP檔案是連接程序的列表檔案,又稱爲連接映像,它給出每個段在存儲器中的分配情況。
(06)六、 程序的執行在DOS提示符下直接鍵入可執行的檔案名即可,具體的操作如下:D:>ex
(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 ;彙編的結束,程序在此執行
-
一個比特幣值多少人民幣?2019突破55285元(最高137177元)
導語:比特幣是一種加密的虛擬數字貨幣,在2017年12月17日曾達到歷史最高價19850美元,但是在2017年9月4日,央行表示禁止虛擬貨幣的交易,並且比特幣在中國是沒有法律上的貨幣地位,不過據國外報價表明,在2019年5月14日,比特幣的價格已經再創新高,突破了8000美元,也就是人民幣...
-
純淨水可以養魚嗎
(01)純淨水基本上是去除了大部分雜質和化學物質的水。儘管純淨水對於一些特定類型的魚可能不太適合,但在某些情況下,可以使用純淨水來養魚。(02)以下是一些需要考慮的因素:1.魚種選擇:有些魚種對水質要求非常嚴格,可能需要特定類型的水質才能生存。在選擇要養的魚之前,了...
-
斯金納箱的恐怖之處 斯金納箱說明了什麼(人性)
導語:斯金納箱是由斯金納在1938年發明的,將一隻很餓的小白鼠放置在箱子裏面,最開始它會比較隨意的摸索,不經意間按壓到了槓桿發現有食物掉入,然後逐漸發現規律,它就會找到獲得食物的妙招,算是比較真實的模擬了賭博,下面探祕志和大家一起了解一下。斯金納箱的恐怖之處所...
-
菠蘿蜜粘液的去除技巧
(01)您好!菠蘿蜜粘液的去除技巧有很多,以下是一些常見的方法:1.使用鹽:將適量的食用鹽倒在菠蘿蜜粘液的區域上,然後用乾淨的抹布或紙巾擦拭即可。(02)2.使用醋或檸檬汁:將醋或檸檬汁倒在菠蘿蜜粘液的區域上,靜置幾分鐘後用抹布或紙巾擦拭即可。3.使用洗潔精:將洗潔精倒在菠...