ARM汇编语言程序中,语句由指令、伪操作和宏指令组成,伪操作不响机器指令那样在计算机运行期间由机器执行,
它是在汇编程序对源程序汇编期间由汇编程序处理的。宏是一段独立的程序代码,在程序中通过宏指令调用宏,当
程序被汇编时,汇编程序将对每个宏调用进行展开,用宏定义取代源程序中的宏指令。本节介绍以下类型的ARM伪
操作和宏指令。
一、符号定义伪操作:
符号定义伪操作用于定义ARM汇编程序中的变量,对变量进行赋值以及定义寄存器名称,包括以下伪操作:
1、GBLA、GBLL、GBLS声明全局变量:
GBLA:伪操作声明一个全局算术变量,并将其初始化为0.
GBLL:伪操作声明一个全局的逻辑变量,并将其初始化为FALSE;
GBLS:伪操作声明一个全局的串变量,并将其初始化为空串;
注意:如果使用这些伪操作重新声明已经声明过的变量,则变量的值将被初始化成后一次声明语句中的值。
2、LCLA、LCLL、LCLS声明局部变量:
LCLA:伪操作声明一个局部算术变量,并将其初始化为0.
LCLL:伪操作声明一个局部的逻辑变量,并将其初始化为FALSE;
LCLS:伪操作声明一个局部的串变量,并将其初始化为空串;
注意:如果使用这些伪操作重新声明已经声明过的变量,则变量的值将被初始化成后一次声明语句中的值。
3、SETA、SETL、SETS变量赋值:
SETA:伪操作给一个算术变量赋值;
SETL:伪操作给一个逻辑变量赋值;
SETS:伪操作给一个串变量赋值;
4、RLIST:
RLIST用于为一个通用寄存器列表定义名称。
5、CN:
CN伪操作用来为一个协处理器的寄存器定义名称。
6、CP
CP伪操作用来为一个协处理器定义名称;
7、DN、SN
二、数据定义伪操作
1、LTORG
LTORG用户声明一个数据缓冲池的开始,通常,ARM汇编编译器把数据缓冲池放在代码段的最后面,即下一个代码段开始之前
或者END伪操作之前。
2、MAP
MAP用于定义一个结构化的内存表首地址,此时,内存表的位置计数器设置成该地址;
3、FIELD
FILED用于顶一个结构化内存表的数据域
4、SPACE
SPACE伪操作用于分配一块内存单元,并用0初始化,%是SPACE的同义词。
5、DCB
DCB伪操作用于分配一段字节内存单元,并用语法格式中的expr初始化之
6、DCD及DCDU
7、DCDO
8、DCFD及DCFDU
9、DCFS及DCFSU
10、DCI
11、DCQ及DCQU
12、DCW及DCWU
三、汇编控制伪操作
1、IF、ELSE及ENDIF
2、WHILE及WEND
3、MACRO及MEND
4、