简介:

MACRO MEND伪指令可以将一段代码定义为一个整体,称为宏指令;
宏是一段独立的程序代码,它是通过伪指令定义的,在程序中使用宏指令即可调用宏;
当程序被汇编时,汇编程序将对每个调用进行展开,用宏定义取代源程序中的宏指令;
在源程序被编译时,汇编器将宏调用展开,用宏定义中的指令序列代替程序中的宏调用,并将实际参数的值传递给宏定义中的形式参数;
MACRO、MEND伪指令可以嵌套使用;

语法:

MACRO
{$标号} 宏名 {$参数1, $参数2, ... ...}
指令序列
MEND

备注:

  • {$标号} 属于可选项
    {$标号} 在宏指令被展开时,标号会被替换为用户定义的符号
  • {$参数1, $参数2, … …} 属于可选项
    当宏指令被展开时,这些参数被相应的值替换
  • 包含在MACRO和MEND之间的指令序列称为宏定义体

优点:

可以在程序中通过宏指令多次调用该段代码;
宏指令的使用方式和功能与子程序有些相似,子程序可以提供模块化的程序设计、节省存储空间并提高运行速度;

缺点:

使用子程序结构时需要保护现场,从而增加了系统的开销;
在代码较短且需要传递的参数较多时,可以使用宏指令代替子程序;

示例:

    MACRO
MOV_PC_LR
    [ THUMBCODE
    bx lr
    |
    mov    pc,lr
    ]
    MEND