第11章匯編程序語言設(shè)計_第1頁
第11章匯編程序語言設(shè)計_第2頁
第11章匯編程序語言設(shè)計_第3頁
第11章匯編程序語言設(shè)計_第4頁
第11章匯編程序語言設(shè)計_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1第十一章第十一章 匯編語言程序的開發(fā)匯編語言程序的開發(fā)第一節(jié)第一節(jié) 匯編語言程序的開發(fā)過程匯編語言程序的開發(fā)過程開始開始編輯程序編輯程序源程序源程序文件文件匯編(匯編(MASM)語法有錯?語法有錯?目標程序目標程序文件文件連接(連接(LINK)可執(zhí)行可執(zhí)行文件文件調(diào)試(調(diào)試(DEBUG)程序正確?程序正確?結(jié)束結(jié)束YYNN.OBJ.ASM.EXE.MAP.LST.CRF2第二節(jié)第二節(jié) 編輯編輯編輯就是將源程序輸入到計算機中的過程。編輯就是將源程序輸入到計算機中的過程。編輯工具軟件很多,只要能夠以編輯工具軟件很多,只要能夠以ASCII碼格式保存文碼格式保存文件的編輯程序都可以使用。常用的編輯程

2、序有:寫字件的編輯程序都可以使用。常用的編輯程序有:寫字板、記事本、板、記事本、 WORD等等。等等。注意注意:在很多的編輯程序中,當文件編輯輸入完成后,:在很多的編輯程序中,當文件編輯輸入完成后,可以用多種存儲格式保存。但對于匯編語言源程序,可以用多種存儲格式保存。但對于匯編語言源程序,必須使用必須使用ASCII格式,即純文本格式進行格式,即純文本格式進行 存儲。存儲。3第三節(jié)第三節(jié) 匯編匯編匯編就是把用匯編語言編寫的源程序翻譯成機器語言的匯編就是把用匯編語言編寫的源程序翻譯成機器語言的目標程序。目標程序。MASM稱為宏匯編程序,它包含有宏功能的處理,是稱為宏匯編程序,它包含有宏功能的處理,

3、是一個常用的匯編程序。一個常用的匯編程序。匯編語言源程序經(jīng)匯編語言源程序經(jīng)MASM匯編后,可以產(chǎn)生匯編后,可以產(chǎn)生3個文件:個文件:目標文件目標文件(.OBJ)、列表文件、列表文件(.LST)、交叉引用文件、交叉引用文件(.CRF)。4一、一、MASMMASM的操作的操作有兩種調(diào)用有兩種調(diào)用MASMMASM對匯編語言源程序進行匯編的方法:對匯編語言源程序進行匯編的方法:1、提示應答方式、提示應答方式在在DOSDOS操作系統(tǒng)提示符下鍵入操作系統(tǒng)提示符下鍵入MASMMASM回車,或直接從回車,或直接從WINDOWSWINDOWS操作系統(tǒng)中,雙擊操作系統(tǒng)中,雙擊MASM.exeMASM.exe文件。

4、文件。系統(tǒng)在顯示版本號后,接著依次顯示提示信息,并等待系統(tǒng)在顯示版本號后,接著依次顯示提示信息,并等待用戶的輸入。按照提示信息,鍵入相應的文件名,并按用戶的輸入。按照提示信息,鍵入相應的文件名,并按回車。如果默認系統(tǒng)給定的選擇,則只需要按回車鍵?;剀?。如果默認系統(tǒng)給定的選擇,則只需要按回車鍵。例如:例如:Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp.1981-1985,1987,Allrights reservedSource filename .ASM: EXAMPLEObject filenam

5、e EXAMPLE:Source listing NUL.LST: Cross-reference NUL.CRF:5在結(jié)束提示應答后,在結(jié)束提示應答后,MASMMASM就對源程序進行掃描和語法檢就對源程序進行掃描和語法檢查。在沒有嚴重語法錯誤的情況下,將生成查。在沒有嚴重語法錯誤的情況下,將生成.OBJ.OBJ文件。文件。若有語法錯誤將顯示錯誤信息。若有語法錯誤將顯示錯誤信息。如果在系統(tǒng)顯示的提示信息后,輸入了分號如果在系統(tǒng)顯示的提示信息后,輸入了分號“;”,則表示后面的所有提示行都確認使用默認選擇,并不則表示后面的所有提示行都確認使用默認選擇,并不再顯示。再顯示。Source filena

6、me .ASM: EXAMPLE;例如:例如:62. 2. 命令行方式命令行方式命令行方式是指在命令行方式是指在DOSDOS狀態(tài)下,將執(zhí)行宏匯編狀態(tài)下,將執(zhí)行宏匯編MASMMASM程序時程序時所需要的所有文件名按照指定的格式,輸入在一個命令所需要的所有文件名按照指定的格式,輸入在一個命令行中。常用的命令格式為:行中。常用的命令格式為:MASM , OBJfile ,LSTfile ,CRFfile ; (1 1)命令行格式中文件名的順序應嚴格與命令格式指定的)命令行格式中文件名的順序應嚴格與命令格式指定的順序一致順序一致。(2 2)如果希望生成的目標文件、列表文件或交叉引用文件)如果希望生成的

7、目標文件、列表文件或交叉引用文件與源程序文件同名(擴展名不同),則可以不給出文件名,與源程序文件同名(擴展名不同),則可以不給出文件名,只需要在對應的位置輸入逗號。只需要在對應的位置輸入逗號。(3 3)如果在指定某文件后,直接鍵入分號)如果在指定某文件后,直接鍵入分號“;”,則表明,則表明命令結(jié)束,其后都選定默認文件名。命令結(jié)束,其后都選定默認文件名。7例如:例如:C:MASM MASM EXAMPLE, , , 它表示對源程序它表示對源程序EXAMPLE.ASMEXAMPLE.ASM進行匯編,并按照默認約定進行匯編,并按照默認約定生成目標文件生成目標文件EXAMPLE.OBJEXAMPLE.

8、OBJ,列表文件,列表文件EXMAPLE.LST EXMAPLE.LST 和交和交叉引用文件叉引用文件EXAMPLE.CRFEXAMPLE.CRF。C:MASM MASM EXAMPLE, ,它表示對源程序它表示對源程序EXAMPLE.ASMEXAMPLE.ASM進行匯編,并按照默認約定進行匯編,并按照默認約定生成目標文件生成目標文件EXAMPLE.OBJEXAMPLE.OBJ,列表文件,列表文件EXMAPLE.LSTEXMAPLE.LST,但不,但不生成交叉引用文件。生成交叉引用文件。8第四節(jié)第四節(jié) 連接連接 由匯編程序生成的目標程序是不能直接運行的,必須將由匯編程序生成的目標程序是不能直接

9、運行的,必須將目標文件進行連接后,生成一個可執(zhí)行文件(目標文件進行連接后,生成一個可執(zhí)行文件(.EXE.EXE),才),才能運行該程序。能運行該程序。 連接程序連接程序LINK.EXELINK.EXE能夠把一個或多個獨立的目標文件能夠把一個或多個獨立的目標文件和定義在庫文件(和定義在庫文件(.LIB.LIB)中的子程序與變量,連接裝配成)中的子程序與變量,連接裝配成一個可重定位的可執(zhí)行文件(一個可重定位的可執(zhí)行文件(.EXE.EXE) 在連接過程中,除了生成可執(zhí)行文件(在連接過程中,除了生成可執(zhí)行文件(.EXE.EXE)外,)外,還可以根據(jù)用戶的指定,生成相應的內(nèi)存映像文件還可以根據(jù)用戶的指定

10、,生成相應的內(nèi)存映像文件(.MAP)(.MAP)9一、一、LINKLINK的操作的操作LINKLINK的使用與的使用與MASMMASM類似,也有提示應答方式和命令行兩種類似,也有提示應答方式和命令行兩種使用方式。使用方式。1 1、提示應答方式、提示應答方式在在DOSDOS操作系統(tǒng)提示符下鍵入操作系統(tǒng)提示符下鍵入LINKLINK回車,或直接從回車,或直接從WINDOWSWINDOWS操作系統(tǒng)中,雙擊操作系統(tǒng)中,雙擊LINK.EXELINK.EXE文件。文件。系統(tǒng)將依次顯示目標模塊文件名、可執(zhí)行文件名、映像系統(tǒng)將依次顯示目標模塊文件名、可執(zhí)行文件名、映像文件名和庫文件名等提示信息。文件名和庫文件名

11、等提示信息。C:MASMLINKMicrosoft (R) Corp. Overlay Linker Version 3.60Copyright (C) Microsoft Corp. 1983-1987,All rights reservedObject Modules .OBJ:EXAMPLERun file EXAMPLE.EXE: List file NUL.MAP: Libraries .LIB: 10對于多個目標文件的連接,輸入文件名時,文件名之間對于多個目標文件的連接,輸入文件名時,文件名之間使用加號使用加號“+”+”。例如:。例如:Object Modules .OBJ:fil

12、e1+file2+file32、命令行方式、命令行方式LINK的命令行方式格式為:的命令行方式格式為:LINK OBJfiles , EXEfile , MAPfile ,Libraries Options;例如:例如:C:MASM LINK EXAMPLE; 在連接中,可能因某種原因而導致錯誤的發(fā)生。這時應根據(jù)錯在連接中,可能因某種原因而導致錯誤的發(fā)生。這時應根據(jù)錯誤信息顯示,確定發(fā)生錯誤的原因,并進行修改。然后再重新誤信息顯示,確定發(fā)生錯誤的原因,并進行修改。然后再重新匯編、連接,直到正確第完成連接操作。匯編、連接,直到正確第完成連接操作。11二、內(nèi)存映像文件二、內(nèi)存映像文件內(nèi)存映像文件是

13、在連接目標文件時,如果指定了相應的內(nèi)存映像文件是在連接目標文件時,如果指定了相應的選擇項,而生成的。它的擴展名為選擇項,而生成的。它的擴展名為MAP。內(nèi)存映像文件中包含了程序中定義的段的起始地址、結(jié)束內(nèi)存映像文件中包含了程序中定義的段的起始地址、結(jié)束地址、長度、段名和類別名。地址、長度、段名和類別名。下面是一個示例:下面是一個示例:Start Stop Length Name Class00000H 00011H 00012H DATA DATA00020H 0005FH 00040H STACK STACK00060H 00077H 00018H CODE CODE在調(diào)試較大的程序時,使用在

14、調(diào)試較大的程序時,使用MAP文件中的相關(guān)信息文件中的相關(guān)信息將會給調(diào)試工作帶來很大的幫助。將會給調(diào)試工作帶來很大的幫助。12第五節(jié)第五節(jié) 調(diào)試與運行調(diào)試與運行調(diào)試的主要任務就是檢查和修改程序中的錯誤。調(diào)試的主要任務就是檢查和修改程序中的錯誤。程序中的錯誤可分為兩類:語法錯誤和邏輯錯誤程序中的錯誤可分為兩類:語法錯誤和邏輯錯誤語法錯誤在程序的匯編和連接過程中都會被發(fā)現(xiàn)。而語法錯誤在程序的匯編和連接過程中都會被發(fā)現(xiàn)。而程序的邏輯錯誤在這兩個過程中是發(fā)現(xiàn)不了的。需要程序的邏輯錯誤在這兩個過程中是發(fā)現(xiàn)不了的。需要使用一定的調(diào)試工具軟件,進行仔細認真的調(diào)試才能使用一定的調(diào)試工具軟件,進行仔細認真的調(diào)試才

15、能發(fā)現(xiàn)。發(fā)現(xiàn)。匯編語言程序調(diào)試中常用的一個工具軟件是匯編語言程序調(diào)試中常用的一個工具軟件是DEBUG。下面介紹下面介紹DEBUG軟件的使用基礎(chǔ)。軟件的使用基礎(chǔ)。13一、一、DEBUG的啟動與退出的啟動與退出DEBUG的啟動方法有兩種:的啟動方法有兩種:1. 在在DOS狀態(tài)下輸入狀態(tài)下輸入DEBUG命令命令進入進入DEBUG狀態(tài)后,系統(tǒng)的提示符將變?yōu)闋顟B(tài)后,系統(tǒng)的提示符將變?yōu)椤啊薄_@。這時用戶可以輸入各種時用戶可以輸入各種DEBUG命令。命令。2.在在DOS狀態(tài)下輸入狀態(tài)下輸入DEBUG命令的同時,指定要調(diào)試的命令的同時,指定要調(diào)試的文件名。文件名。例如:例如:CDEBUG EXAMPLE.EX

16、E然后在然后在DEBUG狀態(tài)下可以對裝載的文件進行各種操作。狀態(tài)下可以對裝載的文件進行各種操作。14二、二、DEBUG常用命令常用命令一個一個DEBUG命令為一個字母,其后空一格,可以再跟一些命令為一個字母,其后空一格,可以再跟一些參數(shù)。參數(shù)。1.裝載用戶程序裝載用戶程序要對程序進行調(diào)試,首先需要將程序文件裝入內(nèi)存。在要對程序進行調(diào)試,首先需要將程序文件裝入內(nèi)存。在進入進入DEBUG狀態(tài)后,裝載程序方法是,先使用狀態(tài)后,裝載程序方法是,先使用N命令指命令指定文件名,再用定文件名,再用L命令將指定的文件裝入內(nèi)存。命令將指定的文件裝入內(nèi)存。格式:格式:N filename參數(shù)參數(shù)filename包

17、括主文件名和擴展名。如果需要還應指明包括主文件名和擴展名。如果需要還應指明盤符和路徑。盤符和路徑。15格式:格式:L addr將由將由N命令指定的文件裝入到內(nèi)存中,參數(shù)命令指定的文件裝入到內(nèi)存中,參數(shù)addr表示存表示存放裝入文件的起始地址。如果未指定,缺省地址為放裝入文件的起始地址。如果未指定,缺省地址為CS:0100。例如:例如: N A:TEST.EXE L2. D(Dump)命令)命令格式:格式:D range功能:顯示指定范圍(功能:顯示指定范圍(range)內(nèi)的內(nèi)存單元內(nèi)的內(nèi)存單元 的內(nèi)容。的內(nèi)容。16Range有兩種指定方法:有兩種指定方法:(1) Addr1 Addr2Addr

18、1為要顯示內(nèi)存單元的首地址,為要顯示內(nèi)存單元的首地址,Addr2為末地址。為末地址。(2)Addr1 L Value它表示顯示從它表示顯示從Addr1地址開始的、長度為地址開始的、長度為Value個字節(jié)的個字節(jié)的內(nèi)存單元。內(nèi)存單元。例如:例如:D 200 2FF D 200 L 100173. R(Register)命令命令格式:格式:Rregister_name功能:顯示功能:顯示CPU中的一個或所有中的一個或所有16位寄存器的內(nèi)容。標志寄位寄存器的內(nèi)容。標志寄存器的內(nèi)容為各標志位的狀態(tài)存器的內(nèi)容為各標志位的狀態(tài)(置位置位/復位復位),每個狀態(tài)用兩個字,每個狀態(tài)用兩個字符來表示。符來表示。標志位標志位置置 位位復復 位位溢出位溢出位OFOVNV方向位方向位DFDNUP中斷位中斷位IFEIDI符號位符號位SFNGPL零值位零值位ZFZRNZ輔助進位輔助進位AFACNA奇偶位奇偶位PFPEPO進位位進位位CFCYNC184. A(Assemble)命令命令格式:格式:A address功能:將從鍵盤直接輸入的匯編指令翻譯成目標代碼,并存功能:將從鍵盤直接輸入的匯編指令翻譯成目標代碼,并存放在內(nèi)存單元中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論