ARM汇编程序设计之:汇编语言文件格式
表达式中最先被计算。单目操作符写在操作数的前面。运算顺序为从右到左。
表10.5列出了汇编中单目运算操作符及其返回值。
表10.5 汇编中单目运算操作符及其返回值。
操 作 符 | 使 用 | 描 述 |
:CHR: | :CHR:A | 返回字母A的ASCII码 |
:LOWERCASE | :LOWERCASE:string | 将给定字符串中的所有大写字母变成小写 |
REVERSE_CC | :REVERSE_CC:cond_code | 对条件码取反 |
:STR: | :STR:A | 将一个数字量或逻辑表达式转换成串 |
:UPPERCASE: | :UPPERCASE:string | 将给定字符串中的所有小写字母变成大写 |
? | ?A | 返回定义符号A的代码行所生产代码行的字节数 |
续表
操 作 符 | 使 用 | 描 述 |
+和- | +A和-A | 单目加和单目减,操作数为数学或程序相关表达式 |
:BASE: | :BASE:A | 如果A是程序或寄存器相关表达式,:BASE:返回基址寄存器的编号 |
:CC_ENCODING: | :CC_ENCODING:cond_code | 返回条件码中的数字值 |
:DEF: | :DEF:A | 判断A是否被定义,如果被定义返回{TRUE};如果没有定义返回{FALSE} |
:INDEX: | :INDEX:A | 如果A是寄存器相关表达式,:INDEX:返回A相对于寄存器的偏移量,常用在宏操作中 |
:LEN: | :LEN:A | 字符串A的长 |
:LNOT: | :LNOT:A | 逻辑表达式A的值取反 |
:NOT: | :NOT:A ~A | A的值按位取反 |
:RCONT: | :RCONT:Rn | 返回寄存器编号,0~15对应寄存器r0~r15 |
(3)双目运算
ARM汇编中将双目运算符放在两个操作数中间。一般情况下,双目运算的优先级低于单目运算。下面将以操作符的优先级为序分别介绍各操作符。
| 注意 | 操作符的优先级与C语言中操作符优先级顺序略有不同,详见单目运算一节。 |
表10.6列出了乘法相关操作符。
表10.6 乘法相关操作符
操 作 符 | 别 名 | 使 用 | 说 明 |
* |
| A*B | 乘法操作 |
/ |
| A/B | 除法操作 |
:MOD: | % | A:MOD:B | 以B为除数对A取模 |
乘法相关操作符包括乘、除、取模运算,在双目运算中具有最高优先级。这些运算的操作数只能是数字表达式。
表10.7列出了字符串相关操作符。
表10.7 字符串操作符
操 作 符 | 使 用 | 说 明 |
:CC: | A:CC:B | 连接两个字符串 |
:LEFT: | A:LEFT:B | 返回字符串A最左端B长度的字符,操作数A必须为字符串,B必须为整数表达式 |
:RIGHT: | A:RIGHT:B | 返回字符串A最右端B长度的字符,操作数A必须为字符串,B必须为整数表达式 |
表10.8列出了移位操作符。移位操作中两个操作数均为数字表达式。
表10.8 移位操作符
操 作 符 | 别 名 | 使 用 | 说 明 |
:ROL: |
| A:ROL:B | A循环左移B位 |
:ROR: |
| A:ROR:B | A循环右移B位 |
:SHL: | << | A:SHL:B | A左移B位 |
:SHR: | >> | A:SHR:B | A右移B位 |
汇编程序 ARM 文件格式 symbol instruction 相关文章:
- 基于DSP的汇编程序优化(01-10)
- 基于数字信号处理器的汇编程序优化方案(03-24)
- T0作定时器汇编程序(查询法)(12-02)
- DS1302时钟汇编程序数码管显示时间(12-02)
- 一个avr单片机的汇编程序,注意几个宏指令(12-02)
- 汇编程序:比较2个字符串是否相同(初级版)(12-01)