高级汇编Word格式文档下载.docx
- 文档编号:19104074
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:15
- 大小:18.89KB
高级汇编Word格式文档下载.docx
《高级汇编Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《高级汇编Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
宏展开:
+MOVAX,WORD_VAR
+INCAX
3.变元可以是操作码的一部分,但在宏定义体中必须用&
作为分隔符.
LEAPMACROCOND,LAB
J&
CONDLAB
...
LEAPZ,THERE
LEAPNZ,HERE
+JZTHERE
+JNZHERE
4.&
是一个操作符,它在宏定义体中可以作为哑元的前缀,展开时可以把&
前后个符号合并而形成一个符号,这个符号可以是操作码,操作数或是一个字符串
POMACROP1
JMPTA&
P1
FOWORD_VAR
+JMPTAWORD_VAR
5.实元是ASCII串的情况
MSGGENMACROLAB,NUM,XYZ
LAB&
NUMDB'
HELLOMR.&
XYZ'
MSGGENMSG,1,TAYLOR
+MSG1DB'
HELLOMR.TAYLOR'
6.宏指令名可以与指令助记符或伪操作名相同,在这种情况下,宏指令的优先级最高,而同名的指令或伪操作就失效了.伪操作PURGE可以用来在适当的时候取消宏定义,以便恢复指令的原始含义.
ADDMACROOPR1,OPR2,RESULT
ADDXX,YY,ZZ
PURGEADD
在宏调用后,用PURGE伪操作取消定义,以便恢复ADD指令的原始含义,在PURGEADD后面所用的ADD指令,则服从机器指令的定义.
PURGE伪操作可同时取消多个宏操作,此时各宏指令之间用逗号隔开.
7.LOCAL伪操作的使用.宏定义体内允许使用标号,如:
ABSOLMACROOPER
CMPOPER,O
JGENEXT
NEGOPER
NEXT:
如果程序中多次调用该宏定义时,展开后会出现标号的多重定义.为此系统提供了LOCAL伪操作,其格式是
LOCALlistoflocallabels
其中局部标号表内的各标号之间用逗号隔开.汇编程序对LOCAL伪操作的局部标号表中的每一个局部标号建立唯一的符号(用?
?
0000~?
FFFF)以代替在展开中存在的每个局部标号.必须注意,LOCAL伪操作只能用在宏定义体内,而且它必须是MACRO伪操作后的第一个语句,在MACRO和LOCAL伪操作之间还不允许有注释和分号标志.
本例中的ABSOL宏定义在考虑有多次调用可能性的情况下,应定义为:
LOCALNEXT
CMPOPER,0
ABSOLVAR
ABSOLBX
+CMPVAR,0
+JGE?
0000
+NEGVAR
+?
0000:
+CMPBX,0
0001
+NEGBX
0001:
8.宏定义中允许使用宏调用,其限制条件是:
必须先定义后调用
DIFMACROX,Y
MOVAX,X
SUBAX,Y
DIFSQRMACROOPR1,OPR2,RESULT
DIFOPR1,OPR2
IMULAX
MOVRESULT,AX
POPAX
POPDX
DIFSQRVAR1,VAR2,VAR3
9.宏定义体内不仅可以使用宏调用,也可以包含宏定义.
DEFMACMACROMACNAM,OPERATOR
MACNAMMACROX,Y,Z
OPERATORAX,Y
MOVZ,AX
其中MACNAM是内层的宏定义名,但又是外层宏定义的哑元,所以调用DEFMAC时,就形成一个宏定义.
DEFMACADDITION,ADD
+ADDITIONMACROX,Y,Z
ADDAX,Y
形成加法宏定义ADDITION.同样,宏调用
DEFMACSUBTRACT,SUB
形成减法的宏定义.当然在形成这些宏定义后,就可以使用宏调用
ADDITIONVAR1,VAR2,VAR3
而展开成:
+PUSHAX
+MOVAX,VAR1
+ADDAX,VAR2
+MOVVAR3,AX
+POPAX
10.这里再介绍一个宏定义的变元中使用的伪操作%,它的格式是:
%expression
汇编程序把跟在%之后的表达式的值转换成当前基数下的数,在展开期间,用这个数来取代哑元.
MSGMACROCOUNT,STRING
MSG&
COUNTDBSTRING
ERRMSGMACROTEXT
CNTR=CNTR+1
MSG%CNTR,TEXT
CNTR=0
ERRMSG'
SYNTAXERROR'
INVALIDOPERAND'
+MSG2DB'
二、重复汇编
有时汇编语言程序需要连续地重复完全相同的或者几乎完全相同的一组代码,这时可使用重复汇编。
1.重复伪操作
格式为:
REPTexpression
...(重复块)
其中表达式的值用来确定重复块的重复次数,表达式中如包含外部或未定义的项则汇编指示出错.
重复伪操作并不一定要在宏定义体内,例如:
X=0
REPT10
X=X+1
DBX
则汇编后产生
+DB1
+DB2
+DB3
+DB10
把字符A到Z的ASCII码填入数组TABLE
CHAR='
A'
TABLELABELBYTE
REPT26
DBCHAR
CHAR=CHAR+1
用宏定义及重复伪操作把TAB,TAB+1,TAB+2,...,TAB+16的内容存入堆栈.
PUSH_TABMACROK
PUSHTAB+K
I=0
REPT17
PUSH_TAB%I
I=I+1
要求建立一个100D字的数组,其中每个字的内容是下一个字的地址,而最后一个字的内容是第一个字的地址.
ARRAYLABELWORD
REPT99
DW$+2
DWARRAY
2.不定重复伪操作
(1)IRP伪操作
格式是:
IRPdummy,<
argumentlist>
汇编程序把重复块的代码重复几次,每次重复把重复块中的哑元用自变量表中的一项来取代,下一次取代下一项,重复次数由自变量表中的自变量个数来确定.自变量表必须用尖括号括起,它可以是常数,符号,字符串等.
例1:
IRPX,<
1,2,3,4,5,6,7,8,9,10>
汇编后得:
例2:
IRPREG,<
AX,BX,CX,DX>
PUSHREG
+PUSHBX
+PUSHCX
+PUSHDX
(2)IRPC伪操作
IRPCdummy,string(或<
string>
)
IRPC和IRP类似,但自变量表必须是字符串.重复次数由字符串中的字符个数确定,每次重复用字符串中的下一个字符取代重复块中的哑元.例:
IRPCX,01234567
DBX+1
+DB8
IRPCK,ABCD
PUSHK&
X
汇编后展开形成:
三、条件汇编
汇编程序能根据条件把一段源程序包括在汇编语言程序内或者把它排除在外,这里就用到条件伪操作.条件伪操作的一般格式是:
IFXXargument
...}自变量满足给定条件汇编此块
[ELSE]
...}自变量不满足给定条件汇编此块
ENDIF
自变量必须在汇编程序第一启遍扫视后就成为确定的数值.条件伪操作中的XX表示条件如下:
IFexpression汇编程序求出表达式的值,如此值不为0则满足条件.
IFEexpression如求出表达式的值为0则满足条件.
IFDEFsymbol如符号已在程序中定义,或者已用EXTRN伪操作说明该符号是在外部定义的,则满足条件.
IFNDEFsymbol如符号未定义或未通过EXTRN说明为外部符号则满足条件.
IFB<
argument>
如自变量为空则满足条件
IFNB<
如自变量不为空则满足条件
IFIDN<
argu-1>
<
argu-2>
如果字符串<
arg-1>
和字符串<
arg-2>
相同,则满足条件.
IFDIF<
不相同,则满足条件.
条件伪操作可以用在宏定义体内,也可以用在宏定义体外,也允许嵌套任意次.
宏指令MAX把三个变元中的最大值放在AX中,而且使变元数不同时产生不同的程序段.
MAXMACROK,A,B,C
LOCALNEXT,OUT
MOVAX,A
IFK-1
IFK-2
CMPC,AX
JLENEXT
MOVAX,C
CMPB,AX
JLEOUT
MOVAX,B
OUT:
MAX1,P
MAX2,P,Q
MAX3,P,Q,R
+MOVAX,P
0002:
CMPQ,AX
+JLE?
0003
+MOVAX,Q
0003:
+CMPR,AX
0004
+MOVAX,R
0004:
0005
0005:
例2.宏指令GOTOL,X,REL,Y(其中REL可以是Z,NZ,L,NL等)可以根据不同情况产生无条件转移指令或比较和条件转移指令.
GOTOMACROL,X,REL,Y
JFB<
REL>
JMPL
ELSE
CMPAX,Y
RELL
GOTOLOOP,SUM,NZ,15
GOTOEXIT
+MOVAX,SUM
+CMPAX,15
+JNZLOOP
+JMPEXIT
例3.宏定义可允许递归调用,此时条件伪操作可用来结束宏递归
宏指令POWER可以用来实现X和2N相乘.这只需对X左移N次可实现,可以设COUNT为递归次数的计数值,当该数与N相等时即可结束递归调用.
POWERMACROX,N
SALX,1
COUTN=COUT+1
IFCOUNT-N
POWERX,N
COUTN=0
POWERAX,3
+SALAX,1
例4.宏指令BRANCH产生一条转向X的转移指令.当它相对于X的距离小于128字节时产生JMPSHORTX;
否则产生JMPNEARPTRX(X必须位于该转移指令之后,即低地址区).
BRANCHMACROX
IF($-X)LT128
JMPSHORTX
JMPNEARPTRX
BRANCHX
如X与BRANCH指令间的距离小于128时产生
+JMPSHORTX
否则产生:
+JMPNEARPTRX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 汇编