在ARM的汇编程序中,有如下几种伪指令: 符号定义伪指令。 数据定义伪指令。 汇编控制伪指令。 信息报告伪指令。 宏指令以及其他伪指令。 1.符号定义伪指令用于定义ARM汇编程序中的变量、对变量赋值以及定义寄存器的别名等 (1)LCLA、LCLL和LCLS 格式: LCLA/LCLL/LCLS 局部变量名 (2)GBLA、GBLL和GBLS 格式: GBLA/GBLL/GBLS 变量名 (3)SETA、SETL和SETS 格式: 变量名 SETA/SETL/SETS 表达式 (4)RLIST 格式: 名称 RLIST {寄存器列表} 2.数据定义伪操作 数据定义伪操作用于为数据分配存储单元,同时也可完成已分配存储单元的初始化。用到的数据定义伪操作有如下几种: DCB 分配连续的字节存储单元并使用指定数据初始化。 DCW/DCWU 分配连续的半字(2字节)存储单元并使用指定的数据初始化。 DCD/DCDU 分配连续的字(4字节)存储单元并使用指定的数据初始化。 DCQ/DCQU 分配一块以8个字节为单位的连续的存储单元并使用指定的数据初始化。 DCFS/DCFSU 为单精度的浮点数分配连续的字存储单元并使用指定的数据初 始化。 DCFD/DCFDU 为双精度的浮点数分配连续的字存储单元并使用指定的数据初 始化。 SPACE 分配一块连续的存储单元。 FIELD 定义一个结构化的内存表的数据域。 MAP 定义一个结构化的内存表首地址。 (1)DCB 格式: 标号 DCB 表达式 (2)DCW/DCWU 格式: 标号 DCW/DCWU 表达式 (3)DCD/DCDU 格式: 标号 DCD/DCDU 表达式 (4)DCQ/DCQU 格式: 标号 DCQ/DCQU 表达式 (5)DCFD/DCFDU 格式: 标号 DCFD/DCFDU 表达式 (6)DCFS/DCFSU 格式: 标号 DCFS/DCFSU 表达式 (7)SPACE 格式: 标号 SPACE 表达式 (8)MAP 格式: MAP 表达式 [,基址寄存器] (9)FIELD 格式: 标号 FIELD 字节数 3.汇编控制伪操作 汇编控制伪操作用于指引汇编程序的执行流程,常用的伪操作包括以下几种: MACRO和MEND。 IF、ELSE和ENDIF。 WHILE和WEND。 MEXIT。 (1)MACRO和MEND 格式: MACRO [$标号] 宏名 [$参数1,$参数2,……] 指令序列 MEND (2)IF、ELSE和ENDIF 格式: IF 逻辑表达式 代码段1 ELSE 代码段2 ENDIF (3)WHILE和WEND 格式: WHILE 逻辑表达式 代码段 WEND (4)MEXIT 语法格式: MEXIT 4.其他伪指令 在汇编程序中经常会使用一些其他的伪指令,包括以下几条: ASSERT AREA ALIGN CODE16/CODE32 ENTRY END EQU IMPORT EXPORT/GLOBAL EXTERN INCBIN GET/INCLUDE RN ROUT (1)ASSERT 格式: ASSERT 逻辑表达式 (2)AREA 格式: AREA 段名 属性,…… (3)ALIGN 格式: ALIGN [表达式[,偏移量]] (4)CODE16/CODE32 格式: CODE16/CODE32 (5)ENTRY 格式: ENTRY (6)END 格式: END (7)EQU 格式: 名称 EQU 表达式 [,类型] (8)EXPORT/GLOBAL 格式: EXPORT/GLOBAL 标号 [,WEAK] (9)IMPORT 格式: IMPORT 标号 [,WEAK] (10)EXTERN 语法格式: EXTERN 标号 [,WEAK] (11)GET/INCLUDE 格式: GET 文件名 (12)INCBIN 格式: INCBIN 文件名 (13)RN 格式: 名称 RN 表达式 (14)ROUT 格式: [名称] ROUT |