- 1、本文档共140页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例4.55 变元是ASCII串的情况 宏定义: MSGGEN MACRO LAB , NUM , XYZ LABNUM DB‘ HELLO MR. XYZ ’ ENDM 宏调用: MSGGEN MGS , 1 , TAYLOR 宏展开: + MSG1 DB ‘ HELLO MR. TAYLOR’ 宏定义之例(续) 宏指令名若与指令助记符或伪操作名相同,则宏指令名优先,而同名的指令或伪操作失效。 PURGE伪操作可取消宏定义,以便恢复指令的原始定义。 宏指令定义说明(续) 例4.56 PURGE伪操作的用法之例。 宏定义: ADD MACRO OP1 , OP2 , RESULT ? ENDM 宏调用: ? ADD XX , YY , ZZ PURGE ADD ? LOCAL伪指令 格式:LOCAL list of local labels LOCAL使用说明: 若宏体内有标号,两次以上的调用在宏展开时会出现标号重复的错误,LOCAL伪指令可解决问题。 LOCAL伪指令位于MACRO定界语句之后的第一条语句位置; 局部标号名表( list of local labels )是用逗号间隔的一串标号名,是宏体中出现的所有标号的集合。 汇编程序对LOCAL伪操作的标号表中的每一个标号建立唯一的符号(??0000~??FFFF), 代替在展开中存在的每一个标号。 例4.57 LOCAL使用之例 宏定义: ABSOL MACRO OPER LOCAL NEXT CMP OPER , 0 JGE NEXT NEG OPER NEXT: ? ENDM 宏调用: ABSOL VAR ? ABSOL BX LOCAL使用之例 宏展开:没有LOCAL定义 : + CMP VAR , 0 + JGE NEXT + NEG VAR + NEXT: ? ? ? + CMP BX , 0 + JGE NEXT + NEG BX + NEXT: ? LOCAL使用之例 宏展开:经LOCAL定义: + CMP VAR , 0 + JGE ?? 0000 + NEG VAR + ?? 0000: ? ? ? + CMP BX , 0 + JGE ?? 0001 + NEG BX + ?? 0001: ? LOCAL使用之例 条件汇编 格式1: IF 条件 指令集合1 ;满足条件汇编此指令集合 ELSE 指令集合2 ;不满足汇编此指令集合 ENDIF 格式2: IF 条件 指令集合 ;满足条件汇编此指令集合 ENDIF ;否则,不汇编此指令集合 条件汇编说明: 当表达式的值不为0时,满足条件 “条件”通常是用逻辑运算符和关系运算符构成的逻辑表达式或关系表达式 条件伪操作可以在宏体内,也可在宏体之外,也允许嵌套任意次 条件汇编(续) 例4.58 宏指令MAX把三个变元中的最大值放在AX中,而且使变元数不同时,产生不同的程序段。 宏定义: MAX MACRO K , A , B , C LOCAL NEXT , OUT MOV AX , A IF K-1 IF K-2 CMP C , AX JLE NEXT MOV AX , C ENDIF NEXT: CMP B , AX JLE OUT MOV AX , B ENDIF OUT: ENDM 条件汇编举例 宏调用: MAX 1 , P MAX 2 , P , Q MAX 3 , P , Q , R 宏展开: MAX 1 , P + MOV AX , P +?? 0001: MAX 2 , P , Q + MOV AX , P +?? 0002: CMP Q , AX + JLE ?? 0003 + MOV AX , Q +?? 0003: 条件汇编举例 宏展开: MAX 3 , P , Q , R + MOV AX , P + CMP R , AX + JLE ?? 0004 + MOV AX , R +?? 0004: CMP Q , AX + JLE ?? 0
文档评论(0)