版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、5.4 宏指令語(yǔ)句1.宏指令、宏定義和宏調(diào)用宏指令是源程序中具有獨(dú)立功能的一段程序代碼。在匯編語(yǔ)言中,如果在源程序中需要屢次使用同一個(gè)程序段,可以將這個(gè)程序段定義宏定義為一個(gè)宏指令,然后每次需要是,即可簡(jiǎn)單地用宏指令名來(lái)代替稱為宏調(diào)用,從而防止了重復(fù)書寫,使源程序更加簡(jiǎn)潔、易讀。宏定義由MASM宏匯編程序提供的偽指令實(shí)現(xiàn),其格式為寞潰豫磐堵碴汞本卒托卒疽協(xié)漲歲戀矣嚨朗嗓借去佐灶辣倘掠詣蕭戈船夏8086匯編語(yǔ)言宏指令語(yǔ)句8086匯編語(yǔ)言宏指令語(yǔ)句 宏指令名 MACRO 形式參數(shù) ENDM宏調(diào)用的格式為 宏指令名 實(shí)際參數(shù)這就是說(shuō),只要在源程序中寫上已定義過(guò)的宏指令名就算是調(diào)用該宏指令了。具有宏調(diào)
2、用的源程序被匯編時(shí),每個(gè)宏調(diào)用將被MASM進(jìn)行宏展開(kāi)。宏展開(kāi)實(shí)際上是用宏定義式設(shè)計(jì)的宏體去代替相應(yīng)的宏指令,并用實(shí)際參數(shù)一一取代形參。宏體震遭苔雜淬范稻鵬釜靶病尉樞費(fèi)柜猿指串按綽罕肩拒韌驕脾導(dǎo)檻遲飽遺幾8086匯編語(yǔ)言宏指令語(yǔ)句8086匯編語(yǔ)言宏指令語(yǔ)句由此可見(jiàn),使用宏的過(guò)程共有三步:首先進(jìn)行宏定義;然后可以進(jìn)行宏調(diào)用;最后,匯編時(shí)由MASM進(jìn)行宏展開(kāi)。例 假設(shè)源程序中多處需要將AL和CL存放器中的兩位壓縮型的BCD數(shù)相加,并將和送回BL存放器,那么可象下述這樣定義宏指令,然后在需要的地方進(jìn)行調(diào)用。DECADDMACROADD AL,CLDAAENDM顯而易見(jiàn),這是一個(gè)無(wú)形式參數(shù)的宏定義。淆呼
3、放搖稗輥刷芝便恩貨側(cè)沾睬乏皿姚幟炬畸琳巴睬撫升鞍改煮載正繼軒8086匯編語(yǔ)言宏指令語(yǔ)句8086匯編語(yǔ)言宏指令語(yǔ)句如果對(duì)分別存放在任意8位存放器或存儲(chǔ)單元中的兩個(gè)壓縮型的BCD數(shù)進(jìn)行加法運(yùn)算,那么可將上例宏定義改寫為DECADD1MACRO OPR1,OPR2MOV AL,OPR1ADD AL,OPR2DAAMOV OPR1,ALENDM這是一個(gè)帶有兩個(gè)形式參數(shù)的宏定義。宏指令為DECADD1。例如有以下宏調(diào)用:睹拜弊司賴緬淤紉住未部飾暢描轄牲艇堅(jiān)孔哀會(huì)汀遠(yuǎn)準(zhǔn)智翱僳羽擻披櫥默8086匯編語(yǔ)言宏指令語(yǔ)句8086匯編語(yǔ)言宏指令語(yǔ)句DECADD1 DL, BUFFERDECADD1AREA1, ARE
4、A2那么匯編時(shí)進(jìn)行宏展開(kāi),得到以下指令: 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ò)展后,原來(lái)宏體中的指令前面都加上了符號(hào)“,以示區(qū)別。菩鉆圾登走悅沁球嘲夏瘓猾誹嘴寶置囤療拱挨嘿浸桃氦鍺銀淡壓閣深占決8086匯編語(yǔ)言宏指令語(yǔ)句8086匯編語(yǔ)言宏指令語(yǔ)句宏指令與子程序的區(qū)別在匯編語(yǔ)言程序設(shè)計(jì)中,宏指令和子程序都給設(shè)計(jì)者提供了很大方便。他們都是可被程序?qū)掖握{(diào)用的程序段,并
5、且調(diào)用前必須由設(shè)計(jì)者事先根據(jù)需要按一定格式進(jìn)行定義。然而,宏指令和子程序由于定義方法和幾個(gè)是不同,使用中會(huì)有許多不同之處,主要是空間和時(shí)間的差異。 子程序由CALL指令調(diào)用,由RET指令返回,所以匯編后子程序的機(jī)器碼只占有一個(gè)程序段,不管調(diào)用多少次均如此,較為節(jié)約內(nèi)存。宏指令在每次宏調(diào)用處宏展開(kāi)時(shí),宏體都要占一個(gè)程序段,調(diào)用次數(shù)愈多,占用內(nèi)存愈多。因此從內(nèi)存空間開(kāi)銷來(lái)說(shuō),子程序優(yōu)于宏指令。陀符共慎佃粹綴壘跟月筏工媳堵某滁股罕郊需冰夏爆基隆叁竣提化鼎昂巋8086匯編語(yǔ)言宏指令語(yǔ)句8086匯編語(yǔ)言宏指令語(yǔ)句 從程序的執(zhí)行時(shí)間來(lái)分析,每調(diào)用一次子程序都要保護(hù)和恢復(fù)返回地址斷點(diǎn)及存放器內(nèi)容現(xiàn)場(chǎng)等,要消
6、耗較多的時(shí)間。宏指令調(diào)用時(shí)不需要這個(gè)過(guò)程,執(zhí)行時(shí)間較短。因此,從執(zhí)行時(shí)間來(lái)分析,宏指令又優(yōu)于子程序。綜上所述,當(dāng)某一需屢次訪問(wèn)的程序段較長(zhǎng),訪問(wèn)次數(shù)又不是太多時(shí),選用子程序結(jié)構(gòu)較好。當(dāng)某一需屢次訪問(wèn)的程序段較短,訪問(wèn)次數(shù)又很頻繁時(shí),選用宏指令結(jié)構(gòu)顯然要更好些。虱略胺減誕幾跪斑臃右譬塹套也存完硼挑涉斬雖曳燙遼敵蛾礦局毆焉粳掀8086匯編語(yǔ)言宏指令語(yǔ)句8086匯編語(yǔ)言宏指令語(yǔ)句.EXE文件5.5 匯編語(yǔ)言程序上機(jī)過(guò)程要想在計(jì)算機(jī)上 運(yùn)行匯編語(yǔ)言程序,必須首先對(duì)源程序進(jìn)行匯編和連接。以下圖表示了對(duì)匯編語(yǔ)言源程序的編輯、匯編和連接的過(guò)程。手寫程序.ASM文件.OBJ文件編輯程序編輯匯編程序匯編連接程序
7、連接EDITMASMLINK匯編語(yǔ)言程序上機(jī)過(guò)程坑糖東隘嫁旭沽母凳臂汽窟顱九韻易賬尋亭海芒洛慚匠巫擊嘲焉單眨誣喉8086匯編語(yǔ)言宏指令語(yǔ)句8086匯編語(yǔ)言宏指令語(yǔ)句5.5.1 用編輯程序建立匯編語(yǔ)言源程序文件建立一個(gè)匯編語(yǔ)言源程序,可以使用Windows系統(tǒng)下的記事本程序來(lái)編寫,也可以使用DOS操作系統(tǒng)下的EDIT程序來(lái)編寫。例如從鍵盤輸入二個(gè)數(shù)存入內(nèi)存以DATA開(kāi)始的二個(gè)單元中,然后選出其中的大數(shù)輸出。設(shè)編輯后的匯編語(yǔ)言源程序名為:exp1.asm戲噪睦墨盯嫡眠鰓攜刪跟年惹扁撤厚無(wú)枕扔飼巢艇焙脹籠崗佐蕊銅訂檢傍8086匯編語(yǔ)言宏指令語(yǔ)句8086匯編語(yǔ)言宏指令語(yǔ)句5.5.2 用匯編程序?qū)?AS
8、M文件匯編成目標(biāo)程序文件.OBJ在對(duì)匯編語(yǔ)言源程序文件簡(jiǎn)稱ASM文件匯編時(shí),匯編程序?qū)?duì)ASM文件進(jìn)行二遍掃描。假設(shè)程序文件中有語(yǔ)法錯(cuò)誤,那么在結(jié)束匯編后將指出源程序中的錯(cuò)誤語(yǔ)句及錯(cuò)誤類型。否那么將在匯編后生成目標(biāo)程序文件即OBJ文件完成匯編功能的是小匯編程序ASM或宏匯編程序MASM。匯編過(guò)程如下表所示:禿敘碗競(jìng)碌梗甘吐謎韓鞭翌豹程矩椿俄艱簍洼聲甸素山寬如鵬元例雄挑澤8086匯編語(yǔ)言宏指令語(yǔ)句8086匯編語(yǔ)言宏指令語(yǔ)句MASM宏匯編的提示信息及答復(fù)交叉參考文件用的文件名(缺?。簾o(wú)交叉參考文件)Cross referenceNUL.CRF:(交叉參考文件名)列表文件名(缺?。簾o(wú)列表文件)Sou
9、rce listingNUL.LST:(源列表文件名)可重新定位目標(biāo)文件名(缺?。涸次募?OBJ)Object filenameSource.OBJ:(目標(biāo)文件名)欲匯編的.ASM源文件名(缺?。好钪械奈募㏒ource filename.ASM:(源文件名)回 答提 示 信 息貸雅待悠雄茅末此麻吃桌突緣疚滑棗焙舒透菲盞征理薔衣耳新予鋼邁善粹8086匯編語(yǔ)言宏指令語(yǔ)句8086匯編語(yǔ)言宏指令語(yǔ)句5.2.3 用連接程序生成可執(zhí)行程序文件(EXE 文件經(jīng)匯編后產(chǎn)生的目標(biāo)程序文件OBJ文件并不是可執(zhí)行程序文件,必須經(jīng)連接后才能成為可執(zhí)行文件EXE文件。連接程序并不是專門為匯編語(yǔ)言程序設(shè)計(jì)的,如果
10、一個(gè)程序是由假設(shè)干個(gè)模塊組成的,也可以通過(guò)連接程序把它們連接在一起。這些模塊可以是匯編程序產(chǎn)生的目標(biāo)程序文件,也可以是高級(jí)語(yǔ)言編譯程序產(chǎn)生的目標(biāo)程序文件。完成連接功能的程序是LINK程序。連接過(guò)程如下表所示:替哺聊潭青辱令營(yíng)嗓慎貯鍺爵謀位斡撤高衛(wèi)彝滲經(jīng)銅狡嗣賀未體心以矣戮8086匯編語(yǔ)言宏指令語(yǔ)句8086匯編語(yǔ)言宏指令語(yǔ)句LINK程序的提示信息及答復(fù)庫(kù)文件名表(各文件之間用號(hào)隔開(kāi))Libraries .LIB(庫(kù)文件)列表文件名(缺?。簾o(wú)文件名)List File NUL.MAP(列表文件)連接后生成的執(zhí)行文件名(缺?。耗繕?biāo)文件名)Run File object.EXE(運(yùn)行文件)目標(biāo)代碼模塊
11、表(各模塊之間用號(hào)隔開(kāi))Oject Modules.OBJ(目標(biāo)模塊)回 答提 示 信 息淵什鵲澆動(dòng)亥褥輾片悶氨熙耐遺驢全盲罐廬賢丙磊鍺礎(chǔ)淋租飽誨奸誰(shuí)鈞佯8086匯編語(yǔ)言宏指令語(yǔ)句8086匯編語(yǔ)言宏指令語(yǔ)句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匯編語(yǔ)言宏指令語(yǔ)句8086匯編語(yǔ)言宏指令語(yǔ)句DATA SEGMENT DATA ENDSCODE SEGMENTMAIN FROC FAR ASSUME
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度電商虛擬現(xiàn)實(shí)技術(shù)應(yīng)用委托經(jīng)營(yíng)協(xié)議3篇
- 二零二五年度奶粉品牌線上直播帶貨代理合同
- 二零二五版智能停車場(chǎng)建設(shè)工程承包簡(jiǎn)易合同3篇
- 二零二五年度公益活動(dòng)布展策劃與實(shí)施協(xié)議3篇
- 2025年度煤炭行業(yè)信用風(fēng)險(xiǎn)管理合作協(xié)議書
- 2025年綠色建筑項(xiàng)目泥水工安全責(zé)任合同
- 二零二五年度馬鈴薯種植保險(xiǎn)及風(fēng)險(xiǎn)防控合作協(xié)議4篇
- 二零二五年船舶空調(diào)系統(tǒng)改造與環(huán)保驗(yàn)收合同3篇
- 個(gè)人住宅室內(nèi)裝修設(shè)計(jì)服務(wù)合同(2024版)3篇
- 2025年度化肥電商平臺(tái)合作與服務(wù)協(xié)議2篇
- 物流無(wú)人機(jī)垂直起降場(chǎng)選址與建設(shè)規(guī)范
- 肺炎臨床路徑
- 外科手術(shù)鋪巾順序
- 創(chuàng)新者的窘境讀書課件
- 綜合素質(zhì)提升培訓(xùn)全面提升個(gè)人綜合素質(zhì)
- 如何克服高中生的社交恐懼癥
- 聚焦任務(wù)的學(xué)習(xí)設(shè)計(jì)作業(yè)改革新視角
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)任務(wù)三 APP的品牌建立與價(jià)值提供
- 電子競(jìng)技范文10篇
- 食堂服務(wù)質(zhì)量控制方案與保障措施
- VI設(shè)計(jì)輔助圖形設(shè)計(jì)(2022版)
評(píng)論
0/150
提交評(píng)論