資源描述:
《宏匯編匯編語言第5章.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第5章 結(jié)構(gòu)化程序設(shè)計(jì)教學(xué)要求:?理解宏匯編的概念和作用。?掌握宏匯編的編程技術(shù)。教學(xué)要求:?理解宏匯編的概念和作用。?掌握宏匯編的編程技術(shù)。教學(xué)要求:?理解宏匯編的概念和作用。?掌握宏匯編的編程技術(shù)。教學(xué)要求:?理解宏匯編的概念和作用。?掌握宏匯編的編程技術(shù)。教學(xué)要求:?理解宏匯編的概念和作用。?掌握宏匯編的編程技術(shù)。5.1子程序的概念5.2子程序的定義、調(diào)用和返回**5.3子程序的現(xiàn)場(chǎng)保護(hù)與參數(shù)傳遞**5.4子程序設(shè)計(jì)*5.5子程序的嵌套與遞歸調(diào)用5.6宏匯編程序設(shè)計(jì)教學(xué)基本內(nèi)容什么是宏?宏是源程序中一段有獨(dú)立功能的程序代碼。它只需在
2、源程序中定義一次就可以多次調(diào)用它,調(diào)用時(shí),只需要用一個(gè)宏指令語句就可以了宏(Macro)是匯編語言的一個(gè)特點(diǎn),它是與子程序類似又獨(dú)具特色的另一種簡(jiǎn)化源程序的方法5.6宏結(jié)構(gòu)程序設(shè)計(jì)宏匯編重復(fù)匯編條件匯編宏結(jié)構(gòu)一、宏匯編內(nèi)容宏定義宏調(diào)用宏展開1、宏定義宏名macro[形參表]┇;宏指令體(宏體)endm(1)宏名(宏指令名):給出該宏定義的名稱(第一個(gè)符號(hào)必須是字母)。(2)macro/endm系統(tǒng)提供的定義宏的偽指令。(3)形參表:給出宏定義中所用到的形式參數(shù),參數(shù)可以沒 有,或帶有一個(gè)或是多個(gè),當(dāng)是多個(gè)參數(shù)時(shí),每個(gè)形參之間需用逗號(hào)隔
3、開。具體參數(shù)可以是常數(shù)、變量、指令或它們的一部分,也可以是表達(dá)式。(4)宏指令體:一組有獨(dú)立功能的匯編程序代碼。其中可以包括指令、偽指令及宏指令等。1、宏定義(續(xù))fillsegmacroDsegname;帶有形參Dsegnamemovax,Dsegname;宏定義中使用參數(shù)movds,axendm;宏定義結(jié)束舉例:思考:此處的形參Dsegname是什么?Dsegname是數(shù)據(jù)段的段名2、宏調(diào)用宏名[實(shí)參表];調(diào)用時(shí),只需使用宏指令名來調(diào)用該宏定義例如:對(duì)上面的宏定義的調(diào)用形式為:┆FILLSEGDATA;DATA為數(shù)據(jù)段的段名┆說明:(
4、1)匯編時(shí),匯編程序?qū)γ總€(gè)宏調(diào)用作宏展開–––用宏定義體取代源程序中的宏指令名,用實(shí)參代替宏定義中的形參。取代時(shí),實(shí)參和形參是一一對(duì)應(yīng)的。若實(shí)參個(gè)數(shù)>形參個(gè)數(shù),則多余實(shí)參不考慮,若實(shí)參個(gè)數(shù)<形參個(gè)數(shù),則多余形參作“空”處理。(2)取代后,所得到的語句應(yīng)該是有效的,否則匯編程序?qū)?huì)指示出錯(cuò)。(3)每調(diào)用一次就把宏定義體展開一次,因而它占有的存儲(chǔ)空間與調(diào)用次數(shù)有關(guān)。3、宏展開宏調(diào)用的實(shí)質(zhì)是在匯編過程中進(jìn)行宏展開宏展開的具體過程是:當(dāng)匯編程序掃描源程序遇到已有定義的宏調(diào)用時(shí),即用相應(yīng)的宏定義體取代源程序的宏指令,同時(shí)用位置匹配的實(shí)參對(duì)形參進(jìn)行取
5、代。1MOV AX,DATA1MOV DS,AX例如:上面的宏調(diào)用,其展開形式為:宏匯編應(yīng)用舉例 例5-9datasegmentbuf1db0dh,0ah,'whatareyourname?$'buf2db0dh,0ah,'mynameisliyang!$'dataendscodesegmentassumeds:data,cs:codestart:movax,datamovds,axdispmacromleadx,mmovah,9int21hendmdispbuf1dispbuf2movah,4chint21hcodeendsendsta
6、rt宏匯編應(yīng)用舉例 例5-17P148multiplymacroopr1,opr2,result;定義宏pushdxpushaxmoval,opr1imulopr2movresult,axpopaxpopdxendmdatasegmentadb3bdw?dataendsstacksegmentstackdb200dup(0)stackendscodesegmentassumeds:data,cs:code,ss:stackstart:movax,datamovds,axmovcl,2movbx,0multiplycl,a,b[bx];宏調(diào)
7、用movdx,b[bx]adddl,30hmovah,2int21hmovah,4chint21hcodeendsendstart宏——具有宏名的一段匯編語句序列——宏定義時(shí)書寫宏指令——這段匯編語句序列的縮寫——宏調(diào)用時(shí)書寫宏展開——宏指令處用這段宏代替的過程——宏匯編時(shí)實(shí)現(xiàn)宏的參數(shù)功能強(qiáng)大,頗具特色思考:在匯編語言程序設(shè)計(jì)過程中,可以將具有一定功能,需多次重復(fù)使用,且比較短的程序段定義成一條宏指令。使用宏指令語句可以減少程序書寫錯(cuò)誤,縮短源程序長(zhǎng)度,使源程序編寫像高級(jí)語言一樣清晰、簡(jiǎn)潔。特別是使用宏庫后,可以提高編程效率。在什么情況下
8、使用宏?為什么要使用宏?比較僅是源程序級(jí)的簡(jiǎn)化:宏調(diào)用在匯編時(shí)進(jìn)行程序語句的展開,不需要返回;不減小目標(biāo)程序,執(zhí)行速度沒有改變通過形參、實(shí)參結(jié)合實(shí)現(xiàn)參數(shù)傳遞,簡(jiǎn)捷直觀、靈活多變還是目標(biāo)程序級(jí)的