《微机原理与应用》第4章汇编语言程序设计(09年).pptVIP

  • 2
  • 0
  • 约2.52万字
  • 约 140页
  • 2017-05-30 发布于北京
  • 举报

《微机原理与应用》第4章汇编语言程序设计(09年).ppt

例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)

1亿VIP精品文档

相关文档