ARM汇编书写格式及符号(symbol)和表达式(expr)
ARM汇编语言中的表达式
表达式是由符号、数值、单目或多目操作符以及括号组成的。
1、字符串表达式
字符串表达式由字符串、字符串变量、操作符以及括号组成。字符串的最大长度为512字节,最小长度为0.下面介绍字符串表达式的组成元素。
字符串:由包含在双引号内的一系列的字符组成。字符串的长度受到ARM汇编语言语句长度的限制。当在字符串中包含美元符号$或者引号"时,用$$表示一个$,用""表示一个"。
字符串变量:用伪操作GBLS或者LCLS声明,用SETS赋值。
操作符:
(1)LEN:返回字符串的长度
:LEN:A
其中,A为字符串变量
(2)CHR:可以将0~255之间的整数作为含一个ASCII字符的字符串。当有些ASCII字符不方便放在字符串中时,可以使用CHR将其放在字符串表达式中。
:CHR:A
其中,A为某一字符的ASCII值
(3)STR:将一个数字量或者逻辑表达式转换成串。对于32位的数字量而言,STR将其转换成8个十六进制数组成的串;对于逻辑表达式而言,STR将其转换成字符串T或者F
:STR:A
其中,A为数字量或者逻辑表达式
(4)LEFT:返回一个字符串最左端一定长度的子串
A:LEFT:B
其中,A为源字符串,B为数字量,表示LEFT将返回的字符个数
(5)RIGHT:返回一个字符串最右端一定长度的子串
A:RIGHT:B
其中,A为源字符串,B为数字量,表示RIGHT将返回的字符个数
(6)CC:用于连接两个字符串。
A:CC:B
其中,A为第1个源字符串。B为第2个源字符串。CC操作符将字符串B连接在字符串A的后面。
2、数字表达式
数字表达式由数字常量、数字变量、操作符和括号组成
数字变量用伪操作GBLA或者LCLA声明,用SETA赋值,它代表一个32位的数字量。
操作符:
(1)NOT:按位取反
:NOT:A
其中,A为一个32位数字量
(2)+、—、×、/及MOD算术操作符
A+B,A-B,A×B,A/B
A:MOD:B表示A除以B的余数
(3)ROL,ROR,SHL,SHR移位
A:ROL:B将整数A循环左移B位
A:SHL:B将整数A左移B位
(4)AND、OR及EOR按位逻辑操作符
A:AND:B将数字表达式A和B按位作逻辑与操作
3、基于寄存器和基于PC的表达式
基于寄存器的表达式表示了某个寄存器的值加上(或者减去)一个数字表达式
基于PC的表达式表示了PC寄存器的值加上(或减去)一个数字表达式。基于PC的表达式通常由程序中的标号与一个数字表达式组成。相关的操作符:
(1)BASE:返回基于寄存器的表达式中的寄存器编号。
:BASE:A
(2)INDEX:返回基于寄存器的表达式相对于其基址寄存器的偏移量。
:INDEX:A
(3)+、﹣:正负号,可以放在数字表达式或者基于PC的表达式前面。
+A(﹣A)
4、逻辑表达式
由逻辑量、逻辑操作符、关系操作符以及括号组成,取值范围为{FLASE}和{TRUE}
关系操作符:用于表示两个同类表达式之间的关系。关系操作符和它的两个操作数组成一个逻辑表达式,其取值为{FALSE}或{TRUE}
如A=B 表示A等于B
A/=B,A<>B表示A不等于B
逻辑操作符:进行两个逻辑表达式之间的基本逻辑操作。操作的结果为{FLASE}或{TRUE}
:LNOT:A 逻辑表达式A的值取反
A:LAND:B逻辑表达式A和B逻辑与
5、其他的一些操作符
(1)?:返回定义符号A的代码行所生成的可执行代码的字节数
?A
其中,A为一个符号
(2)DEF:判断某个符号是否已定义
:DEF:A
如果符号A已经定义,上述结果为{TRUE},否则为{FLASE}
(3)SB_OFFSET_19_12
:SB_OFFSET_19_12:label 其中,label为一个标号
返回(label-SB)的bits[19:12]
(4)SB_OFFSET_11_0
:SB_OFFSET_11_0:label
返回(label-SB)的bits[11:0]
参考文章
1. http://hi.baidu.com/%CF%EB%B7%C9%B5%C4%B4%FC%CA%F3/blog/item/ba6e93cb867a9e17be09e68e
2. ARM嵌入式系统结构与编程.邱铁。清华大学出版社
3. ARM嵌入式系统入门.三恒星科技.中国电力出版社
4. ARM嵌入式应用技术基础.刘凯.清华大学出版社
ARM汇编书写格 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)