(1)  MACRO、MEND及MEXIT
MACRO伪操作标识宏定义的开始,MEND标识宏定义的结束。MERIT用于从宏中跳转出去。用MACRO和MEND定义的一段代码,成为宏定义体,这样在程序中就可通过宏名多次调用该代码段来完成相应的功能。
语法格式
MACRO                    ;宏定义开始
$lable  jump                 ;宏的名称为jump,有2个参数a1和a2
…
$lable.loop1                 ;$lable.loopl为宏体的内部标号
…
BGE   $lable.loop1
$lable.loop2                 ;$lable.loop2为宏体的内部标号
BL    $a1                 ;参数$a1为一个子程序的名称
BGT   $lable.loop2
…
ADR   $a2
…
MEND
在程序中调用该宏:
exam jump        sub,det      ;调用宏jump,宏的标号为exam
                        ;参数1为sub,参数2为det
程序被汇编后,宏展开的结果:
…
examloop1                   ;用exam代替$lable构成标号
                        ;examloop1
…
examloop2                  
BL    sub                 ;参数1的实际值为sub
BGT   examloop2
ADR   det                  ;参数2的实际值为det
示例27 用宏伪操作完成测试-跳转操作举例
在ARM中完成测试-跳转操作需要2条指令,下面定义一条宏指令完成测试-跳转操作。
MACRO                    ;宏定义开始
$lable  TestAndBranch$ds,$re,$aa       ;宏的名称为TestAndBranch
                        ;有3个参数
$lable  CMP$re,#0
B$aa   $ds
MEND                    ;宏定义结束
在程序中调用该宏:
testTestAndBranch  nzero,R0,NE  ;调用宏
程序被汇编后,宏展开的结果是:
test   CMP   R0,#0
BNE   nzero