古文字翻译-simond
ARM
汇编伪指令宏的用法详解
(MACRO-MEND
宏是一段独立的程序代码,它是通过伪指令定义的,在程序中使用宏指令即可
调用宏。当程序被汇编时,汇编程序将对每个调用进行展开,用宏定义取代源程序
中的
宏指令。
MACRO
、
MEND
语法格式:
MACRO
[$$ label] macroname{ $$
parameter1
,
$$
parameter
,
…… }
指令序列
MEND
MACRO
伪操作标识宏定义的开始,
MEND
标识宏定义的结束。用
MACRO
及
MEND
定义一段代码,称为宏定
义体,这样在程序中就可以通过宏指令多次调
用该代码段。
其中,
$$
label
在宏指令被展开时,
label
< br>会被替换成相应的符号,通常是一个
标号。在一个符号前使用
$$
表示程序被汇编时将使用相应的值来替代
$$
后的符号。
macroname
为所定义的宏的名称。
$$param
eter
为宏指令的参数。当宏指令被展开时将被替换成相应的值,类似于
函数中的形式参数,可以在宏定义时为参数指定相应的默认值。
宏指令的使用方式和功能与子程序有些相似,子程序可以提供模块化的程序设
计、节省存储空间并提高运行速度。但在使用子程序结构时需要保护现场,从而增
加了
系统的开销,因此,在代码较短且需要传递的参数较多时,可以使用宏汇编技
术。
首先使用
MACRO
和
MEND
等伪操作定义宏。包含在
MACRO
和
MEND
之
间的代码段称为宏定义体,在
MACRO
伪操作之后的一行声明宏的原型(包含宏
名、所需的参数),然后就可以在汇编程序
中通过宏名来调用它。在源程序被汇编
时,汇编器将宏调用展开,用宏定义体代替源程序
中的宏定义的名称,并用实际参
数值代替宏定义时的形式参数。
宏定义中的
$$label
是一个可选参
数。当宏定义体中用到多个标号时,可以使用
类似
$$label
.$$internallabel
的标号命名规则使程序易读。
MACRO
、
MEND
伪操作可以嵌套使用。
使用示例:
MACRO
$$HandlerLabel HANDLER $$HandleLabel
;宏的名称为
HANDLER
,有<
/p>
1
个参
数
$$Ha
ndleLabel
$$HandlerLabel
sub
sp,sp,#4
stmfd sp!,{r0}
;decrement sp(to store jump address
;PUSH the work register to stack(lr does not
push because it return to original
address load the address of HandleXXX to r0 load
the
contents(service routine start
address of HandleXXX store the contents(ISR of
HandleXXX to stack POP the work
register and pc(jump to ISR ldr r0,=$$HandleLabel
ldr r0,[r0] str r0,[sp,#4] ldmfd
sp!,{r0,pc}
MEND
;在程序中调用该宏
古文字翻译-simond
古文字翻译-simond
古文字翻译-simond
古文字翻译-simond
古文字翻译-simond
古文字翻译-simond
古文字翻译-simond
古文字翻译-simond
-
上一篇:初中语文文言文阅读专题训练试题经典
下一篇:四年级语文下册近义词反义词大全