IBM-PC匯編語(yǔ)言程序設(shè)計(jì)實(shí)例講解課件_第1頁(yè)
IBM-PC匯編語(yǔ)言程序設(shè)計(jì)實(shí)例講解課件_第2頁(yè)
IBM-PC匯編語(yǔ)言程序設(shè)計(jì)實(shí)例講解課件_第3頁(yè)
IBM-PC匯編語(yǔ)言程序設(shè)計(jì)實(shí)例講解課件_第4頁(yè)
IBM-PC匯編語(yǔ)言程序設(shè)計(jì)實(shí)例講解課件_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第七章

高級(jí)匯編語(yǔ)言技術(shù)

宏匯編重復(fù)匯編條件匯編1方法2、當(dāng)這組指令較短或不適合把它寫成一個(gè)子程序 時(shí),可以把它義成一個(gè)宏,每次需要執(zhí)行時(shí)就去調(diào)用這個(gè)宏。問如果在一個(gè)程序中多次使用同一組指令時(shí),為了避免每次都要重寫,該如何解決?方法1、把這組指令寫成一個(gè)子程序,每次需要執(zhí)行時(shí) 只要調(diào)用這個(gè)子程序就可以了。27.1宏匯編

為用戶提供更加容易、更加靈活、更加向高級(jí)語(yǔ)言靠攏的匯編工具。宏:源程序中一段有獨(dú)立功能的程序代碼。宏指令:用戶自定義的指令。在編程時(shí),將多次使用的功能用一條宏指令來代替。匯編語(yǔ)言程序語(yǔ)句指令偽指令(偽操作)宏指令3宏定義

macro_name

MACRO

[啞元表];形參/虛參[LOCAL標(biāo)號(hào)表]…… ……

ENDM*macro_name宏指令名(宏名),調(diào)用時(shí)用。

第一個(gè)符號(hào)必須是字母(注意與名稱的差異)*[啞元表]形參表,啞元之間用逗號(hào)隔開*如果宏定義體有一個(gè)或多個(gè)標(biāo)號(hào),則必須用LOCAL偽操作列出所有的標(biāo)號(hào)。???(宏定義體)一段有獨(dú)立功能的程序代碼5宏調(diào)用

macro_name

[實(shí)元表];實(shí)參*實(shí)元表中的實(shí)元與啞元表中的啞元在位置上一一對(duì)應(yīng);*若實(shí)元數(shù)>啞元數(shù),則多余的實(shí)元無效;*若實(shí)元數(shù)<啞元數(shù),則多余的啞元作“空(NUL)”處理;*對(duì)宏指令的調(diào)用必須先定義后調(diào)用。*應(yīng)當(dāng)注意,宏展開后,即用實(shí)參取代形式參數(shù)之后,所得到的語(yǔ)句應(yīng)該是有效的,否則匯編時(shí)會(huì)出錯(cuò)。6宏展開

源程序被匯編時(shí),匯編程序把宏調(diào)用展開,也就是把宏定義體復(fù)制到調(diào)用宏指令的位置上,同時(shí)用實(shí)元取代啞元,由LOCAL定義的標(biāo)號(hào)也由??0000~??FFFF替代。7實(shí)元(在使用上要比子程序靈活)常數(shù)、寄存器、存貯單元用尋址方式能找到的地址、表達(dá)式指令的操作碼、操作碼的一部分8宏調(diào)用:在匯編期間被展開,每調(diào)用一次就把宏定義體 展開一次。宏定義宏調(diào)用宏展開Qmacrox,y

endm

……Qa,b……Qc,d……Qe,f……

……

………………10可以無變?cè)梢允遣僮鞔a可以是操作碼的一部分,但在宏定義體中必須用

&來分隔。變?cè)茿SCII串

%操作符7.1.2宏定義中的參數(shù)127.1.4在宏定義體內(nèi)使用宏限制條件:必須先定義后調(diào)用在宏定義體內(nèi)不僅可以使用宏,也可以可以包含宏定義(也就是說,宏定義允許嵌套)147.1.5列表偽操作.XALL默認(rèn)值,只列出產(chǎn)生目標(biāo)碼的宏展開.LALL列出包括注釋在內(nèi)的所有宏展開.SALL不列出任何展開信息功能:控制匯編清單中宏展開的列出情況.LISTMACROALL.LISTMACRO.NOLISTMACROMASM6.0+;;注釋;宏展開時(shí),;;后面的注釋不予展開。源程序(ASM文件)經(jīng)匯編程序匯編,主要輸出是OBJ文件和LST文件(列表文件)。LST文件同時(shí)列出源程序和機(jī)器語(yǔ)言程序清單,并給出符號(hào)表。157.1.6宏庫(kù)的建立與調(diào)用宏庫(kù):只包含若干宏定義的文件,擴(kuò)展名為MAC或LIB宏庫(kù)的調(diào)用:

在程序的開始用INCLUDE語(yǔ)句說明,例如INCLUDEC:\MACRO.MACINCLUDED:\AAA\EEE.LIB注:INCLUDE語(yǔ)句可以不放在程序的最前面,但必須放在所有的宏調(diào)用之前宏庫(kù)的建立:

由定義即可167.1.7PURGE偽操作宏指令名可與指令助記符和偽指令名同名,但這時(shí)宏指令的優(yōu)先級(jí)最高,而同名的指令和偽操作便失效。格式:PURGE宏指令名[,宏指令名,…]PURGE可取消多個(gè)宏定義,而各宏指令名之間應(yīng)以逗號(hào)分隔。功能:取消宏定義,使該宏定義為空。偽指令PURGE可取消宏定義,恢復(fù)指令的原來功效。17例7.1兩個(gè)字相乘宏定義:multiply

MACRO

opr1,opr2,resultpushdxpushaxmovax,opr1imulopr2movresult,axpopaxpopdx

ENDM宏調(diào)用:

multiply

cx,var,xyz[bx]宏展開:

+pushdx+pushax+movax,cx+imulvar+movxyz[bx],ax+popax+popdx18例宏指令名與指令助記符或偽操作名相同,宏指令的優(yōu)先級(jí)最高。宏定義:add

MACROopr1,opr2,result…………

ENDM宏調(diào)用:……addxx,yy,zzpurgeadd;取消宏定義……20例求絕對(duì)值(使用LOCAL偽操作)宏定義:absol

MACROoperLOCALnextcmpoper,0jgenextnegopernext:

ENDM宏調(diào)用:……absolvar……absolbx……宏展開:

……+cmpvar,0+jge??0000+negvar+??0000:……+cmpbx,0+jge??0001+negbx+??0001:……21;;注釋;宏展開時(shí),;;后面的注釋不予展開。

例:QMACROm;displayamessage每次展開保留此注釋;;misastring每次展開不保留此注釋……

ENDM

%表達(dá)式;匯編程序?qū)?后面的表達(dá)式轉(zhuǎn)換為數(shù)字,并在展開期間用這個(gè)數(shù)取代啞元。237.2重復(fù)匯編在編寫匯編語(yǔ)言程序中,有時(shí)需要進(jìn)行連續(xù)地重復(fù)完成相同的或幾乎完全相同的操作,這時(shí)可以使用重復(fù)匯編,使書寫的程序變得相當(dāng)簡(jiǎn)潔。重復(fù)匯編有兩種格式重復(fù)偽操作不定重復(fù)偽操作24IPR偽操作[格式]IRP形式參數(shù),<參數(shù)表>

…(指令體) ENDM[說明]其中,IRP和ENDM偽指令必須成對(duì)出現(xiàn),其間是要重復(fù)的指令體。重復(fù)的次數(shù)由參數(shù)表中參數(shù)的個(gè)數(shù)所決定,而且每重復(fù)一次,依次用參數(shù)表中的參數(shù)來代替形式參數(shù)。參數(shù)表必須用尖括號(hào)括起來,參數(shù)間用逗號(hào)分隔。7.2.2不定重復(fù)偽操作IPR偽操作26IPRC偽操作[格式] IRPC形式參數(shù),字符串(或<字符串>)

…(指令體) ENDM[說明]其中,偽指令I(lǐng)RPC和ENDM必須成對(duì)出現(xiàn),其間是重復(fù)的指令體,重復(fù)的次數(shù)取決于字符串中字符的個(gè)數(shù),在每次重復(fù)時(shí),依次用字符串的字符代替形式參數(shù)。7

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論