- 定义字节存储单元伪操作DCB
- 定义半字存储单元伪操作DCW(DCWU)
- 定义字存储单元伪操作DCD(DCDU)
- 为单精度浮点数定义字存储单元伪操作DCFS(DCFSU)
- 为双精度浮点数定义字存储单元伪操作DCFD(DCFDU)
- 内存单元分配伪操作SPACE
- 定义结构化内存表首地址伪操作MAP
- 定义结构化内存表中数据域伪操作FIELD
- 定义文字池伪操作LTORG
DCB
DCW(DCWU)
格式
功能
DCW(或DCWU)伪操作用于分配一片连续的半字存储单元并用伪操作中指定的表达式初始化。其中,表达式可以为程序标号或数值表达式。用DCW分配的字存储单元是半字对齐的,而用DCWU分配的字存储单元并不严格按照半字对齐。
DCD(或DCDU)
格式
功能
DCD(或DCDU)伪操作用于分配一片连续的字存储单元并用伪操作中指定的表达式初始化。
其表达式可以为程序标号或数值表达式。DCD也可用“&”代替。用DCD分配的字存储单元是字对齐的,而用DCDU分配的字存储单元并不严格按照字对齐。
使用示例
DCFD(或DCFDU)
语法格式
DCFD (或 DCFDU )伪操作用于为双精度的浮点数分配一片连续的字存储单元并用伪操作中指定的表达式初始化。每个双精度的浮点数占据两个字单元
使用示例
DCFS(或DCFSU)
语法格式
DCFS (或 DCFSU )伪操作用于为单精度的浮点数分配一片连续的字存储单元并用伪操作中指定的表达式初始化。每个单精度的浮点数占据一个字单元。
DCQ(或DCQU)
语法格式
DCQ (或 DCQU )伪操作用于分配一片以 8 个字节为单位的连续存储区域并用伪操作中指定的表达式初始化。
使用示例
SPACE
语法格式
SPACE 伪指令用于分配一片连续的存储区域并初始化为 0 。其中,表达式为要分配的字节数。
SPACE 也可用 “ % ” 代替。
使用示例
MAP
语法格式
MAP 伪指令用于定义一个结构化的内存表的首地址。 MAP 也可用 “ ^ ” 代替。
表达式可以为程序中的标号或数学表达式,基址寄存器为可选项,当基址寄存器选项不存在时,表达式的值即为内存表的首地址,当该选项存在时,内存表的首地址为表达式的值与基址寄存器的和。
MAP 伪操作通常与 FIELD 伪指令配合使用来定义结构化的内存表。
使用示例
MAP 0x100 , R0 ;定义结构化内存表首地址的值为 0x100 + R0 。
FIELD
语法格式
FIELD 伪指令用于定义一个结构化内存表中的数据域。 FILED 也可用 “ # ” 代替。
表达式的值为当前数据域在内存表中所占的字节数。
MAP 伪操作定义内存表的首地址, FIELD 伪操作定义内存表中的各个数据域,并可以为每个数据域指定一个标号供其他的指令引用。
注意 MAP 和 FIELD 伪指令仅用于定义数据结构,并不实际分配存储单元。
使用示例
LTORG
LTORG用于声明一个数据缓冲池(也称为文字池)的开始。在使用伪操作LDR时,常常需要在适当的地方加入LTORG声明数据缓冲池,LDR加载的数据暂时放于数据缓冲池。
语法格式
使用说明
当程序中使用LDR之类的指令时,数据缓冲池的使用可能越界。为防止越界发生可以使用LTORG伪操作定义数据缓冲池。通常大的代码段可以使用多个数据缓冲池。ARM汇编编译器一般把数据缓冲池放在代码段的最后面,即下一个代码段开始之前,或者END伪操作之前。
【例】显示定义文字池示例
0x800的值被编译器暂时放在了data[0-3]字段中。
参考文献:
孟祥莲.嵌入式系统原理及应用教程(第2版)[M].北京:清华大学出版社,2017.