⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 +Ҧ

📁 siglechip_development 单片机开发资料
💻
📖 第 1 页 / 共 3 页
字号:
    size=3>一的四位数,以使多次引用时标号不会重复。例:</FONT></P><FONT face=Arial size=3>
    <P align=justify><I>LMAC MACRO P1,P2,L1</I></P><I>
    <P align=justify>ANL A,P1</P>
    <P align=justify>JZ L1</P>
    <P align=justify>ORL A,P2</P>
    <P align=justify>L1: MOV @R1,A</P>
    <P align=justify>INC R1</P>
    <P align=justify>ENDM</P>
    <P align=justify></P>
    <P align=justify>MOV R1,#2AH</P>
    <P align=justify>MOV A,#65H</P>
    <P align=justify>LMAC R3,#0F0H,R3ANDA0</P>
    <P align=justify>MOV A,#23H</P>
    <P align=justify>LMAC R5,#07H,R5ANDA0</P>
    <P align=justify>NOP</P>
    <P align=justify>END</P></I></FONT>
    <P align=justify><FONT face=Arial size=3></FONT><FONT face=宋体 lang=ZH-CN 
    size=3>程序中有二个标号MATCH1及NOMATCH,宏指令被二次引用,经汇编后其列表文件如下:</FONT></P><I><FONT 
    face=Arial size=3>
    <P align=justify>The Cybernetic Micro Systems 8051 Family Assembler, Version 
    3.03 Page 1</P>
    <P align=justify>08-27-96</P>
    <P align=justify>LMAC MACRO P1,P2,L1</P>
    <P align=justify>ANL A,P1</P>
    <P align=justify>JZ L1</P>
    <P align=justify>ORL A,P2</P>
    <P align=justify>L1: MOV @R1,A</P>
    <P align=justify>INC R1</P>
    <P align=justify>ENDM</P>
    <P align=justify></P>
    <P align=justify>0000 792A MOV R1,#2AH</P>
    <P align=justify>0002 7465 MOV A,#65H</P>
    <P align=justify>0004 LMAC R3,#0F0H,R3ANDA0</P>
    <P align=justify>+0004 5B ANL A,R3</P>
    <P align=justify>+0005 6002 JZ R3ANDA0</P>
    <P align=justify>+0007 44F0 ORL A,#0F0H</P>
    <P align=justify>+0009 F7 R3ANDA0: MOV @R1,A</P>
    <P align=justify>+000A 09 INC R1</P>
    <P align=justify>000B 7423 MOV A,#23H</P>
    <P align=justify>000D LMAC R5,#07H,R5ANDA0</P>
    <P align=justify>+000D 5D ANL A,R5</P>
    <P align=justify>+000E 6002 JZ R5ANDA0</P>
    <P align=justify>+0010 4407 ORL A,#07H</P>
    <P align=justify>+0012 F7 R5ANDA0: MOV @R1,A</P>
    <P align=justify>+0013 09 INC R1</P>
    <P align=justify>0014 00 NOP</P>
    <P align=justify>0000 END</P>
    <P align=justify>The Cybernetic Micro Systems 8051 Family Assembler, Version 
    3.03 Page 2</P>
    <P align=justify>08-27-96</P>
    <P align=justify>;%T Symbol Name Type Value</P>
    <P align=justify>LMAC. . . . . . . . . . . . . . M 0000</P>
    <P align=justify>R3ANDA0 . . . . . . . . . . . . L 0009</P>
    <P align=justify>R5ANDA0 . . . . . . . . . . . . L 0012</P>
    <P align=justify>;%Z</P>
    <P align=justify>00 Errors (0000)</P></FONT></I>
    <P align=justify><FONT face=Arial size=3></FONT><FONT face=宋体 lang=ZH-CN 
    size=3>若在宏指令中使用标号,由于这些标号不是形参,所以不会被实参所替代。这样,在程序中多次引用是否会出现标号重复呢,这一点宏汇编程序已作了考虑,在作宏汇编时,汇编程序会在所有标号尾部增加一个唯一的四位数,以使多次引用时标号不会重复。下面的例子说明了多次引用宏指令时内部标号的处理。</FONT></P>
    <P align=justify><FONT face=Arial size=3></FONT><FONT face=宋体 lang=ZH-CN 
    size=3>例:</FONT></P><I><FONT face=Arial size=3>
    <P align=justify>CHK MACRO N1,N2</P>
    <P align=justify>XRL A,N1</P>
    <P align=justify>JZ MATCH1</P>
    <P align=justify>XRL A,N2</P>
    <P align=justify>JNZ NOMATCH</P>
    <P align=justify>ADD A,#15H</P>
    <P align=justify>MATCH1:</P>
    <P align=justify>ADD A,#7</P>
    <P align=justify>MOV R4,A</P>
    <P align=justify>NOMATCH:</P>
    <P align=justify>MOV R5,A</P>
    <P align=justify>ENDM</P>
    <P align=justify></P>
    <P align=justify>MOV A,#23H</P>
    <P align=justify>CHK #65H,R3</P>
    <P align=justify>MOV A,@R0</P>
    <P align=justify>CHK R2,#23H</P>
    <P align=justify>NOP</P>
    <P align=justify>END</P></FONT></I>
    <P align=justify><FONT face=Arial size=3></FONT><FONT face=宋体 lang=ZH-CN 
    size=3>程序中有二个标号MATCH1及NOMATCH。宏指令被二次引用。经汇编后其列表文件如下:</FONT></P><I><FONT 
    face=Arial size=3>
    <P align=justify>The Cybernetic Micro Systems 8051 Family Assembler, Version 
    3.03 Page 1</P>
    <P align=justify>08-27-96</P>
    <P align=justify>CHK MACRO N1,N2</P>
    <P align=justify>XRL A,N1</P>
    <P align=justify>JZ MATCH1</P>
    <P align=justify>XRL A,N2</P>
    <P align=justify>JNZ NOMATCH</P>
    <P align=justify>ADD A,#15H</P>
    <P align=justify>MATCH1:</P>
    <P align=justify>ADD A,#7</P>
    <P align=justify>MOV R4,A</P>
    <P align=justify>NOMATCH:</P>
    <P align=justify>MOV R5,A</P>
    <P align=justify>ENDM</P>
    <P align=justify></P>
    <P align=justify>0000 7423 MOV A,#23H</P>
    <P align=justify>0002 CHK #65H,R3</P>
    <P align=justify>+0002 6465 XRL A,#65H</P>
    <P align=justify>+0004 6005 JZ MATCH10001</P>
    <P align=justify>+0006 6B XRL A,R3</P>
    <P align=justify>+0007 7005 JNZ NOMATCH0001</P>
    <P align=justify>+0009 2415 ADD A,#15H</P>
    <P align=justify>+ MATCH10001:</P>
    <P align=justify>+000B 2407 ADD A,#7</P>
    <P align=justify>+000D FC MOV R4,A</P>
    <P align=justify>+ NOMATCH0001:</P>
    <P align=justify>+000E FD MOV R5,A</P>
    <P align=justify>000F E6 MOV A,@R0</P>
    <P align=justify>0010 CHK R2,#23H</P>
    <P align=justify>+0010 6A XRL A,R2</P>
    <P align=justify>+0011 6006 JZ MATCH10002</P>
    <P align=justify>+0013 6423 XRL A,#23H</P>
    <P align=justify>+0015 7005 JNZ NOMATCH0002</P>
    <P align=justify>+0017 2415 ADD A,#15H</P>
    <P align=justify>+ MATCH10002:</P>
    <P align=justify>+0019 2407 ADD A,#7</P>
    <P align=justify>+001B FC MOV R4,A</P>
    <P align=justify>+ NOMATCH0002:</P>
    <P align=justify>+001C FD MOV R5,A</P>
    <P align=justify>001D 00 NOP</P>
    <P align=justify>0000 END</P>
    <P align=justify></P>
    <P align=justify>The Cybernetic Micro Systems 8051 Family Assembler, Version 
    3.03 Page 2</P>
    <P align=justify>08-27-96</P>
    <P align=justify>;%T Symbol Name Type Value</P>
    <P align=justify>CHK . . . . . . . . . . . . . . M 0000</P>
    <P align=justify>MATCH10001. . . . . . . . . . . L 000B</P>
    <P align=justify>MATCH10002. . . . . . . . . . . L 0019</P>
    <P align=justify>NOMATCH0001 . . . . . . . . . . L 000E</P>
    <P align=justify>NOMATCH0002 . . . . . . . . . . L 001C</P>
    <P align=justify>;%Z</P>
    <P align=justify>00 Errors (0000)</P></FONT></I>
    <P align=justify><FONT face=Arial size=3></FONT><FONT face=宋体 lang=ZH-CN 
    size=3>从列表文件中我们可以看到,汇编程序已对宏指令中的标号作了处理,在第一次引用时,宏指令中的标号MATCH1及NOMATCH分别衩扩展为MATCH1001及NOMATCH0001,而第二次被引用时相应的标号被扩展为MATCH1002及NOMATCH0002,从而避免在同一程序中标号的重复。</FONT></P>
    <P align=justify><FONT face=Arial size=3></FONT><FONT face=宋体 lang=ZH-CN 
    size=3>“&”在宏指令中作为连接操作符。“&”通常出现在带有形参的字符串中。为了区分字符串中哪些字符是形参,需要在形参与固定字符间加入“&”例如:</FONT></P><FONT 
    face=Arial size=3>
    <P align=justify><I>CON MACRO X1,X2,SI,L1</I></P><I>
    <P align=justify>MOV R2,#X1</P>
    <P align=justify>MOV R2,#X1</P>
    <P align=justify>ADD A,#X1+5-X2</P>
    <P align=justify>DB 'STRING&amp;SI&amp;'</P>
    <P align=justify>JNZ LAB&amp;L1</P>
    <P align=justify>LAB&amp;L1:</P>
    <P align=justify>XRL A,R3</P>
    <P align=justify>ENDM</P>
    <P align=justify>CLR A</P>
    <P align=justify>CON 23H,65H,SPECIAL,57</P>
    <P align=justify>END</P></I></FONT>
    <P align=justify><FONT face=Arial size=3></FONT><FONT face=宋体 lang=ZH-CN 
    size=3>列表文件如下:</FONT></P><I><FONT face=Arial size=3>
    <P align=justify>The Cybernetic Micro Systems 8051 Family Assembler, Version 
    3.03 Page 1</P>
    <P align=justify>08-27-96</P>
    <P align=justify>CON MACRO X1,X2,SI,L1</P>
    <P align=justify>MOV R2,#X1</P>
    <P align=justify>MOV R2,#X1</P>
    <P align=justify>ADD A,#X1+5-X2</P>
    <P align=justify>DB 'STRING&amp;SI&amp;'</P>
    <P align=justify>JNZ LAB&amp;L1</P>
    <P align=justify>LAB&amp;L1:</P>
    <P align=justify>XRL A,R3</P>
    <P align=justify>ENDM</P>
    <P align=justify>0000 E4 CLR A</P>
    <P align=justify>0001 CON 23H,65H,SPECIAL,57</P>
    <P align=justify>+0001 7A23 MOV R2,#23H</P>
    <P align=justify>+0003 7A23 MOV R2,#23H</P>
    <P align=justify>+0005 24C3 ADD A,#23H+5-65H</P>
    <P align=justify>+0007 53 54 52 DB 'STRINGSPECIAL'</P>
    <P align=justify>+000A 49 4E 47 53 50 45 43 49 41 4C</P>
    <P align=justify>+0014 7000 JNZ LAB57</P>
    <P align=justify>+ LAB57:</P>
    <P align=justify>+0016 6B XRL A,R3</P>
    <P align=justify>0000 END</P>
    <P align=justify></P>
    <P align=justify>The Cybernetic Micro Systems 8051 Family Assembler, Version 
    3.03 Page 2</P>
    <P align=justify>08-27-96</P>
    <P align=justify>;%T Symbol Name Type Value</P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -