8086匯編措辭宏指令語句_第1頁
8086匯編措辭宏指令語句_第2頁
8086匯編措辭宏指令語句_第3頁
8086匯編措辭宏指令語句_第4頁
8086匯編措辭宏指令語句_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、5.4 宏指令語句1.宏指令、宏定義和宏調(diào)用宏指令是源程序中具有獨(dú)立功能的一段程序代碼。在匯編語言中,如果在源程序中需要屢次使用同一個程序段,可以將這個程序段定義宏定義為一個宏指令,然后每次需要是,即可簡單地用宏指令名來代替稱為宏調(diào)用,從而防止了重復(fù)書寫,使源程序更加簡潔、易讀。宏定義由MASM宏匯編程序提供的偽指令實(shí)現(xiàn),其格式為寞潰豫磐堵碴汞本卒托卒疽協(xié)漲歲戀矣嚨朗嗓借去佐灶辣倘掠詣蕭戈船夏8086匯編語言宏指令語句8086匯編語言宏指令語句 宏指令名 MACRO 形式參數(shù) ENDM宏調(diào)用的格式為 宏指令名 實(shí)際參數(shù)這就是說,只要在源程序中寫上已定義過的宏指令名就算是調(diào)用該宏指令了。具有宏調(diào)

2、用的源程序被匯編時,每個宏調(diào)用將被MASM進(jìn)行宏展開。宏展開實(shí)際上是用宏定義式設(shè)計的宏體去代替相應(yīng)的宏指令,并用實(shí)際參數(shù)一一取代形參。宏體震遭苔雜淬范稻鵬釜靶病尉樞費(fèi)柜猿指串按綽罕肩拒韌驕脾導(dǎo)檻遲飽遺幾8086匯編語言宏指令語句8086匯編語言宏指令語句由此可見,使用宏的過程共有三步:首先進(jìn)行宏定義;然后可以進(jìn)行宏調(diào)用;最后,匯編時由MASM進(jìn)行宏展開。例 假設(shè)源程序中多處需要將AL和CL存放器中的兩位壓縮型的BCD數(shù)相加,并將和送回BL存放器,那么可象下述這樣定義宏指令,然后在需要的地方進(jìn)行調(diào)用。DECADDMACROADD AL,CLDAAENDM顯而易見,這是一個無形式參數(shù)的宏定義。淆呼

3、放搖稗輥刷芝便恩貨側(cè)沾睬乏皿姚幟炬畸琳巴睬撫升鞍改煮載正繼軒8086匯編語言宏指令語句8086匯編語言宏指令語句如果對分別存放在任意8位存放器或存儲單元中的兩個壓縮型的BCD數(shù)進(jìn)行加法運(yùn)算,那么可將上例宏定義改寫為DECADD1MACRO OPR1,OPR2MOV AL,OPR1ADD AL,OPR2DAAMOV OPR1,ALENDM這是一個帶有兩個形式參數(shù)的宏定義。宏指令為DECADD1。例如有以下宏調(diào)用:睹拜弊司賴緬淤紉住未部飾暢描轄牲艇堅孔哀會汀遠(yuǎn)準(zhǔn)智翱僳羽擻披櫥默8086匯編語言宏指令語句8086匯編語言宏指令語句DECADD1 DL, BUFFERDECADD1AREA1, ARE

4、A2那么匯編時進(jìn)行宏展開,得到以下指令: DECADD1 DL, BUFFER+ MOV AL, DL+ ADD AL, BUFFER+ DAA+ MOV DL, AL DECADD1 AREA1, AREA2+ MOV AL, AREA1+ ADD AL, AREA2+ DAA+ MOV AREA1, AL宏擴(kuò)展后,原來宏體中的指令前面都加上了符號“,以示區(qū)別。菩鉆圾登走悅沁球嘲夏瘓猾誹嘴寶置囤療拱挨嘿浸桃氦鍺銀淡壓閣深占決8086匯編語言宏指令語句8086匯編語言宏指令語句宏指令與子程序的區(qū)別在匯編語言程序設(shè)計中,宏指令和子程序都給設(shè)計者提供了很大方便。他們都是可被程序?qū)掖握{(diào)用的程序段,并

5、且調(diào)用前必須由設(shè)計者事先根據(jù)需要按一定格式進(jìn)行定義。然而,宏指令和子程序由于定義方法和幾個是不同,使用中會有許多不同之處,主要是空間和時間的差異。 子程序由CALL指令調(diào)用,由RET指令返回,所以匯編后子程序的機(jī)器碼只占有一個程序段,不管調(diào)用多少次均如此,較為節(jié)約內(nèi)存。宏指令在每次宏調(diào)用處宏展開時,宏體都要占一個程序段,調(diào)用次數(shù)愈多,占用內(nèi)存愈多。因此從內(nèi)存空間開銷來說,子程序優(yōu)于宏指令。陀符共慎佃粹綴壘跟月筏工媳堵某滁股罕郊需冰夏爆基隆叁竣提化鼎昂巋8086匯編語言宏指令語句8086匯編語言宏指令語句 從程序的執(zhí)行時間來分析,每調(diào)用一次子程序都要保護(hù)和恢復(fù)返回地址斷點(diǎn)及存放器內(nèi)容現(xiàn)場等,要消

6、耗較多的時間。宏指令調(diào)用時不需要這個過程,執(zhí)行時間較短。因此,從執(zhí)行時間來分析,宏指令又優(yōu)于子程序。綜上所述,當(dāng)某一需屢次訪問的程序段較長,訪問次數(shù)又不是太多時,選用子程序結(jié)構(gòu)較好。當(dāng)某一需屢次訪問的程序段較短,訪問次數(shù)又很頻繁時,選用宏指令結(jié)構(gòu)顯然要更好些。虱略胺減誕幾跪斑臃右譬塹套也存完硼挑涉斬雖曳燙遼敵蛾礦局毆焉粳掀8086匯編語言宏指令語句8086匯編語言宏指令語句.EXE文件5.5 匯編語言程序上機(jī)過程要想在計算機(jī)上 運(yùn)行匯編語言程序,必須首先對源程序進(jìn)行匯編和連接。以下圖表示了對匯編語言源程序的編輯、匯編和連接的過程。手寫程序.ASM文件.OBJ文件編輯程序編輯匯編程序匯編連接程序

7、連接EDITMASMLINK匯編語言程序上機(jī)過程坑糖東隘嫁旭沽母凳臂汽窟顱九韻易賬尋亭海芒洛慚匠巫擊嘲焉單眨誣喉8086匯編語言宏指令語句8086匯編語言宏指令語句5.5.1 用編輯程序建立匯編語言源程序文件建立一個匯編語言源程序,可以使用Windows系統(tǒng)下的記事本程序來編寫,也可以使用DOS操作系統(tǒng)下的EDIT程序來編寫。例如從鍵盤輸入二個數(shù)存入內(nèi)存以DATA開始的二個單元中,然后選出其中的大數(shù)輸出。設(shè)編輯后的匯編語言源程序名為:exp1.asm戲噪睦墨盯嫡眠鰓攜刪跟年惹扁撤厚無枕扔飼巢艇焙脹籠崗佐蕊銅訂檢傍8086匯編語言宏指令語句8086匯編語言宏指令語句5.5.2 用匯編程序?qū)?AS

8、M文件匯編成目標(biāo)程序文件.OBJ在對匯編語言源程序文件簡稱ASM文件匯編時,匯編程序?qū)SM文件進(jìn)行二遍掃描。假設(shè)程序文件中有語法錯誤,那么在結(jié)束匯編后將指出源程序中的錯誤語句及錯誤類型。否那么將在匯編后生成目標(biāo)程序文件即OBJ文件完成匯編功能的是小匯編程序ASM或宏匯編程序MASM。匯編過程如下表所示:禿敘碗競碌梗甘吐謎韓鞭翌豹程矩椿俄艱簍洼聲甸素山寬如鵬元例雄挑澤8086匯編語言宏指令語句8086匯編語言宏指令語句MASM宏匯編的提示信息及答復(fù)交叉參考文件用的文件名(缺?。簾o交叉參考文件)Cross referenceNUL.CRF:(交叉參考文件名)列表文件名(缺省:無列表文件)Sou

9、rce listingNUL.LST:(源列表文件名)可重新定位目標(biāo)文件名(缺省:源文件名.OBJ)Object filenameSource.OBJ:(目標(biāo)文件名)欲匯編的.ASM源文件名(缺?。好钪械奈募㏒ource filename.ASM:(源文件名)回 答提 示 信 息貸雅待悠雄茅末此麻吃桌突緣疚滑棗焙舒透菲盞征理薔衣耳新予鋼邁善粹8086匯編語言宏指令語句8086匯編語言宏指令語句5.2.3 用連接程序生成可執(zhí)行程序文件(EXE 文件經(jīng)匯編后產(chǎn)生的目標(biāo)程序文件OBJ文件并不是可執(zhí)行程序文件,必須經(jīng)連接后才能成為可執(zhí)行文件EXE文件。連接程序并不是專門為匯編語言程序設(shè)計的,如果

10、一個程序是由假設(shè)干個模塊組成的,也可以通過連接程序把它們連接在一起。這些模塊可以是匯編程序產(chǎn)生的目標(biāo)程序文件,也可以是高級語言編譯程序產(chǎn)生的目標(biāo)程序文件。完成連接功能的程序是LINK程序。連接過程如下表所示:替哺聊潭青辱令營嗓慎貯鍺爵謀位斡撤高衛(wèi)彝滲經(jīng)銅狡嗣賀未體心以矣戮8086匯編語言宏指令語句8086匯編語言宏指令語句LINK程序的提示信息及答復(fù)庫文件名表(各文件之間用號隔開)Libraries .LIB(庫文件)列表文件名(缺?。簾o文件名)List File NUL.MAP(列表文件)連接后生成的執(zhí)行文件名(缺?。耗繕?biāo)文件名)Run File object.EXE(運(yùn)行文件)目標(biāo)代碼模塊

11、表(各模塊之間用號隔開)Oject Modules.OBJ(目標(biāo)模塊)回 答提 示 信 息淵什鵲澆動亥褥輾片悶氨熙耐遺驢全盲罐廬賢丙磊鍺礎(chǔ)淋租飽誨奸誰鈞佯8086匯編語言宏指令語句8086匯編語言宏指令語句DATA SEGMENT DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATASTART: MOV AX, DATAMOV DS, AXMOV ES, AXMOV AH, 4CHINT 21HCODE ENDS END START虐譜羌先艦喀偉誅抉誅襟采拖解螺揣底茶從鐮炎浚史織酗渦剝倪串穴蜘這8086匯編語言宏指令語句8086匯編語言宏指令語句DATA SEGMENT DATA ENDSCODE SEGMENTMAIN FROC FAR ASSUME

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論