sure實(shí)驗(yàn)一_第1頁(yè)
已閱讀1頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)一實(shí)驗(yàn)一DOSDOS環(huán)境下的匯編語(yǔ)言編程環(huán)境使用環(huán)境下的匯編語(yǔ)言編程環(huán)境使用一、實(shí)驗(yàn)?zāi)康?、掌握匯編語(yǔ)言程序設(shè)計(jì)的基本流程和學(xué)會(huì)上機(jī)開(kāi)發(fā)簡(jiǎn)單程序;2、熟練掌握宏匯編程序MASM的使用;3、熟練掌握連接程序LINK的使用;4、熟練掌握DEBUG的使用;二、實(shí)驗(yàn)內(nèi)容1、匯編、鏈接并調(diào)試下面給出的簡(jiǎn)單程序,找出程序中的錯(cuò)誤。(一)錄入并建立匯編語(yǔ)言源程序文件(ASM文件)可以在DOS模式下用編輯程序EDIT.EXE建立匯編語(yǔ)言源程序文件T

2、EST01.ASM,注意文件名的擴(kuò)展名必須是.ASM。也可以使用Windows環(huán)境下其他的編輯軟件。(二)用匯編程序MASM將ASM文件匯編成目標(biāo)程序文件(OBJ文件)當(dāng)源程序建立以后,TEST01.ASM程序?yàn)槔晕覀冇脜R編程序MASM對(duì)TEST01.ASM源程序文件進(jìn)行匯編,以便產(chǎn)生機(jī)器碼的目標(biāo)程序文件TEST01.OBJ。由此可知,匯編程序調(diào)入后,首先顯示版本號(hào),然后出現(xiàn)三個(gè)提示行。第一個(gè)提示行為:Objectfilename[

3、TEST01.OBJ]:這是詢問(wèn)目標(biāo)程序文件名,方括號(hào)內(nèi)為機(jī)器規(guī)定的默認(rèn)的文件名,通常直接按回車鍵,表示采用默認(rèn)的文件名(如上所示),這是我們匯編的主要目的。第二個(gè)提示行為:Sourcelisting[NUL.LST]:這是詢問(wèn)是否建立列表文件。若不建立,直接回車;若要建立,可以輸入文件名TEST01再回車,表示要建立名為T(mén)EST01的列表文件。列表文件中同時(shí)列出源程序和機(jī)器語(yǔ)言程序清單,并給出符號(hào)表,有利于程序調(diào)試。第三個(gè)提示行為:C

4、rossreference[NUL.CRF]:這是詢問(wèn)是否要建立交叉索引文件。若不建立,則直接回車;若要建立,可以輸入文件名TEST01,表示要建立TEST01.CRF文件。由于.CRF是非文本文件,為了建立交叉索引文件,還必須調(diào)用CREF.EXE程序.調(diào)入?yún)R編程序,當(dāng)我們回答了上述各提示行的詢問(wèn)之后,匯編程序就對(duì)源程序進(jìn)行匯編。若匯編過(guò)程中發(fā)現(xiàn)源程序有語(yǔ)法錯(cuò)誤,則列出有錯(cuò)誤的語(yǔ)句和錯(cuò)誤的代碼。錯(cuò)誤分警告錯(cuò)誤(WraningErrs)和

5、嚴(yán)重錯(cuò)誤(SevereErrs)。警告錯(cuò)誤是指匯編程序認(rèn)為的一般性錯(cuò)誤;嚴(yán)重錯(cuò)誤是指匯編程序認(rèn)為無(wú)法進(jìn)行正確匯編的錯(cuò)誤,并給出錯(cuò)誤的個(gè)數(shù)及行號(hào)、錯(cuò)誤的性質(zhì)等。這時(shí),就要對(duì)錯(cuò)誤進(jìn)行分析,找出問(wèn)題和原因,然后再調(diào)用編輯程序加以修改,修改后重新匯編,直到匯編后無(wú)錯(cuò)誤為止。(三)用連接程序LINK生成可執(zhí)行程序文件(EXE文件)經(jīng)匯編后產(chǎn)生的二進(jìn)制的目標(biāo)程序文件(OBJ文件)并不是可執(zhí)行程序文件(EXE文件),必須經(jīng)連接以后,才能成為可執(zhí)行文件

6、。連接程序并不是專為匯編語(yǔ)言程序設(shè)計(jì)的。如果一個(gè)程序是由若干個(gè)模塊組成的,也可通過(guò)連接程序LINK把它們連接在一起。這些模塊可以是匯編程序產(chǎn)生的目標(biāo)文件,也可以是高級(jí)語(yǔ)言編譯程序產(chǎn)生的目標(biāo)文件。在連接程序調(diào)入后,首先顯示版本號(hào),然后出現(xiàn)三個(gè)提示行。第一個(gè)提示行為:RunFile[TEST01.EXE]:這是詢問(wèn)要產(chǎn)生的可執(zhí)行文件的文件名。一般直接回車采用方括號(hào)內(nèi)規(guī)定的隱含文件名。第二個(gè)提示行為:ListFile[NUL.MAP]:這是詢

7、問(wèn)是否要建立連接映象文件。若不建立,則直接回車;若要建立,則輸入文件名再回車。如果要建立該文件,可以輸入文件名TEST01。第三個(gè)提示行為:Libraries[.LIB]:這是詢問(wèn)是否用到庫(kù)文件。若無(wú)特殊需要,則直接回推出的宏匯編程MASM(MACROASSEMBLER)和BL公司推出的TASM(TURBOASSEMBLER)兩種。Microsoft公司推出有宏匯編程序MASM和小匯編程序ASM兩種,二者的區(qū)別在于:MASM有宏處理功能

8、,而ASM沒(méi)有宏處理功能,因此,MASM比ASM的功能強(qiáng)大。實(shí)驗(yàn)開(kāi)發(fā)過(guò)程中選用MASM。2、目標(biāo)程序的連接過(guò)程匯編后產(chǎn)生的目標(biāo)程序(OBJ文件)并不是可執(zhí)行程序文件(EXE文件),還不能直接運(yùn)行,它必須通過(guò)連接程序(LINK)連接成一個(gè)可執(zhí)行程序后才能運(yùn)行。連接程序進(jìn)行連接時(shí),其輸入有兩個(gè)部分:一是目標(biāo)文件(.OBJ),目標(biāo)文件可以是一個(gè)也可以是多個(gè),可以是匯編語(yǔ)言經(jīng)匯編后產(chǎn)生的目標(biāo)文件,也可以是高級(jí)語(yǔ)言(例如C語(yǔ)言)經(jīng)編譯后產(chǎn)生的目標(biāo)

9、文件;另一是庫(kù)文件(.LIB),庫(kù)文件是系統(tǒng)中已經(jīng)建立的,主要是為高級(jí)語(yǔ)言提供的。連接后輸出兩個(gè)文件,一是擴(kuò)展名為.EXE的可執(zhí)行文件,另一個(gè)是擴(kuò)展名為.MAP的內(nèi)存分配文件,它是連接程序的列表文件,又稱為連接映像(LinkMap),它給出每個(gè)段在存儲(chǔ)器中的分配情況,該文件可有可無(wú)。連接程序給出的“無(wú)堆棧段的警告性錯(cuò)誤”并不影響程序的運(yùn)行。所以,到此為止,連接過(guò)程已經(jīng)結(jié)束,可以在操作系統(tǒng)下執(zhí)行該.EXE程序了。3、Debug調(diào)試過(guò)程通過(guò)

10、編輯、匯編和連接后的程序是可以執(zhí)行的程序。但是,一個(gè)程序特別是比較復(fù)雜的程序不能保證沒(méi)有一點(diǎn)錯(cuò)誤。因此,在投入正式運(yùn)行前必須進(jìn)行調(diào)試,以檢查程序的正確性。調(diào)試程序Debug就是用來(lái)調(diào)試匯編語(yǔ)言程序的一種工具。Debug的主要功能有顯示和修改寄存器及內(nèi)存單元的內(nèi)容;按指定地址啟動(dòng)并運(yùn)行程序;設(shè)置斷點(diǎn)使程序分段運(yùn)行,以便檢查程序運(yùn)行過(guò)程中的中間結(jié)果或確定程序出錯(cuò)的位置;反匯編被調(diào)試程序,它將一個(gè)可執(zhí)行文件中的指令機(jī)器碼反匯編成助記符指令并同

11、時(shí)給出指令所在的內(nèi)存地址;單條追蹤或多條追蹤被調(diào)試程序,它可以逐條指令執(zhí)行或幾條指令執(zhí)行被調(diào)試程序,每執(zhí)行一條(或幾條)指令后,Debug程序?qū)⒅袛喑绦虻倪\(yùn)行并提供有關(guān)結(jié)果信息;匯編一段程序,在Debug的匯編命令下可以直接輸入助記符指令,并將其匯編成可運(yùn)行程序段。此外,Debug還可以將磁盤(pán)指定區(qū)的內(nèi)容或一個(gè)文件裝入到內(nèi)存或?qū)?nèi)存的信息寫(xiě)到磁盤(pán)上等等。4、匯編語(yǔ)言和DOS操作系統(tǒng)的接口編寫(xiě)的匯編語(yǔ)言源程序是在DOS環(huán)境下運(yùn)行的,為了保

12、證用戶程序執(zhí)行完后能返回到DOS狀態(tài),可使用如下兩種方法。(一)標(biāo)準(zhǔn)方法首先將用戶程序的主程序定義成一個(gè)FAR過(guò)程,其最后一條指令為RET。然后在代碼段的主程序(即FAR過(guò)程)的開(kāi)始部分用如下三條指令將PSP中INT20H指令的段地址及偏移地址壓入堆棧:PUSHDS;保護(hù)PSP段地址MOVAX,0;保護(hù)偏移地址0PUSHAX這樣,當(dāng)程序執(zhí)行到主程序的最后一條指令RET時(shí),由于該過(guò)程具有FAR屬性,故存在堆棧內(nèi)的兩個(gè)字就分別彈出到CS和I

溫馨提示

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

評(píng)論

0/150

提交評(píng)論