




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1 宏宏匯編匯編 重復匯編重復匯編 條件匯編條件匯編第七章第七章 高級匯編語言技術高級匯編語言技術21. 宏匯編宏匯編 宏宏:源程序中一段有獨立功能的程序代碼。源程序中一段有獨立功能的程序代碼。宏指令宏指令:用戶自定義的指令。在編程時,將多次用戶自定義的指令。在編程時,將多次 使用的功能用一條宏指令來代替。使用的功能用一條宏指令來代替。 匯編語言程序匯編語言程序指令指令偽指令(偽操作)偽指令(偽操作)宏指令宏指令3優(yōu):優(yōu):模塊化模塊化 省內存省內存缺:缺:開銷大開銷大宏定義:宏定義:Q macro x,y endm主程序:主程序:Q a, bQ c, dQ e, f目標程序:目標程序:優(yōu):優(yōu):
2、參數傳送參數傳送簡單,執(zhí)簡單,執(zhí)行效率高行效率高缺:缺:占用內存占用內存空間大空間大主程序:主程序:CALL -CALL -CALL -子程序:子程序: RET4宏展開:宏展開:匯編程序把匯編程序把宏調用宏調用展開展開 宏定義體宏定義體 復制到宏指令位置復制到宏指令位置, ,實參代虛參實參代虛參 LOCALLOCAL中的標號中的標號 ?0000?0000?ffff?ffff宏定義:宏定義: macro_name macro_name MACROMACRO 啞元表啞元表 ; 形參/虛參 LOCAL LOCAL 標號表標號表 ; 宏定義體 ENDMENDM宏調用:宏調用: (必須先定義后調用)(必
3、須先定義后調用) macro_name macro_name 實元表實元表 ; 實參5例:保存寄存器例:保存寄存器宏展開:宏展開:1 push ax1 push ax1 push bx1 push bx1 push cx1 push cx1 push dx1 push dx1 push si1 push si1 push di1 push di宏定義:宏定義:saveregsavereg MACROMACRO push ax push ax push bx push bx push cx push cx push dx push dx push si push si push di push
4、di ENDMENDM宏調用:宏調用: saveregsavereg6例:兩個字相乘例:兩個字相乘宏定義:宏定義:multiply MACRO opr1,opr2,result push dx push ax mov ax,opr1 imul opr2 mov result,ax pop ax pop dx ENDM宏調用:宏調用: multiply cx,var,xyzbx宏展開:宏展開:1 push dx1 push ax1 mov ax,cx1 imul var1 mov xyzbx,ax1 pop ax1 pop dx7例:求絕對值例:求絕對值宏定義:宏定義:absol MACRO o
5、per LOCAL nextLOCAL next cmp oper,0 jge nextnext neg opernext:next: ENDM宏調用:宏調用:absol varabsol bx宏展開:宏展開: 1 cmp var,01 jge ?00001 neg var1 ?0000: 1 cmp bx,01 jge ?00011 neg bx1 ?0001: 8宏匯編操作符:宏匯編操作符: & ; %符號符號1 & 符號符號2 宏展開時宏展開時, ,合并前后兩個符號形成一個符號。合并前后兩個符號形成一個符號。; 注釋注釋 宏展開時,宏展開時,;后面的注釋不予展開。后面的注
6、釋不予展開。 % 表達式表達式 匯編程序將匯編程序將%后面的表達式轉換為數字,并在后面的表達式轉換為數字,并在展開期間用這個數取代啞元。展開期間用這個數取代啞元。9leap macro cond,lab j&cond lab endm宏定義:宏定義:宏調用:宏調用:leap z, thereleap nz, here宏展開:宏展開:1 jz there 1 jnz here10宏定義:宏定義:msg macro lab,num,xyz lab&num db HELLO MR.&xyz endm宏調用:宏調用:msg ary,1,wangmsg ary,2,zhang 宏
7、展開:宏展開:1 ary1 db HELLO MR.wang 1 ary2 db HELLO MR.zhang 11例:定義宏指令例:定義宏指令STRG,實現存儲字符串的功能,實現存儲字符串的功能宏定義:宏定義: STRG MACRO STRING DB &STRING& ENDM宏調用宏調用: STRG 251 STRG % 25 1宏展開:宏展開: 1 DB 251 1 DB 2412宏定義:宏定義:msg macro count,string msg&count db string endmerrmsg macro text cntr = cntr+1 msg %
8、cntr,text endm宏調用:宏調用:cntr=0errmsg SYNTAX ERRORerrmsg INVALID OPERAND 宏展開:宏展開:1 cntr = cntr+11 msg %cntr,SYNTAX ERROR2 msg1 db SYNTAX ERROR 1 cntr = cntr+11 msg %cntr,INVALID OPERAND2 msg2 db INVALID OPERAND 13列表偽操作:列表偽操作:.LALL :在在LST清單中列出宏展開后的全部清單中列出宏展開后的全部 語句語句( (包括注釋包括注釋) )。.SALL :在在LST清單中不列出任何宏展
9、開后的清單中不列出任何宏展開后的 語句。語句。.XALL :缺省的列表方式,只列出宏體中產生缺省的列表方式,只列出宏體中產生 目標代碼的語句。目標代碼的語句。14starter macro csname, dsnameassume cs:csname, ds:dsname, es:dsname push ds sub ax, ax push ax mov ax, dsname mov ds, ax mov es, ax endm宏調用:. xallstarter code, data1 push ds1 sub ax, ax1 push ax1 mov ax, data1 mov ds, ax
10、1 mov es, ax15建立宏庫:建立宏庫:macro1 MACRO 啞元表 ENDM macro2 MACRO 啞元表 ENDM macroN MACRO 啞元表 ENDMEDIT EXP.ASMEDIT EXP.ASMinclude include MACRO.MACMACRO.MACmacro1 實元表macro2 實元表macroN 實元表purge macroNEDIT MACRO . MAC調用宏庫:調用宏庫:16重復偽操作重復偽操作 REPTREPTREPTREPT 表達式表達式 ;重復塊ENDMENDM2. 重復匯編重復匯編用于連續(xù)產生完全相同或基本相同的一組代碼。用于連續(xù)
11、產生完全相同或基本相同的一組代碼。不定不定重復偽操作重復偽操作 IRPIRP/ /IRPCIRPCIRPIRP 啞元啞元, ;重復塊ENDMENDMIRPCIRPC 啞元啞元,字符串,字符串 ;重復塊ENDMENDM17例:例:把字符把字符AA到到ZZ的的ASCIIASCII碼填入數組碼填入數組TABLETABLECHAR = ACHAR = ATABLE LABEL BYTETABLE LABEL BYTE REPTREPT 26 26 DB CHAR DB CHARCHAR = CHAR+1CHAR = CHAR+1 ENDMENDM1 DB 41H1 DB 41H1 DB 42H1 DB
12、 42H1 DB 43H1 DB 43H 1 DB 5AH1 DB 5AH匯編后:匯編后:18例:產生一組指令,將字數組例:產生一組指令,將字數組TABTAB的內容入棧保存的內容入棧保存; 宏定義PUSH_TAB PUSH_TAB MACROMACRO K K PUSH TAB+k PUSH TAB+k ENDMENDM; 宏調用I=0I=0 REPTREPT 5 5 PUSH_TAB %I PUSH_TAB %II=I+2I=I+2 ENDMENDM; 宏展開2 PUSH TAB+02 PUSH TAB+02 PUSH TAB+22 PUSH TAB+22 PUSH TAB+42 PUSH
13、TAB+42 PUSH TAB+62 PUSH TAB+62 PUSH TAB+82 PUSH TAB+819例:建立例:建立ARRAYARRAY數組數組.lall.lallARRAY LABEL WORDARRAY LABEL WORD REPTREPT 7 7 DW $+2 DW $+2 ENDMENDM DW ARRAYDW ARRAYARRAY LABEL WORDARRAY LABEL WORD1 DW $+21 DW $+21 DW $+21 DW $+21 DW $+21 DW $+21 DW $+21 DW $+21 DW $+21 DW $+21 DW $+21 DW $+2
14、1 DW $+21 DW $+2 DW ARRAY DW ARRAY匯編后:匯編后:20IRPIRP REG, REG, PUSH REG PUSH REGENDMENDM1 PUSH AX1 PUSH AX1 PUSH BX1 PUSH BX1 PUSH CX1 PUSH CX1 PUSH DX1 PUSH DX匯編后:匯編后:例:例:生成一組入棧指令生成一組入棧指令匯編后:匯編后:array label bytearray label byteIRPCIRPC K, 12345 K, 12345db NO.&Kdb NO.&KENDMENDM1 db NO.11 db NO
15、.11 db NO.21 db NO.21 db NO.31 db NO.31 db NO.41 db NO.41 db NO.51 db NO.5例:生成存儲字符串的匯編語句例:生成存儲字符串的匯編語句213. 條件匯編條件匯編 根據根據條件條件把一段源程序包括在匯編語言程序內把一段源程序包括在匯編語言程序內或者排除在外?;蛘吲懦谕狻FIF 自變量自變量 ; 為條件 ; 自變量滿足條件則匯編此塊 ELSEELSE ; 自變量不滿足條件則匯編此塊ENDIFENDIF一般一般格式:格式:22IF IF 表達式表達式 ;表達式表達式0,則匯編IFE IFE 表達式表達式 ;表達式0,則匯編IF
16、1IF1 ;在第一遍掃視期間滿足條件IF2IF2 ;在第二遍掃視期間滿足條件IFDEF IFDEF 符號符號 ;符號已定義,則匯編IFNDEF IFNDEF 符號符號 ;符號未定義,則匯編IFB IFB ;自變量為空,則匯編IFNB IFNB ;自變量不為空,則匯編IFIDN IFIDN ,2 ;串1與串2相同IFDIF IFDIF ,2 ;串1與串2不同23例:求最大值放入例:求最大值放入AX宏定義宏定義:MAX MAX MACROMACRO K,A,B,C K,A,B,C LOCAL NEXT,OUT LOCAL NEXT,OUT MOV AX, A MOV AX, A IFIF K-1
17、K-1 IFIF K-2 K-2 CMP C, AX CMP C, AX JLE NEXT JLE NEXT MOV AX, C MOV AX, C ENDIFENDIFNEXT: CMP B, AXNEXT: CMP B, AX JLE OUT JLE OUT MOV AX, B MOV AX, B ENDIFENDIFOUT:OUT: ENDMENDM1 MOV AX, P1 MOV AX, P1 ?0002: CMP Q, AX1 ?0002: CMP Q, AX1 JLE ?00031 JLE ?00031 MOV AX, Q1 MOV AX, Q1 ?0003:1 ?0003:宏展開
18、宏展開:1 MOV AX, P1 MOV AX, P1 ?0001: 1 ?0001: 1 MOV AX, P1 MOV AX, P1 CMP R, AX1 CMP R, AX1 JLE ?00041 JLE ?00041 MOV AX, R1 MOV AX, R1 ?0004: CMP Q, AX1 ?0004: CMP Q, AX1 JLE ?00051 JLE ?00051 MOV AX, Q1 MOV AX, Q1 ?0005:1 ?0005:宏調用宏調用:MAX 1, PMAX 1, PMAX 2, P, QMAX 2, P, QMAX 3, P, Q, RMAX 3, P, Q, R24; 宏展開1 SAL AX, 11 SAL AX, 12 SAL AX, 12 SAL AX, 13 SAL AX, 13 SAL AX, 1例:宏定義的遞歸調用例:宏定義的遞歸調用: : POWERPOWER實現實現 ( X ( X * * 2 2N N ) ); 宏定義POWERPOWER MACROMACRO X, N X, N S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025YY公司市場營銷管理系統采購合同
- 維護消費者的合法權益教學設計
- 體育比賽承辦協議
- 世界古代歷史重要事件閱讀題
- 產品質量檢測保證書(8篇)
- 秋葉的感悟寫景作文12篇范文
- 個人年收入及財務狀況證明書(8篇)
- 農業(yè)遙感技術應用合作協議條款說明函
- 農業(yè)生產技術應用服務合同
- 2024-2025學年山東省日照市高一上學期1月期末考試地理試題(解析版)
- 《人工智能:AIGC基礎與應用》高職全套教學課件
- 2024年貴州省貴陽市觀山湖區(qū)中考二模物理試題(含答案)
- 工匠精神概述課件
- 國家安全教育大學生讀本課件高教2024年8月版課件-第七章堅持以軍事、科技、文化、社會安全為保障
- 《SDN技術及應用》課件-第2章
- 2025屆四川省德陽市第一中學重點達標名校中考沖刺卷生物試題含解析
- 2025年春新北師大版數學一年級下冊課件 第六單元 第1課時 認識圖形
- 小學語文閱讀答題技巧課件
- 《心肺復蘇及電除顫》課件
- 香菇菌棒購銷合同范例
- 福建省廈門市湖里2024-2025學年區(qū)中考物理質檢檢測試題(三模)含答案
評論
0/150
提交評論