在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
暂无评论...