RSS

汇编宏指令的格式

来源: 作者: 时间:2007-06-29 Tag: 点击:

LMAC MACRO P1,P2,L1

ANL A,P1

JZ L1

ORL A,P2

L1: MOV @R1,A

INC R1

ENDM

0000 792A MOV R1,#2AH

0002 7465 MOV A,#65H

0004 LMAC R3,#0F0H,R3ANDA0

+0004 5B ANL A,R3

+0005 6002 JZ R3ANDA0

+0007 44F0 ORL A,#0F0H

+0009 F7 R3ANDA0: MOV @R1,A

+000A 09 INC R1

000B 7423 MOV A,#23H

000D LMAC R5,#07H,R5ANDA0

+000D 5D ANL A,R5

+000E 6002 JZ R5ANDA0

+0010 4407 ORL A,#07H

+0012 F7 R5ANDA0: MOV @R1,A

+0013 09 INC R1

0014 00 NOP

0000 END

The Cybernetic Micro Systems 8051 Family Assembler, Version 3.03 Page 2

08-27-96

;%T Symbol Name Type Value

LMAC. . . . . . . . . . . . . . M 0000

R3ANDA0 . . . . . . . . . . . . L 0009

R5ANDA0 . . . . . . . . . . . . L 0012

;%Z

00 Errors (0000)

若在宏指令中使用标号,由于这些标号不是形参,所以不会被实参所替代。这样,在程序中多次引用是否会出现标号重复呢,这一点宏汇编程序已作了考虑,在作宏汇编时,汇编程序会在所有标号尾部增加一个唯一的四位数,以使多次引用时标号不会重复。下面的例子说明了多次引用宏指令时内部标号的处理。

例:

CHK MACRO N1,N2

XRL A,N1

JZ MATCH1

XRL A,N2

JNZ NOMATCH

ADD A,#15H

MATCH1:

ADD A,#7

MOV R4,A

NOMATCH:

MOV R5,A

ENDM

MOV A,#23H

CHK #65H,R3

MOV A,@R0

CHK R2,#23H

NOP

END

程序中有二个标号MATCH1及NOMATCH。宏指令被二次引用。经汇编后其列表文件如下:

The Cybernetic Micro Systems 8051 Family Assembler, Version 3.03 Page 1

08-27-96

CHK MACRO N1,N2

XRL A,N1

JZ MATCH1

XRL A,N2

JNZ NOMATCH

ADD A,#15H

MATCH1:

ADD A,#7

MOV R4,A

NOMATCH:

MOV R5,A

ENDM

0000 7423 MOV A,#23H

0002 CHK #65H,R3

+0002 6465 XRL A,#65H

+0004 6005 JZ MATCH10001

+0006 6B XRL A,R3

+0007 7005 JNZ NOMATCH0001

+0009 2415 ADD A,#15H

+ MATCH10001:

+000B 2407 ADD A,#7

+000D FC MOV R4,A

+ NOMATCH0001:

+000E FD MOV R5,A

000F E6 MOV A,@R0

0010 CHK R2,#23H

+0010 6A XRL A,R2

+0011 6006 JZ MATCH10002

+0013 6423 XRL A,#23H

+0015 7005 JNZ NOMATCH0002

+0017 2415 ADD A,#15H

+ MATCH10002:

+0019 2407 ADD A,#7

+001B FC MOV R4,A

+ NOMATCH0002:

+001C FD MOV R5,A

001D 00 NOP

0000 END

The Cybernetic Micro Systems 8051 Family Assembler, Version 3.03 Page 2

08-27-96

;%T Symbol Name Type Value

CHK . . . . . . . . . . . . . . M 0000

MATCH10001. . . . . . . . . . . L 000B

MATCH10002. . . . . . . . . . . L 0019

NOMATCH0001 . . . . . . . . . . L 000E

NOMATCH0002 . . . . . . . . . . L 001C

;%Z

00 Errors (0000)

从列表文件中我们可以看到,汇编程序已对宏指令中的标号作了处理,在第一次引用时,宏指令中的标号MATCH1及NOMATCH分别衩扩展为MATCH1001及NOMATCH0001,而第二次被引用时相应的标号被扩展为MATCH1002及NOMATCH0002,从而避免在同一程序中标号的重复。
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册