匯編語言第七章_第1頁
匯編語言第七章_第2頁
匯編語言第七章_第3頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 第七章第七章:高級匯編語言技術(shù)高級匯編語言技術(shù)7.1 宏匯編宏匯編. 宏定義和宏調(diào)用宏定義和宏調(diào)用 . 1、 什么是宏什么是宏:宏是匯編程序中一段有獨立功能的代碼宏是匯編程序中一段有獨立功能的代碼.將其將其定定 義為宏以后義為宏以后.就可以在程序任意一處改變就可以在程序任意一處改變啞元啞元值調(diào)用該宏值調(diào)用該宏 2、 宏定義偽操作宏定義偽操作 名字項名字項 操作符操作符 操作數(shù)操作數(shù) 宏名第一個符號宏名第一個符號 啞元表啞元表,各啞元之間用逗各啞元之間用逗為字母為字母,其后可以其后可以 號隔開號隔開.啞元其實就是符號啞元其實就是符號是字母是字母,數(shù)字數(shù)字, 下劃線下劃線. macro name

2、 Macro dummy parameter list . 宏定義體宏定義體:一組有獨立功能的程序代碼一組有獨立功能的程序代碼. .Endm(其前沒有宏名其前沒有宏名) 3、宏調(diào)用 Macro name actual parameter list 宏名 實元表 各實元之間用逗號隔開 遇到宏調(diào)用語句后,匯編程序?qū)⒑暾归_。 宏展開就是用宏定義體取代宏指令語句中的宏名,用實元按排列次序逐一取代啞元。當實元與啞表之間的個數(shù)不相等時。多余的實元不考慮,多余的啞元做空處理。 宏定義:宏定義:Crlf macromov dl,0dhmov ah,2int 21hmov dl,0ahmov ah,2int 2

3、1hendm宏調(diào)用:宏調(diào)用:Crlf宏定義可以不帶啞元宏定義可以不帶啞元 。啞元可以是操作碼。啞元可以是操作碼。 啞元可以是操作碼、啞元可以是操作碼、操作數(shù)的一部分,這時操作數(shù)的一部分,這時要使用(連字符)將要使用(連字符)將幾部分連接。幾部分連接。 啞元可以是字符串。啞元可以是字符串。宏定義:宏定義:Ysuan macro p1,p2 P1 ax,bxMov p2,axInc bxendm宏調(diào)用:宏調(diào)用:Ysuan sub, aa1展開后:展開后:Sub ax,bxMov aa1,axInv bx宏定義:宏定義:Sq macro p1,lab JP1 labendm宏調(diào)用:宏調(diào)用:Sq L,

4、 aa1展開后:展開后:jP1 aa1宏定義:宏定義:Tzhuan macro p1,lab J&P1 labendm宏調(diào)用:宏調(diào)用:tzhuan L, aa1展開后:展開后: jL aa1宏定義:宏定義:str macro string Aa db stringendm宏調(diào)用:宏調(diào)用:str hello mr.lisa展開后:展開后:Aa db hello mr.lisa 幾個宏定義中使用的偽操作幾個宏定義中使用的偽操作、local偽操作偽操作 在宏中可以定義標號,多次使用宏就產(chǎn)生多個標號,標在宏中可以定義標號,多次使用宏就產(chǎn)生多個標號,標號就會定義重復(fù)。用號就會定義重復(fù)。用 local偽操

5、作來解決這個問題偽操作來解決這個問題 格式:格式:local 標號標號1,標號,標號2,標號標號n local必須是必須是macro偽操作后的第一語句偽操作后的第一語句,且在且在macro 與與local之間不允許有注釋與標識之間不允許有注釋與標識. 執(zhí)行:執(zhí)行: add1 ary2 +mov bx,0 +Mov cx,7 +Mov ax,0 +?0001: +Add ax,ary2bx +Inc bx +Loop ? 0001 Add1 macro ary Local nextMov bx,0 Mov cx,7 Mov ax,0 next: Add ax,ary&bx Inc bx Loop

6、 next endm 執(zhí)行:執(zhí)行: add1 ary1 +mov bx,0 +Mov cx,7 +Mov ax,0 +?0000: +Add ax,ary1bx +Inc bx +Loop ? 0000 、在在實元實元中中%偽操作的使用偽操作的使用.功能:將后的功能:將后的表達式表達式換成當前基數(shù)下的換成當前基數(shù)下的表達式的值表達式的值 宏展開一次將跟在后的宏展開一次將跟在后的cnt轉(zhuǎn)換為,并不計算。所以轉(zhuǎn)換為,并不計算。所以要想通過修改要想通過修改unmber的值來實現(xiàn)分配數(shù)組的不同,只有的值來實現(xiàn)分配數(shù)組的不同,只有在宏定義體以外修改實元在宏定義體以外修改實元 如果將宏定義為:如果將宏定義

7、為: 調(diào)用:調(diào)用: Ary macro number cnt=0Number =number+1 ary %cnt Ary&unmber db 10 dup (?) + 0=0+1Endm +ary0 db 10 dup (?)1、調(diào)用:、調(diào)用: Cnt =0 Ary cnt 展開后展開后 Arycnt db 10 dup (?) 2、調(diào)用:、調(diào)用: cnt=0 ary % cnt 展開后展開后 ary0 db 10 dup (?)有宏定義如下:有宏定義如下:Ary macro numberAry &unmber db 10 dup (?)Endm、Purge的用法:取消宏定義的偽操作。的用法

8、:取消宏定義的偽操作。 當宏名與指令的助記符或偽操作名相同時。宏指令的優(yōu)先級當宏名與指令的助記符或偽操作名相同時。宏指令的優(yōu)先級 最高。最高。 格式:格式:Purge 宏名宏名1,宏名,宏名2,. 宏名宏名n.宏允許嵌套宏允許嵌套. 在宏定義中可以調(diào)用宏在宏定義中可以調(diào)用宏.在宏定義中可以再定義宏在宏定義中可以再定義宏.重復(fù)匯編:重復(fù)匯編一組代碼重復(fù)匯編:重復(fù)匯編一組代碼設(shè)要求你在數(shù)據(jù)段建立一個設(shè)要求你在數(shù)據(jù)段建立一個100字的數(shù)組,數(shù)組由字的數(shù)組,數(shù)組由1200之間的偶數(shù)構(gòu)成之間的偶數(shù)構(gòu)成Data segmentCnt=0Rept 100Db cntCnt=cnt+2EndmData end

9、s重復(fù)偽操作格式:重復(fù)偽操作格式:Rept expression.Endm把字符把字符a到到z的的ascii碼填如數(shù)組碼填如數(shù)組tabelChar=aTabel label byteRept 26Db charChar=char+1endm不定重復(fù)偽操作:不定重復(fù)偽操作:IRP偽操作格式:偽操作格式:IRP dummy(啞元啞元) 例如:例如:IRP K K DB 10 DUP (?) ENDMIRPC偽操作格式:偽操作格式:IRPC dummy(啞元啞元) 字符串字符串 不帶尖括號不帶尖括號,字符間不帶逗號字符間不帶逗號例如:例如:IRPC K ABCD PUSH K&X ENDM展開展開 + ARY1 DB 10 DUP (?) + ARY2 DB 10 DUP (?) + ARY3 DB 10 DUP (?)展開展開:+ PUSH AX + PUSH BX + PUSH

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論