




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
名周
朱世
K
摩A
鉆舟a
加a案
明塔亟掩
掩需博
富M
埔低招
M
S
X,囂
X
國嫣M歐
X雙世
板假假世脩
黑萊卓粱
熱陋竹
高級匯編語言技術(shù)
A宏指令
A宏指令的使用過程
A宏操作符
A局部符號偽指令LOCAL
A宏庫的使用
A重復(fù)匯編
>條件匯編
由宏指令
為了減少編程的工作量,通游采用兩種方法:
①將程序段編寫為獨(dú)立的子程序
②將程序段定義成宏
將具有一定功能,需多次重復(fù)使用,且比較短
的程序段定義成一條宏指令。
使用宏指令語句可以減少程序書寫錯誤,縮短
源程序長度,使源程序編寫像高級語言一樣清
晰、簡潔。使用宏庫后,可以提高編程效率。
宏指令的使用過程
A宏定義
A宏調(diào)用
A宏擴(kuò)展
宏定義
>帶參宏定義
宏指令名MACRO形參1,形參2,...
宏體
ENDM
>無參宏定義
宏指令MACRO
宏體
ENDM
宏定義
SUMMACRONUM],NUM2,RESULT
PUSHAX
MOVAX,NUM1
ADDAX,NUM2
MOVRESULT,AX
POPAX
ENDM
說明
M宏指令名是該宏定義的名稱。調(diào)用時使用宏
指令名對該宏定義進(jìn)行調(diào)用。
宏指令符合標(biāo)識符規(guī)定。宏指令名不能重復(fù),
但可以和源程序中的其他變量、標(biāo)號、指令、
偽指令名相同,在這種情況下宏指令的優(yōu)先級
最高。
MACRO必須與ENDM成對出現(xiàn)。MACRO標(biāo)識宏
定義的開始。
形參是可選項(xiàng),宏可以不帶參數(shù);帶參數(shù)時,
多個形參間用逗號分隔。形參的規(guī)定與對標(biāo)識
符的規(guī)定是一致的。
宏調(diào)用
宏指令名[實(shí)參1,實(shí)參2,.......]
華宏指令與子程序的區(qū)別
子程序調(diào)用由微處理器完成
宏指令調(diào)用在匯編過程中由匯編程序完成
子程序調(diào)用可以減小目標(biāo)程序的大小
A宏指令調(diào)用不能
宏擴(kuò)展
DisplaymacroBUF
LEADX,BUF
+LEADX,BUF1
MOVAH,9
+MOVAH,9
INT21H
+INT21H
Displayendm
I
I
I
+LEADX,BUF2
DisplayBUF1
I+MOVAH,9
I
I
+INT21H
DisplayBUF2
將兩個用壓縮的BCD碼表示的4位十進(jìn)制數(shù)
相加,結(jié)果存入RESULT單元中。
;對兩數(shù)相加功能進(jìn)行宏定義Macro,asm
BCDADDMACROVARX,VARY,RESULT
MOVAL,VARX
ADDAL,VARY
DAA;俅位相加、調(diào)整
MOVRESULT,AL
MOVAL,VARX+1
ADCAL,VARY+1
DAA;高位相加、調(diào)整
MOVRESULT+1,AL
ENDM
DATASEGMENT
AlDB30H,11H
A2DB79H,47H
A3DB2DUP(?)
BlDB32H,23H
B2DB71H,62H
B3DB2DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:
MOVAX,
MOVDS,
BCDADDA1,A2,A3
BCDADDB1,B2,B3
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
+MOVAL,Al
+ADDAL,A2
+DAA;低位本目力口、調(diào)整
+MOVA3,AL
+MOVAL,Al+1
+ADCAL,A2+1
+DAA;高位相力口、調(diào)整
+MOVA3+1,AL
+;對兩數(shù)相加功能進(jìn)行宏定義
+MOVAL,Bl
+ADDAL,B2
+DAA;低位相加、調(diào)整
+MOVB3,AL
+MOVAL,Bl+1
+ADCAL,B2+1
+DAA;高位相加、調(diào)整
+MOVB3+1,AL
形參和實(shí)參
■F定義中可以不帶任何形參,宏調(diào)用時不需提
供實(shí)參,宏展開后宏體中的所有指令不作修改
原樣插入到宏調(diào)用的宏指令處。
■形參可以是操作碼或操作數(shù)的一部分,但在宏
定義體中必須使用分隔符&,&在宏定義中可作
為形參的前綴,展開時把&前后的兩個符號連
接起來,形成操作碼、操作數(shù)或字符串。
將寄存器內(nèi)容移位的操作定義為宏指令,并
宏調(diào)用。設(shè)一個參數(shù)時,移位次數(shù)為參數(shù)CN:
SHIFTMACROCN
MOVCL,CN
SHLAX,CL
ENDM
宏調(diào)用時提供相應(yīng)的實(shí)參數(shù)值:
SHIFT4
設(shè)兩個參數(shù)時,參數(shù)為寄存器和移位次數(shù):
SHIFTMACROCN,R
MOVCL,CN
SHLR,CL
ENDM
宏調(diào)用提供移位次數(shù)和寄存器:
SHIFT4,al
宏定義:
SHIFTMARCOX,Y,Z
MOVCL,X
S&ZY,CL
ENDM
上例被調(diào)用時:SHIFT4,AL,CL
SHIFT6,BX,AR
則宏展開時的目標(biāo)代碼:+MOVCL,4
+SALAL,CL
+MOVCL,6
+SARBX,CL
在程序設(shè)計中,對堆棧段的定義語句基本相同,只是
堆棧段的長度和初值不同。所以可以先定義一個宏
(放在宏庫中),供隨時不用,為編程帶來很大方
便。宏定義如下:
MSTACKMACROXYZ
STACKSEGMENTSTACK
DBXYZ
STACKENDS
ENDM
宏調(diào)用時:MSTACK<100DUP(?)>
宏展開為:+STACKSEGMENTSTACK
+DB100DUP(?)
+STACKENDS
偽指令PURGE
■宏指令名可以和源程序中的其他變量名、
標(biāo)號、指令助記符、偽操作名相同,此時宏指
令的優(yōu)先級別最高,使其他同名的指令或偽操
作無效。
PURGE,用來在適當(dāng)?shù)臅r候取消宏定義。
PURGE偽指令的一般格式是:
PURGE宏定義名[,…]
方括號表示PURGE可以取消多個宏定義,宏名之
間用逗號隔開。
偽指令PURGE
SUBMACROVARX,VARY,RESULT
I
I
I
ENDM
宏調(diào)用:SUBX,Y,Z
PURGESUB
“PURGESUB”語句后的SUB恢復(fù)減法功能。
偽指令LOCAL
使用了標(biāo)號的宏定義,若多次調(diào)用,勢必產(chǎn)生標(biāo)號
的多重定義。解決這一問題可使用偽指令LOCAL,
其一般格式為:
LOCAL局部標(biāo)號1,局部標(biāo)號2,...
宏匯編程序?qū)闃?biāo)號分別生成格式為“??
XXXX”的唯一的符號以代替各局部標(biāo)號。XXXX代表
四位十六進(jìn)制數(shù)0000~FFFF。這樣,在匯編源程序
中,避免了多次宏調(diào)用時生成的標(biāo)號重復(fù)。
?注意:LOCAL偽操作只能用在宏定義體內(nèi),而且必
須是MACRO偽操作后的第一個語句,在MACRO與
LOCAL不能出現(xiàn)注釋和分號標(biāo)志。
知吝取絕對值的宏指令如下
(macro2.asm):
宏展開后的指令為:
ABSMACROOPS+CMPCX,0
LOCALPLUS+JGE??0000
CMPOPS,0+NEGCX
JGEPLUS+??0000:MOVAX,CX
NEGOPS
PLUS:MOVAX,OPS
ENDMMOVBX,AX
宏調(diào)用:+CMPDX,0
ABSCX+JGE??0001
MOVBX,AX+NEGDX
ABSDX+??0001:MOVAX,DX
重復(fù)匯編
數(shù)值重復(fù)語句格式REPT
參數(shù)值重復(fù)語句格式IRP
字符重復(fù)語句格式IRPC
"數(shù)值重復(fù)語句格式REPT
ill______________________
矍一般格式為:
REPT表達(dá)式
;(重復(fù)塊)
ENDM
其中,REPT和ENDM必須成對出現(xiàn),兩者間的重
復(fù)塊是要重復(fù)匯編的部分。表達(dá)式的值用來表
示重復(fù)塊的重復(fù)匯編次數(shù)。這種偽操作不一定
要用在宏定義體內(nèi)。
有下列語句:macrol.asm
NUM=0
REPT10
NUM=NUM+1
DBNUM
ENDM
匯編后,將數(shù)據(jù)1,2,3,…,10分配給
十個連續(xù)的字節(jié)單元:
+DB1
+DB2
+DB3
I
I
I
+DB10
、:參數(shù)值重復(fù)語句格式IRP
其一般格式為:
IRP形參,〈參數(shù)1,參數(shù)2,...>
:(重復(fù)塊)
ENDM
此偽指令重復(fù)執(zhí)行重復(fù)塊中所包含的語句,
重復(fù)的次數(shù)由參數(shù)表中的參數(shù)個數(shù)決定。重復(fù)
匯編時,依次用參數(shù)表中的參數(shù)取代形參,直
到表中的參數(shù)用完為止。參數(shù)表中的參數(shù)必須
用兩個三角號括起來,參數(shù)可以是常數(shù)、符號、
字符串等,各參數(shù)間用逗號隔開。
多次將AX、BX、CX、DX寄存器內(nèi)容壓棧,宏
定義如下:macrol2.asm
PUSHRMACRO
IRPREG,<AX,BX,CX,DX>
PUSHREG
ENDM
ENDM
匯編后:
+PUSHAX
+PUSHBX
+PUSHCX
+PUSHDX
字符重復(fù)語句格式IRPC
TKPC形參,字符串(或〈字符串〉)
;(重復(fù)塊)
ENDM
此偽指令重復(fù)執(zhí)行重復(fù)塊中的語句,重
復(fù)匯編的次數(shù)等于字符串中字符的個數(shù)。每
次重復(fù)執(zhí)行時,依次用字符串中的一個字符
取代形參,直到字符串結(jié)束??梢奍RPC偽指
令與IRP偽指令類似,只是IRPC用字符串(其
三角括號可以有也可以無)代替了IRP偽指令
中的參數(shù)表。
PUSHRMACRO
IRPCREG,ABCD
PUSHREG&X
ENDM
ENDM
同樣,匯編后也可得到:
+PUSHAX
+PUSHBX
+PUSHCX
+PUSHDX
宏庫的使用
語句格式:INCLUDE庫文件名
假設(shè)已建立一名為MACRO.LIB的宏庫,其內(nèi)容如下
INPUTMACROA
LEADX,A
MOVAH,10;10號系統(tǒng)功能調(diào)用
INT21H
ENDM
PRINTMACROA
LEADX,A
MOVAH,9;9號系統(tǒng)功能調(diào)用
INT21H
ENDM
RETURNMACRO
MOVAH,2
MOVDL,OAH
INT21H
MOVDL,ODH;回車換行
INT21H
ENDM
0UT2MACROA
MOVDL,A
MOVAH,2;2號系統(tǒng)功能調(diào)用
INT21H
ENDM
STACKOMACROA
STACKSEGMENTSTACK
DBA
STACKENDS
ENDM
現(xiàn)要從鍵盤輸入一串字符到系統(tǒng)
緩沖區(qū),然后將字符按相反順序
打印,采用調(diào)用宏庫的辦法,其
程序如下:macro21
INCLUDEMACRO.LIB
STACKO<200DUP(0)〉;定義堆棧段
DATASEGMENT
INF01DB6INPUTSTRING:$'
INF02DB6OUTPUTSTRING:$'
BUFADB81
DB9?
DB80DUP(0)
BUFBDB81DUP(0)
DATAENDS
CODESEGMENT
ASSUMEDS:DATA,SS:STACK,CS:
CODE
START:MOVAX,DATA
MOVDS,AX
RETURN;輸出回車換行
PRINTINFO1;輸出INFO1代表的字符串
INPUTBUFA;鍵盤輸入字符中到緩沖區(qū);
LEASI,BUFA+1
MOVCH,0
MOVCL,[SI]
ADDSI,CX
LEADI,BUFB
NEXT:MOVAL,[SI]
MOV[DI],AL
DECSI
INCDI
LOOPNEXT
MOVBYTEPTR[DI],
RETURN;輸出回車換行
PRINTINF02;輸出的字符串變量INF02代表
PRINTBUFB;反向輸出輸入字符串
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
條件匯編
條件匯編指在匯編期間,宏匯編程序根據(jù)條
件是否成立決定具體匯編哪一程序段。條件
匯編用條件匯編偽指令來定義。
語句格式:
IFxx表達(dá)式
條件塊]
[ELSE
條件塊2]
ENDIF
偽指令"匯編條件,
IF表達(dá)式。表達(dá)拼0,則條件為其a
IFE表達(dá)卻表達(dá)式4則條件為露
是第一次掃翻臭
聯(lián)二次掃描為比
IFDE.F符號*符號已定義或被說明為外部符號,
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025山東省瑞寶特園區(qū)投資集團(tuán)有限公司招聘第二輪筆試及筆試參考題庫附帶答案詳解(10套)
- 2025四川安和精密電子電器股份有限公司招聘傳動項(xiàng)目研發(fā)工程師4人筆試參考題庫附帶答案詳解(10套)
- 2025年度四川自貢創(chuàng)新發(fā)展投資集團(tuán)有限公司專業(yè)人才公開招聘6人筆試參考題庫附帶答案詳解(10套)
- 2025年甘肅蘭通旅服鐵路運(yùn)營管理公司招聘145人筆試參考題庫附帶答案詳解(10套)
- 2025陜西省印刷科學(xué)技術(shù)研究所招聘(6人)筆試參考題庫附帶答案詳解(10套)
- 2025年金溪江投燃?xì)庥邢薰静糠止ぷ魅藛T崗位招聘1人(第2批)筆試參考題庫附帶答案詳解(10套)
- 2025山東濟(jì)南先行投資集團(tuán)有限責(zé)任公司及權(quán)屬公司社會招聘169人筆試參考題庫附帶答案詳解(10套)
- doremi合唱課件教學(xué)課件
- 2025江蘇無錫市宜興市宜能實(shí)業(yè)有限公司招聘經(jīng)營事務(wù)輔助人員2人筆試參考題庫附帶答案詳解(10套)
- 母嬰沙龍活動策劃方案
- 汽車競標(biāo)書模板
- 部編版語文六年級上冊 22 文言文二則 伯牙鼓琴學(xué)習(xí)任務(wù)單
- DEP-T-PD3401-2017-管道組成件標(biāo)記和色標(biāo)規(guī)定
- 露天開采煤礦土石方剝離工程施工方案三篇
- (最準(zhǔn)確)工程勘察設(shè)計收費(fèi)標(biāo)準(zhǔn)快速計算表(EXCEL)
- 傳染病病原體診斷-
- 網(wǎng)絡(luò)經(jīng)濟(jì)學(xué)課后習(xí)題答案
- 藥品不良反應(yīng)與藥害事件報告、處置流程圖
- 中國籍貫的集合數(shù)據(jù)庫(身份證號前六位籍貫對照表)
- GB/T 233-2000金屬材料頂鍛試驗(yàn)方法
- 超限超載危害及法律責(zé)任課件
評論
0/150
提交評論