程序经常包含可执行多次的例程。您可以将一个例程定义为宏,然后在需要重复例程的位置调用该宏,而不必重复例程的源语句。这样可简化并缩短源程序。
如果您希望多次调用一个宏,但每次使用不同的数据,则可以在宏中分配参数。这样每次调用宏时都能够传递不同的信息。宏语言支持一种特殊的符号,被称为替代符号,用于宏参数。请参阅节 6.3,了解详情。
使用宏是一个包含 3 个步骤的过程。
- 定义宏。在程序中使用宏之前必须进行定义。可以通过两种方法来定义宏:
- 宏可以在源文件 的开头定义,或在复制/包含文件中定义。相关详细信息,请参阅节 6.2,定义宏。
- 宏也可以在宏库 中定义。宏库是一组归档格式的文件,由归档器创建。归档文件(宏库)中的每个成员都包含一个与成员名称对应的宏定义。您可以使用 .mlib 指令来访问宏库。如需更多信息,请参阅 节 6.4。
- 调用宏。定义宏之后,可在源程序中将宏名称作为助记符进行调用。这被称为宏调用。
- 扩展宏。源程序调用各个宏时,汇编器会将其扩展。在扩展期间,汇编器会通过变量将参数传递至宏参数,用宏定义替换宏调用语句,然后对源代码进行汇编。默认情况下,宏表达式在列表文件中列印。您可以使用 .mnolist 指令来关闭扩展列表。如需更多信息,请参阅 节 6.8。
当汇编器遇到宏定义时,会替换操作码表中的宏名称。这样会重新定义原先定义的所有与该宏同名的宏、库条目、指令或指令助记符。这样您可扩展指令的功能,并添加新指令。