![IBM—PC匯編語(yǔ)言程序設(shè)計(jì)(第二版)沈美明——第七章_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/62b44362-65b8-4801-adae-ba6b2b3b7286/62b44362-65b8-4801-adae-ba6b2b3b72861.gif)
![IBM—PC匯編語(yǔ)言程序設(shè)計(jì)(第二版)沈美明——第七章_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/62b44362-65b8-4801-adae-ba6b2b3b7286/62b44362-65b8-4801-adae-ba6b2b3b72862.gif)
![IBM—PC匯編語(yǔ)言程序設(shè)計(jì)(第二版)沈美明——第七章_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/62b44362-65b8-4801-adae-ba6b2b3b7286/62b44362-65b8-4801-adae-ba6b2b3b72863.gif)
![IBM—PC匯編語(yǔ)言程序設(shè)計(jì)(第二版)沈美明——第七章_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/62b44362-65b8-4801-adae-ba6b2b3b7286/62b44362-65b8-4801-adae-ba6b2b3b72864.gif)
![IBM—PC匯編語(yǔ)言程序設(shè)計(jì)(第二版)沈美明——第七章_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/62b44362-65b8-4801-adae-ba6b2b3b7286/62b44362-65b8-4801-adae-ba6b2b3b72865.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 宏宏匯編匯編 重復(fù)匯編重復(fù)匯編 條件匯編條件匯編第七章第七章 高級(jí)匯編語(yǔ)言技術(shù)高級(jí)匯編語(yǔ)言技術(shù)21. 宏匯編宏匯編 宏宏:源程序中一段有獨(dú)立功能的程序代碼。源程序中一段有獨(dú)立功能的程序代碼。宏指令宏指令:用戶自定義的指令。在編程時(shí),將多次用戶自定義的指令。在編程時(shí),將多次 使用的功能用一條宏指令來(lái)代替。使用的功能用一條宏指令來(lái)代替。 匯編語(yǔ)言程序匯編語(yǔ)言程序指令指令偽指令(偽操作)偽指令(偽操作)宏指令宏指令3優(yōu):優(yōu):模塊化模塊化 省內(nèi)存省內(nèi)存缺:缺:開(kāi)銷大開(kāi)銷大宏定義:宏定義:Q macro x,y endm主程序:主程序:Q a, bQ c, dQ e, f目標(biāo)程序:目標(biāo)程序:優(yōu):優(yōu):
2、參數(shù)傳送參數(shù)傳送簡(jiǎn)單,執(zhí)簡(jiǎn)單,執(zhí)行效率高行效率高缺:缺:占用內(nèi)存占用內(nèi)存空間大空間大主程序:主程序:CALL -CALL -CALL -子程序:子程序: RET4宏展開(kāi):宏展開(kāi):匯編程序把匯編程序把宏調(diào)用宏調(diào)用展開(kāi)展開(kāi) 宏定義體宏定義體 復(fù)制到宏指令位置復(fù)制到宏指令位置, ,實(shí)參代虛參實(shí)參代虛參 LOCALLOCAL中的標(biāo)號(hào)中的標(biāo)號(hào) ?0000?0000?ffff?ffff宏定義:宏定義: macro_name macro_name MACROMACRO 啞元表啞元表 ; 形參/虛參 LOCAL LOCAL 標(biāo)號(hào)表標(biāo)號(hào)表 ; 宏定義體 ENDMENDM宏調(diào)用:宏調(diào)用: (必須先定義后調(diào)用)(必
3、須先定義后調(diào)用) macro_name macro_name 實(shí)元表實(shí)元表 ; 實(shí)參5例:保存寄存器例:保存寄存器宏展開(kāi):宏展開(kāi):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宏調(diào)用:宏調(diào)用: saveregsavereg6例:兩個(gè)字相乘例:兩個(gè)字相乘宏定義:宏定義:multiply MACRO opr1,opr2,result push dx push ax mov ax,opr1 imul opr2 mov result,ax pop ax pop dx ENDM宏調(diào)用:宏調(diào)用: multiply cx,var,xyzbx宏展開(kāi):宏展開(kāi):1 push dx1 push ax1 mov ax,cx1 imul var1 mov xyzbx,ax1 pop ax1 pop dx7例:求絕對(duì)值例:求絕對(duì)值宏定義:宏定義:absol MACRO o
5、per LOCAL nextLOCAL next cmp oper,0 jge nextnext neg opernext:next: ENDM宏調(diào)用:宏調(diào)用:absol varabsol bx宏展開(kāi):宏展開(kāi): 1 cmp var,01 jge ?00001 neg var1 ?0000: 1 cmp bx,01 jge ?00011 neg bx1 ?0001: 8宏匯編操作符:宏匯編操作符: & ; %符號(hào)符號(hào)1 & 符號(hào)符號(hào)2 宏展開(kāi)時(shí)宏展開(kāi)時(shí), ,合并前后兩個(gè)符號(hào)形成一個(gè)符號(hào)。合并前后兩個(gè)符號(hào)形成一個(gè)符號(hào)。; 注釋注釋 宏展開(kāi)時(shí),宏展開(kāi)時(shí),;后面的注釋不予展開(kāi)。后面的注釋不予展開(kāi)。 %
6、 表達(dá)式表達(dá)式 匯編程序?qū)R編程序?qū)?后面的表達(dá)式轉(zhuǎn)換為數(shù)字,并在后面的表達(dá)式轉(zhuǎn)換為數(shù)字,并在展開(kāi)期間用這個(gè)數(shù)取代啞元。展開(kāi)期間用這個(gè)數(shù)取代啞元。9leap macro cond,lab j&cond lab endm宏定義:宏定義:宏調(diào)用:宏調(diào)用:leap z, thereleap nz, here宏展開(kāi):宏展開(kāi):1 jz there 1 jnz here10宏定義:宏定義:msg macro lab,num,xyz lab&num db HELLO MR.&xyz endm宏調(diào)用:宏調(diào)用:msg ary,1,wangmsg ary,2,zhang 宏展開(kāi):宏展開(kāi):1 ary1 db HEL
7、LO MR.wang 1 ary2 db HELLO MR.zhang 11例:定義宏指令例:定義宏指令STRG,實(shí)現(xiàn)存儲(chǔ)字符串的功能,實(shí)現(xiàn)存儲(chǔ)字符串的功能宏定義:宏定義: STRG MACRO STRING DB &STRING& ENDM宏調(diào)用宏調(diào)用: STRG 251 STRG % 25 1宏展開(kāi):宏展開(kāi): 1 DB 251 1 DB 2412宏定義:宏定義:msg macro count,string msg&count db string endmerrmsg macro text cntr = cntr+1 msg %cntr,text endm宏調(diào)用:宏調(diào)用:cntr=0errm
8、sg SYNTAX ERRORerrmsg INVALID OPERAND 宏展開(kāi):宏展開(kāi):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清單中列出宏展開(kāi)后的全部清單中列出宏展開(kāi)后的全部 語(yǔ)句語(yǔ)句( (包括注釋包括注釋) )。.SALL :在在LST清單中不列出任何宏展開(kāi)后的清單中不列出任何宏展開(kāi)后的 語(yǔ)句。語(yǔ)句。.XALL :缺省
9、的列表方式,只列出宏體中產(chǎn)生缺省的列表方式,只列出宏體中產(chǎn)生 目標(biāo)代碼的語(yǔ)句。目標(biāo)代碼的語(yǔ)句。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宏調(diào)用:. xallstarter code, data1 push ds1 sub ax, ax1 push ax1 mov ax, data1 mov ds, ax1 mov es, ax15建立宏庫(kù):建立宏庫(kù):macro1 M
10、ACRO 啞元表 ENDM macro2 MACRO 啞元表 ENDM macroN MACRO 啞元表 ENDMEDIT EXP.ASMEDIT EXP.ASMinclude include MACRO.MACMACRO.MACmacro1 實(shí)元表macro2 實(shí)元表macroN 實(shí)元表purge macroNEDIT MACRO . MAC調(diào)用宏庫(kù):調(diào)用宏庫(kù):16重復(fù)偽操作重復(fù)偽操作 REPTREPTREPTREPT 表達(dá)式表達(dá)式 ;重復(fù)塊ENDMENDM2. 重復(fù)匯編重復(fù)匯編用于連續(xù)產(chǎn)生完全相同或基本相同的一組代碼。用于連續(xù)產(chǎn)生完全相同或基本相同的一組代碼。不定不定重復(fù)偽操作重復(fù)偽操作
11、IRPIRP/ /IRPCIRPCIRPIRP 啞元啞元, ;重復(fù)塊ENDMENDMIRPCIRPC 啞元啞元,字符串,字符串 ;重復(fù)塊ENDMENDM17例:例:把字符把字符AA到到ZZ的的ASCIIASCII碼填入數(shù)組碼填入數(shù)組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 42H1 DB 43H1 DB 43H 1 DB 5AH1 D
12、B 5AH匯編后:匯編后:18例:產(chǎn)生一組指令,將字?jǐn)?shù)組例:產(chǎn)生一組指令,將字?jǐn)?shù)組TABTAB的內(nèi)容入棧保存的內(nèi)容入棧保存; 宏定義PUSH_TAB PUSH_TAB MACROMACRO K K PUSH TAB+k PUSH TAB+k ENDMENDM; 宏調(diào)用I=0I=0 REPTREPT 5 5 PUSH_TAB %I PUSH_TAB %II=I+2I=I+2 ENDMENDM; 宏展開(kāi)2 PUSH TAB+02 PUSH TAB+02 PUSH TAB+22 PUSH TAB+22 PUSH TAB+42 PUSH TAB+42 PUSH TAB+62 PUSH TAB+62 P
13、USH TAB+82 PUSH TAB+819例:建立例:建立ARRAYARRAY數(shù)組數(shù)組.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 $+21 DW $+21 DW $+2 DW ARRAY DW ARR
14、AY匯編后:匯編后: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.11 db NO.21 db NO.21 db NO.31 db NO.31
15、db NO.41 db NO.41 db NO.51 db NO.5例:生成存儲(chǔ)字符串的匯編語(yǔ)句例:生成存儲(chǔ)字符串的匯編語(yǔ)句213. 條件匯編條件匯編 根據(jù)根據(jù)條件條件把一段源程序包括在匯編語(yǔ)言程序內(nèi)把一段源程序包括在匯編語(yǔ)言程序內(nèi)或者排除在外。或者排除在外。IFIF 自變量自變量 ; 為條件 ; 自變量滿足條件則匯編此塊 ELSEELSE ; 自變量不滿足條件則匯編此塊ENDIFENDIF一般一般格式:格式:22IF IF 表達(dá)式表達(dá)式 ;表達(dá)式表達(dá)式0,則匯編IFE IFE 表達(dá)式表達(dá)式 ;表達(dá)式0,則匯編IF1IF1 ;在第一遍掃視期間滿足條件IF2IF2 ;在第二遍掃視期間滿足條件IF
16、DEF IFDEF 符號(hào)符號(hào) ;符號(hào)已定義,則匯編IFNDEF IFNDEF 符號(hào)符號(hào) ;符號(hào)未定義,則匯編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 K-1 IFIF K-2 K-2 CMP C, AX CMP C, AX JLE
17、 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:宏展開(kāi)宏展開(kāi):1 MOV AX, P1 MOV AX, P1 ?0001: 1 ?00
18、01: 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:宏調(diào)用宏調(diào)用:MAX 1, PMAX 1, PMAX 2, P, QMAX 2, P, QMAX 3, P, Q, RMAX 3, P, Q, R24; 宏展開(kāi)1 SAL AX, 11 SAL AX, 12 SAL AX, 12 SAL AX, 13 SAL AX, 13 SAL AX, 1例:宏定義的遞歸調(diào)用例:宏定義的遞歸調(diào)用: : POWERPOWER實(shí)現(xiàn)實(shí)現(xiàn) ( X ( X * * 2 2N N ) ); 宏定義POWERPOWER MACROMACRO X, N X, N SAL X
溫馨提示
- 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)代辦公家具的環(huán)保理念與可持續(xù)發(fā)展
- 現(xiàn)代生活節(jié)奏下的胃腸疾病預(yù)防教育
- 生產(chǎn)制造中的綠色技術(shù)升級(jí)路徑與策略
- 基坑施工安全專項(xiàng)方案
- 現(xiàn)代服務(wù)業(yè)的發(fā)展趨勢(shì)及投資策略研究
- 生產(chǎn)安全監(jiān)督與危機(jī)管理一體化建設(shè)
- 生態(tài)農(nóng)業(yè)發(fā)展對(duì)商業(yè)模式的創(chuàng)新影響
- 現(xiàn)代農(nóng)業(yè)機(jī)械設(shè)備智能化國(guó)際對(duì)比研究
- 2024-2025學(xué)年高中生物 專題5 課題1 DNA的粗提取與鑒定說(shuō)課稿 新人教版選修1
- 9 生活離不開(kāi)他們 第一課時(shí) 說(shuō)課稿-2023-2024學(xué)年道德與法治四年級(jí)下冊(cè)統(tǒng)編版001
- 中國(guó)城市居民的健康意識(shí)和生活方式調(diào)研分析報(bào)告
- 上海星巴克員工手冊(cè)
- 復(fù)產(chǎn)復(fù)工試題含答案
- 部編版語(yǔ)文三年級(jí)下冊(cè)第六單元大單元整體作業(yè)設(shè)計(jì)
- 售后服務(wù)經(jīng)理的競(jìng)聘演講
- 新概念英語(yǔ)第2冊(cè)課文(完整版)
- 慢加急性肝衰竭護(hù)理查房課件
- 文件丟失應(yīng)急預(yù)案
- 全球職等系統(tǒng)GGS職位評(píng)估手冊(cè)
- 云南華葉投資公司2023年高校畢業(yè)生招聘1人筆試參考題庫(kù)(共500題)答案詳解版
- 專項(xiàng)法律意見(jiàn)書(shū)(私募基金管理人重大事項(xiàng)變更)-詳細(xì)版
評(píng)論
0/150
提交評(píng)論