資源描述:
《匯編語(yǔ)言源程序的運(yùn)行過(guò)程.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、匯編語(yǔ)言源程序的運(yùn)行過(guò)程一、概述在DOS管理下鍵入?yún)R編語(yǔ)言源程序編輯程序EDLIN.EXE編輯過(guò)程無(wú)語(yǔ)法錯(cuò)誤的匯編語(yǔ)言源程序NAME·ASM(以ASCII碼形式存盤)匯編程序MASM·EXE匯編過(guò)程目標(biāo)(機(jī)器碼)文件NAME·OBJ連接程序LINK·EXE連接過(guò)程可執(zhí)行文件NAME·EXE調(diào)試程序DEBUG·EXE調(diào)試過(guò)程無(wú)邏輯錯(cuò)誤的可執(zhí)行文件NAME·EXE二、具體操作過(guò)程1.編輯過(guò)程在計(jì)算機(jī)“附件”的“記事本”中,用word編輯匯編語(yǔ)言源程序,比用編輯程序EDLIN要方便得多。因?yàn)槭褂煤笳?,必須熟記它的各種
2、命令及其功能。使用前者的操作步驟如下:第一步:編輯并建立擴(kuò)展名為ams的文件開(kāi)始→程序→附件→記事本→鍵入?yún)R編語(yǔ)言源程序(也可用Ctrl+C及Ctrl+V拷貝已有程序)→文件→另存為→出現(xiàn)“另存為”窗口→在‘文件名:’處為該文件命名,并切記:將擴(kuò)展名由.txt改為.asm→在“另存為”窗口里的“我的電腦”中找到含有MASM.EXE、LINK.EXE以及DEBUG.EXE這三個(gè)工具的文件夾(如,8086experi),并雙擊之→該文件夾名便出現(xiàn)在“保存在:”處→保存(至此,該文件夾中將出現(xiàn)你所編輯的擴(kuò)展名為asm
3、的匯編語(yǔ)言源程序。此時(shí)的源程序以ASCII碼形式存盤,而非機(jī)器碼)→關(guān)閉記事本。注意:上述三個(gè)工具及用戶程序必須在同一文件夾中。此后,為顯示,打印或修改該程序,雙擊該程序的圖標(biāo)即可。第二步:在DOS下運(yùn)行EDLIN,以便查找并排除源程序中可能存在的語(yǔ)法錯(cuò)誤。window狀態(tài)→開(kāi)始→運(yùn)行→打開(kāi):cmd↙→確定→出現(xiàn)DOS提示符:C:……>→指定存有你的程序的文件夾所在盤(如D盤)為當(dāng)前盤D:↙→D:>cd文件夾名↙→11D:文件夾名>edlin文件名.asm↙Endofinputfile此處為選擇性操作*L
4、↙顯示24條指令*25L↙顯示從第25條指令開(kāi)始的另24條指令*E↙按結(jié)束編輯命令E之前,生成了一個(gè)擴(kuò)展名為$$$的文件;結(jié)束編輯狀態(tài)之后,該文件的擴(kuò)展名由$$$變?yōu)锽AK。特別指出:即使不用EDLIN進(jìn)行編輯,也必須進(jìn)行此步。否則,若源程序中存在語(yǔ)法錯(cuò)誤,下一步進(jìn)行匯編后,不予提示,也不生成機(jī)器碼文件,無(wú)法進(jìn)行再下一步的連接,致使程序無(wú)法運(yùn)行。除非源程序中無(wú)任何語(yǔ)法錯(cuò)誤。2.匯編過(guò)程D:文件夾名>masm文件名;↙匯編程序負(fù)責(zé)將源程序文件(擴(kuò)展名為.ASM)翻譯為二進(jìn)制的機(jī)器碼文件(擴(kuò)展名為.OBJ)。在匯
5、編過(guò)程中,計(jì)算機(jī)對(duì)源程序文件要進(jìn)行語(yǔ)法檢查,若有錯(cuò)誤,在匯編結(jié)束后,屏幕上將出現(xiàn)錯(cuò)誤信息提示,這時(shí)需要返回到編輯過(guò)程,對(duì)有語(yǔ)法錯(cuò)誤的語(yǔ)句進(jìn)行修改,修改后的源程序需要重新匯編,直到匯編結(jié)束時(shí)無(wú)語(yǔ)法錯(cuò)誤為止。注意:匯編過(guò)程不能發(fā)現(xiàn)程序中的邏輯錯(cuò)誤。匯編結(jié)束時(shí),生成擴(kuò)展名為OBJ的文件(即CPU可識(shí)別的目標(biāo)(object)文件,又稱機(jī)器碼文件)。若在編輯階段中留有任何語(yǔ)法錯(cuò)誤未改,則不能生成OBJ文件,從而無(wú)法往下進(jìn)行。3.連結(jié)過(guò)程D:文件夾名>Link文件名;↙11我們學(xué)習(xí)匯編的主要目的,就是通過(guò)用匯編語(yǔ)言進(jìn)行編
6、程而深入地理解計(jì)算機(jī)底層的基本工作機(jī)理,達(dá)到可以隨心所欲地控制計(jì)算機(jī)的目的?;谶@種考慮,我們的編程活動(dòng),大都是直接對(duì)硬件進(jìn)行的。我們希望直接對(duì)硬件編程,卻并不希望用機(jī)器碼編程。我們用匯編語(yǔ)言編程,就要用到:編輯器(Edit)、編譯器(Masm)、連接器(Link)、調(diào)試工具(Debug)等工具,而這些工具都是在操作系統(tǒng)控制下運(yùn)行的程序,所以我們的學(xué)習(xí)過(guò)程必須在操作系統(tǒng)的環(huán)境中進(jìn)行。而操作系統(tǒng),使用了許多工具,這勢(shì)必要牽扯到操作系統(tǒng)、編譯原理等方面的知識(shí)和原理。我們只是利用這些環(huán)境、工具來(lái)方便我們的學(xué)習(xí),而不希
7、望這些東西分散了我們的注意力。所以,對(duì)于涉及到而又不在本課程學(xué)習(xí)內(nèi)容之中的東西,只做簡(jiǎn)單的解釋。連接的作用有以下幾個(gè):l當(dāng)源程序很大時(shí),可以將它分為多個(gè)源程序文件來(lái)編譯,每個(gè)源程序編譯成為目標(biāo)文件后,再用連接程序?qū)⑺鼈冞B接到一起,生成一個(gè)可執(zhí)行文件;l程序中調(diào)用了某個(gè)庫(kù)文件中的子程序,需要將這個(gè)庫(kù)文件和該程序生成的目標(biāo)文件連接到一起,生成一個(gè)可執(zhí)行文件;l一個(gè)源程序編譯后,得到機(jī)器碼的目標(biāo)文件,目標(biāo)文件中的有些內(nèi)容還不能直接用來(lái)生成可執(zhí)行文件,需通過(guò)連接程序?qū)⑦@些內(nèi)容處理為最終的可執(zhí)行信息。所以,既便只有一個(gè)源
8、程序文件,而又不需要調(diào)用某個(gè)庫(kù)中的子程序的情況下,也必須用連接程序?qū)δ繕?biāo)文件進(jìn)行處理,生成可執(zhí)行文件。注意,對(duì)于連接過(guò)程,可執(zhí)行的目標(biāo)文件是我們要得到的最終結(jié)果。LINK把匯編產(chǎn)生的目標(biāo)程序(擴(kuò)展名為.OBJ)轉(zhuǎn)換為一個(gè)可執(zhí)行文件(擴(kuò)展名為.EXE)。如果LINK運(yùn)行結(jié)束時(shí)給出錯(cuò)誤標(biāo)志,這時(shí)仍需返回到編輯過(guò)程,修改源程序后重新匯編、連接,直到LINK運(yùn)行結(jié)束時(shí),不顯示錯(cuò)誤標(biāo)志為止。連接