ARM汇编程序由指令(ARM指令和伪指令)、伪操作和宏指令组成。
ARM伪操作:
GET,一般用于包括界说常量的源文件,如用EQU界说的外设地址,类似于C言语顶用include好含头文件。(汇编言语中被包括的文件常以.inc完毕)GET 2440addr.inc
AREA、ENTRY和END
AREA操作常用于界说一个段。一般一个ARM源程序至少需求一个代码段。
ENTRY用于指定程序的进口点。
END用于告知汇编编译器源文件现已完毕。
EXPORT和IMPORT
EXPORT 伪操作用于声明外部标号,即当时标号是根源文件中界说的,在其他文件中或许会被引证。
IMPORT 伪操作用于告知编译器当时的符号不是根源文件中界说的,而是在其他源文件中界说的,在根源文件中或许引证该符号。
EQU用于界说常量。提示,在每条ARM指令前有必要有空格,可是用EQU界说常量时,有必要顶格写,不然编译器会报错。
LTORG用于声明一个文字池,所谓文字池便是一个数据缓冲区。
ALIGN伪操作经过调整地址指针使当时方位满意必定的对齐方法。在ARM代码中要求地址符号是字对齐的。
MACRO和MEND 伪操作用于宏界说。
MACRO表明宏界说的开端,MEND表明宏界说的完毕。用MACRO和MEND界说的一段代码,称为宏体。这样,在程序中就能够经过宏指令屡次调用该代码段。
MACRO
{$label}MACRO Name {$parameter}{$parameter}……
;这儿增加自己的代码
MEND
MAP和FIELD
MAP用于界说内存表的首地址,其间MAP也能够用^表明。FIELD用于界说一个内存表中的数据域,其间FIELD能够用#表明。MAP和FIELD组合类似于C言语中界说一个数组,MAP指向数组的首地址,FIELD用于分配数组中的各个元素。
#define pISR_SWI (*(unsigned*)(_ISR_STARTADDRESS+0x8))
强制转化后,能够对pISR_SWI进行赋值,调用。
_ISR_STARTADDRESS EQU 0x33FFFF00
^ _ISR_STARTADDRESS
HandleReset # 4
HandleUndef # 4
HandleSWI # 4
HandlePabort # 4
HandleDabort # 4
ARM伪指令:ADRL;LDR;DCD SPACE