1313宏中的标号处理 在一个源程序中使用的标号必须惟一,这是编写汇编语言源程序的一个 原则,否则为重复定义 如果宏定义体中有一个或多个标号,那么 经多次宏调用后就会出现标号重复定义的情况,这是不允许的。 可以将标号定义为形参,每次宏调用时用不同的实参来取代它,从而 达到避免标号重复的目的。但是对程序设计者来说,记忆用过哪些实参, 考虑该用什么样的实参,这些工作显然是多余的负担 LOCA伪操作是解决这个问题的有效方法,其格式是: LOCAL LAB1[, 三LAB2] AAB,LAB2,是宏定义中出现的标号。多个局部标号之间用逗号隔开。 亚编程序对 LOCAL伪指令声明的每一个标号按照它遇到的次序建立惟 的标号(??0000~??FFF) 请注意, LOCAL伪指令只能用在宏定义体内,而且它必须是 MACRO后 面的第一个语句,在 MACRO和OCAL之间不能写任何字符,包括注释和 分
13.1.3宏中的标号处理 在一个源程序中使用的标号必须惟一,这是编写汇编语言源程序的一个 原则,否则为重复定义错误。如果宏定义体中有一个或多个标号,那么 经多次宏调用后就会出现标号重复定义的情况,这是不允许的。 可以将标号定义为形参,每次宏调用时用不同的实参来取代它,从而 达到避免标号重复的目的。但是对程序设计者来说,记忆用过哪些实参, 考虑该用什么样的实参,这些工作显然是多余的负担。 LOCAL伪操作是解决这个问题的有效方法,其格式是:LOCAL LAB1[, LAB2]… LAB1,LAB2,…是宏定义中出现的标号。多个局部标号之间用逗号隔开。 汇编程序对LOCAL伪指令声明的每一个标号按照它遇到的次序建立惟一 的标号(??0000~??FFFF)。 请注意,LOCAL伪指令只能用在宏定义体内,而且它必须是MACRO后 面的第一个语句,在MACRO和LOCAL之间不能写任何字符,包括注释和 分号标志
1314宏嵌套 L宏定义中可以嵌套宏调用 其限制条件是:先定义,后调用。此时相关的各个宏定义可以单独调用。 例134组合BCD码转换成ASCI码。 宏定义 丁 URN MACRO ADDAL, 30H ENDM BrOA MACRO ADDR XCHG AL, ADDR TURN XCHG AL, ADDR ENDM 宏调用 BIOA DATA 宏展开 XCHG AL, DATA ADD AL, 30H XCHG AL, DATA
13.1.4宏嵌套 1.宏定义中可以嵌套宏调用 其限制条件是:先定义,后调用。此时相关的各个宏定义可以单独调用。 例13.4非组合BCD码转换成ASCII码。 宏定义: TURN MACRO ADDAL,30H ENDM BTOA MACRO ADDR XCHG AL,ADDR TURN XCHG AL,ADDR ENDM 宏调用: BTOA DATA 宏展开: + XCHG AL,DATA + ADD AL,30H + XCHG AL,DATA