1.1 ARM汇编伪指令--ADR
ARM中伪指令不是真正的ARM指令或Thumb指令,这些伪指令在编译器 对源程序进行汇编处理时被替换成相应的ARM或Thumb指令序列.ARM 伪指令包括ADR,ADRL,LDR和NOP. ADR--小范围的地址读取伪指令 该指令将基于PC的地址值或基于寄存器的地址值读取到寄存器 中.当地址值是字对齐时,地址的取址范围是-1020~1020字节. 在处理源程序时,ADR伪指令通常被编译器替换成一条ADD指令或 SUB指令来实现该ADR伪指令的功能.读取的地址必须和ADR指令在 同一个代码段中. 语法格式: ADR{cond} register,expr 例:start MOV r0,#10 ADR r4,start ; SUB r4,pc,#0xc
语法 LDR rd, =const For example LDR r0, =0xFF => LDR r0, =0x55555555=>
MOV r0, #0xFF LDR r0, [PC, #Imm12] … … DCD 0x55555555
1.3 ARM汇编伪指令--NOP
NOP--空操作伪指令 NOP伪指令在汇编时将被替换成ARM中的空操 作,如可能为 " MOV R0 ,R0 "等.NOP伪指令不 影响CPSR中的条件标志位.
2.1ARM汇编语言语句格式(1)
ARM 汇编语言程序中符号的定义规则: 符号区分大小写,同名的大,小写符号会被编译器认为是两 个不同的符号. 符号由大小写字母,数字以及下划线组成. 符号在其作用范围内必须唯一. 自定义的符号名不能与系统的保留字相同. 符号名不应与指令或伪操作同名. 程序中的变量和常量 变量;变量有数字变量,逻辑变量和串变量3种类型 数字常量;使用EQU伪操作来定义数字常量. 标号;标号代表一个地址,段内标号的地址在汇编时确定, 而段外标号的地址在连接时确定.