版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗一實驗一DOSDOS環(huán)境下的匯編語言編程環(huán)境使用環(huán)境下的匯編語言編程環(huán)境使用一、實驗?zāi)康?、掌握匯編語言程序設(shè)計的基本流程和學(xué)會上機(jī)開發(fā)簡單程序;2、熟練掌握宏匯編程序MASM的使用;3、熟練掌握連接程序LINK的使用;4、熟練掌握DEBUG的使用;二、實驗內(nèi)容1、匯編、鏈接并調(diào)試下面給出的簡單程序,找出程序中的錯誤。(一)錄入并建立匯編語言源程序文件(ASM文件)可以在DOS模式下用編輯程序EDIT.EXE建立匯編語言源程序文件T
2、EST01.ASM,注意文件名的擴(kuò)展名必須是.ASM。也可以使用Windows環(huán)境下其他的編輯軟件。(二)用匯編程序MASM將ASM文件匯編成目標(biāo)程序文件(OBJ文件)當(dāng)源程序建立以后,TEST01.ASM程序為例,以我們用匯編程序MASM對TEST01.ASM源程序文件進(jìn)行匯編,以便產(chǎn)生機(jī)器碼的目標(biāo)程序文件TEST01.OBJ。由此可知,匯編程序調(diào)入后,首先顯示版本號,然后出現(xiàn)三個提示行。第一個提示行為:Objectfilename[
3、TEST01.OBJ]:這是詢問目標(biāo)程序文件名,方括號內(nèi)為機(jī)器規(guī)定的默認(rèn)的文件名,通常直接按回車鍵,表示采用默認(rèn)的文件名(如上所示),這是我們匯編的主要目的。第二個提示行為:Sourcelisting[NUL.LST]:這是詢問是否建立列表文件。若不建立,直接回車;若要建立,可以輸入文件名TEST01再回車,表示要建立名為TEST01的列表文件。列表文件中同時列出源程序和機(jī)器語言程序清單,并給出符號表,有利于程序調(diào)試。第三個提示行為:C
4、rossreference[NUL.CRF]:這是詢問是否要建立交叉索引文件。若不建立,則直接回車;若要建立,可以輸入文件名TEST01,表示要建立TEST01.CRF文件。由于.CRF是非文本文件,為了建立交叉索引文件,還必須調(diào)用CREF.EXE程序.調(diào)入?yún)R編程序,當(dāng)我們回答了上述各提示行的詢問之后,匯編程序就對源程序進(jìn)行匯編。若匯編過程中發(fā)現(xiàn)源程序有語法錯誤,則列出有錯誤的語句和錯誤的代碼。錯誤分警告錯誤(WraningErrs)和
5、嚴(yán)重錯誤(SevereErrs)。警告錯誤是指匯編程序認(rèn)為的一般性錯誤;嚴(yán)重錯誤是指匯編程序認(rèn)為無法進(jìn)行正確匯編的錯誤,并給出錯誤的個數(shù)及行號、錯誤的性質(zhì)等。這時,就要對錯誤進(jìn)行分析,找出問題和原因,然后再調(diào)用編輯程序加以修改,修改后重新匯編,直到匯編后無錯誤為止。(三)用連接程序LINK生成可執(zhí)行程序文件(EXE文件)經(jīng)匯編后產(chǎn)生的二進(jìn)制的目標(biāo)程序文件(OBJ文件)并不是可執(zhí)行程序文件(EXE文件),必須經(jīng)連接以后,才能成為可執(zhí)行文件
6、。連接程序并不是專為匯編語言程序設(shè)計的。如果一個程序是由若干個模塊組成的,也可通過連接程序LINK把它們連接在一起。這些模塊可以是匯編程序產(chǎn)生的目標(biāo)文件,也可以是高級語言編譯程序產(chǎn)生的目標(biāo)文件。在連接程序調(diào)入后,首先顯示版本號,然后出現(xiàn)三個提示行。第一個提示行為:RunFile[TEST01.EXE]:這是詢問要產(chǎn)生的可執(zhí)行文件的文件名。一般直接回車采用方括號內(nèi)規(guī)定的隱含文件名。第二個提示行為:ListFile[NUL.MAP]:這是詢
7、問是否要建立連接映象文件。若不建立,則直接回車;若要建立,則輸入文件名再回車。如果要建立該文件,可以輸入文件名TEST01。第三個提示行為:Libraries[.LIB]:這是詢問是否用到庫文件。若無特殊需要,則直接回推出的宏匯編程MASM(MACROASSEMBLER)和BL公司推出的TASM(TURBOASSEMBLER)兩種。Microsoft公司推出有宏匯編程序MASM和小匯編程序ASM兩種,二者的區(qū)別在于:MASM有宏處理功能
8、,而ASM沒有宏處理功能,因此,MASM比ASM的功能強(qiáng)大。實驗開發(fā)過程中選用MASM。2、目標(biāo)程序的連接過程匯編后產(chǎn)生的目標(biāo)程序(OBJ文件)并不是可執(zhí)行程序文件(EXE文件),還不能直接運(yùn)行,它必須通過連接程序(LINK)連接成一個可執(zhí)行程序后才能運(yùn)行。連接程序進(jìn)行連接時,其輸入有兩個部分:一是目標(biāo)文件(.OBJ),目標(biāo)文件可以是一個也可以是多個,可以是匯編語言經(jīng)匯編后產(chǎn)生的目標(biāo)文件,也可以是高級語言(例如C語言)經(jīng)編譯后產(chǎn)生的目標(biāo)
9、文件;另一是庫文件(.LIB),庫文件是系統(tǒng)中已經(jīng)建立的,主要是為高級語言提供的。連接后輸出兩個文件,一是擴(kuò)展名為.EXE的可執(zhí)行文件,另一個是擴(kuò)展名為.MAP的內(nèi)存分配文件,它是連接程序的列表文件,又稱為連接映像(LinkMap),它給出每個段在存儲器中的分配情況,該文件可有可無。連接程序給出的“無堆棧段的警告性錯誤”并不影響程序的運(yùn)行。所以,到此為止,連接過程已經(jīng)結(jié)束,可以在操作系統(tǒng)下執(zhí)行該.EXE程序了。3、Debug調(diào)試過程通過
10、編輯、匯編和連接后的程序是可以執(zhí)行的程序。但是,一個程序特別是比較復(fù)雜的程序不能保證沒有一點錯誤。因此,在投入正式運(yùn)行前必須進(jìn)行調(diào)試,以檢查程序的正確性。調(diào)試程序Debug就是用來調(diào)試匯編語言程序的一種工具。Debug的主要功能有顯示和修改寄存器及內(nèi)存單元的內(nèi)容;按指定地址啟動并運(yùn)行程序;設(shè)置斷點使程序分段運(yùn)行,以便檢查程序運(yùn)行過程中的中間結(jié)果或確定程序出錯的位置;反匯編被調(diào)試程序,它將一個可執(zhí)行文件中的指令機(jī)器碼反匯編成助記符指令并同
11、時給出指令所在的內(nèi)存地址;單條追蹤或多條追蹤被調(diào)試程序,它可以逐條指令執(zhí)行或幾條指令執(zhí)行被調(diào)試程序,每執(zhí)行一條(或幾條)指令后,Debug程序?qū)⒅袛喑绦虻倪\(yùn)行并提供有關(guān)結(jié)果信息;匯編一段程序,在Debug的匯編命令下可以直接輸入助記符指令,并將其匯編成可運(yùn)行程序段。此外,Debug還可以將磁盤指定區(qū)的內(nèi)容或一個文件裝入到內(nèi)存或?qū)?nèi)存的信息寫到磁盤上等等。4、匯編語言和DOS操作系統(tǒng)的接口編寫的匯編語言源程序是在DOS環(huán)境下運(yùn)行的,為了保
12、證用戶程序執(zhí)行完后能返回到DOS狀態(tài),可使用如下兩種方法。(一)標(biāo)準(zhǔn)方法首先將用戶程序的主程序定義成一個FAR過程,其最后一條指令為RET。然后在代碼段的主程序(即FAR過程)的開始部分用如下三條指令將PSP中INT20H指令的段地址及偏移地址壓入堆棧:PUSHDS;保護(hù)PSP段地址MOVAX,0;保護(hù)偏移地址0PUSHAX這樣,當(dāng)程序執(zhí)行到主程序的最后一條指令RET時,由于該過程具有FAR屬性,故存在堆棧內(nèi)的兩個字就分別彈出到CS和I
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論