ARM汇编程序设计之:汇编语言文件格式
| 注意 | SHR是逻辑右移,不影响符号位。 |
表10.9列出了所有加、减、逻辑操作符。
表10.9 加减运算操作符
操 作 符 | 别 名 | 使 用 | 说 明 |
+ |
| A+B | A加上B |
− |
| A−B | 从B中减去A |
:AND: | && | A:AND:B | A和B按位与 |
:EOR: | ^ | A:EOR:B | A和B按位异或 |
:OR: | || | A:OR:B | A和B按位或 |
加、减运算的操作数均为数字表达式。逻辑运算的表达式为数字表达式,此运算按位操作产生结果。
表10.10列出了ARM汇编中的关系符。关系操作符用于表示两个同类表达式之间的关系。关系符的两个操作数必须为同种类型的操作数。操作数可以是数字变量、程序相关表达式、寄存器相关表达式或字符串。
表10.10 关系操作符
操 作 符 | 别 名 | 使 用 | 说 明 |
= | = = | A=B | 判断A是否等于B |
> |
| A>B | 判断A是否大于B |
>= |
| A>=B | 判断A是否大于等于B |
< |
| A<B | 判断A是否小于B |
<= |
| A<=B | 判断A是否小于等于B |
/= | <> != | A/=B | 判断A是否不等于B |
表10.11列出了汇编语言中的逻辑操作符。逻辑操作符进行两个逻辑表达式之间的基本逻辑操作。操作的结果为{FALSE}或{TURE}。
表10.11 逻辑操作符
操 作 符 | 使 用 | 说 明 |
:LAND: | A:LAND:B | A和B做逻辑与 |
续表
操 作 符 | 使 用 | 说 明 |
:LEOR: | A:LEOR:B | A和B做逻辑异或 |
:LOR: | A:LOR:B | A和B做逻辑或 |
10.3.4 汇编语言预定义寄存器和协处理器
ARM汇编器对ARM的寄存器和协处理器进行了预定义(包括APCS对r0~r15寄存器的定义),所有的寄存器和协处理器名都是大小写敏感的。
1.预定义寄存器名
下面列出了被ARM汇编器预定义的寄存器名。
· r0~r15和R0~R15(15个通用寄存器)。
· a1~a4(参数、结果或临时寄存器,同r0~r3)。
· v1~v8(变量寄存器,同r4~r11)。
· sb和SB(静态基址寄存器,同r9)。
· sl和SL(栈顶指针寄存器,同r10)。
· fp和FP(帧指针寄存器,同r11)。
· ip和IP(过程调用中间临时寄存器,同r12)。
· sp和SP(栈指针寄存器,同r13)。
· lr和LR(连接寄存器,同r14)。
· pc和PC(程序计数器,同r15)。
2.预定义程序状态寄存器名
下面列出了ARM汇编器预定义的程序状态寄存器的名称。
· cpsr和CPSR(当前程序状态寄存器)。
· spsr和SPSR(保留程序状态寄存器)。
3.预定义的浮点寄存器名
下面列出了ARM汇编器预定义的浮点运算寄存器。
· s0~s31和S0~S31(VFP单精度浮点运算寄存器)。
· d0~d15和D0~D15(VFP双精度浮点运算寄存器)。
| 注意 | FPA的寄存器f0~f7和F0~F7已不再使用。 |
4.预定义的协处理器名
下面列出了ARM汇编器预定义的协处理器名和协处理器寄存器名。
· p0~p15(预定义的协处理器0~15的名称)。
· c0~c15(预定义的协处理器寄存器0~15的名称)。
10.3.5 汇编语言内置变量
ARM汇编器中定义了一些内置变量,这些内置变量不能使用伪指令设置(如,SETA、SETL、SETS等),一般用于程序的条件汇编控制。
下面的例子显示了如何使用
汇编程序 ARM 文件格式 symbol instruction 相关文章:
- 基于DSP的汇编程序优化(01-10)
- 基于数字信号处理器的汇编程序优化方案(03-24)
- T0作定时器汇编程序(查询法)(12-02)
- DS1302时钟汇编程序数码管显示时间(12-02)
- 一个avr单片机的汇编程序,注意几个宏指令(12-02)
- 汇编程序:比较2个字符串是否相同(初级版)(12-01)