“&”在宏指令中作为连接操作符。“&”通常出现在带有形参的字符串中。为了区分字符串中哪些字符是形参,需要在形参与固定字符间加入“&”例如:
CON MACRO X1,X2,SI,L1
MOV R2,#X1
MOV R2,#X1
ADD A,#X1+5-X2
DB 'STRING&SI&'
JNZ LAB&L1
LAB&L1:
XRL A,R3
ENDM
CLR A
CON 23H,65H,SPECIAL,57
END
列表文件如下:
The Cybernetic Micro Systems 8051 Family Assembler, Version 3.03 Page 1
08-27-96
CON MACRO X1,X2,SI,L1
MOV R2,#X1
MOV R2,#X1
ADD A,#X1+5-X2
DB 'STRING&SI&'
JNZ LAB&L1
LAB&L1:
XRL A,R3
ENDM
0000 E4 CLR A
0001 CON 23H,65H,SPECIAL,57
+0001 7A23 MOV R2,#23H
+0003 7A23 MOV R2,#23H
+0005 24C3 ADD A,#23H+5-65H
+0007 53 54 52 DB 'STRINGSPECIAL'
+000A 49 4E 47 53 50 45 43 49 41 4C
+0014 7000 JNZ LAB57
+ LAB57:
+0016 6B XRL A,R3
0000 END
The Cybernetic Micro Systems 8051 Family Assembler, Version 3.03 Page 2
08-27-96
;%T Symbol Name Type Value
CON . . . . . . . . . . . . . . M 0000
LAB57 . . . . . . . . . . . . . L 0016
;%Z
00 Errors (0000)
在算术表达式中所有的加数否需要连接操作符,这是因为算术操作符本身具有符号与数之间的自然分隔符作用。立即操作数(由#符号引导)可以用一个空格把它与一个形参分开,在这种情况下也不需要字符“&”。
最后,所有的宏指令所支持的功能可以合并起来使用,从而组成一个相当复杂的宏指令,例如宏指令可以包括条件结构,或者宏指令可以是一个条件结构的一部分,但是宏指令不可以嵌套,条件结构不可以超过宏指令的边界。即宏指令必须完全在一个条件结构中,或者条件结构必须在一条宏指令中。可以通过形参来决定条件表达式的值。当宏指令衩调用时,传递的实际参数值将决定每一条指令的生成代码。如:
CON MACRO C1,C2,P1,P2,P3
MOV A,P1
IF C1
INC R3
MOV R4,A
ENDIF
IF C2
MOV R5,P2
ADDC A,P3
ELSE
MOV R1,P2
XRL A,R3
ENDIF
MOV @R1,A
ENDM
CLR A
MOV R3,#2AH
CON 0,0,#23H,#65H,R6
END
列表文件如下:
The Cybernetic Micro Systems 8051 Family Assembler, Version 3.03 Page 1
08-27-96
CON MACRO C1,C2,P1,P2,P3
MOV A,P1
IF C1
INC R3
MOV R4,A
ENDIF
IF C2
MOV R5,P2
ADDC A,P3
ELSE
MOV R1,P2
XRL A,R3
ENDIF
MOV @R1,A
ENDM
0000 E4 CLR A
0001 7B2A MOV R3,#2AH
0003 CON 0,0,#23H,#65H,R6
+0003 7423 MOV A,#23H
+ IF 0
+ INC R3
+ MOV R4,A
+ ENDIF
+ IF 0
+ MOV R5,#65H
+ ADDC A,R6
+ ELSE
+0005 7965 MOV R1,#65H
+0007 6B XRL A,R3
+ ENDIF
+0008 F7 MOV @R1,A
0000 END
The Cybernetic Micro Systems 8051 Family Assembler, Version 3.03 Page 2
08-27-96
;%T Symbol Name Type Value
CON . . . . . . . . . . . . . . M 0000
;%Z
00 Errors (0000)
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.

