您的位置 首页 制造

ARM汇编书写格局及符号(symbol)和表达式(expr)

汇编语言的语句格式如下:{symbol}{instruction/directive/pseud0-instruction}{;comment}symbol:标号/局部标号/常量/变量instruct

汇编语言的查办格局如下:

{symbol}{instruction/directive/pseud0-instruction}{;comment}

symbol:标号/部分标号/常量/变量

instruction:指令

directive:伪操作

pseudo-instruction:伪指令

comment:注释

{}中括号内是可选

留意:

1.symbol有必要顶格书写。(ARM汇编这以后不加“:”)(GUN汇编要加“:”)

2.symbol命名规矩:由字母,数字,下划线组成;除部分标号外,不能以数字最初。

3.指令不能顶格书写。

4.ARM指令,伪指令,伪操作,寄存器名能够悉数为大写字母,也可悉数为小写字母;不行巨细写混用。

5.假如查办太长,能够将一条查办分几行来书写,内行末用“”一共换行(即下一行与本行为同一查办)。“”后不能有任何字符,包括空格和制表符(Tab)。

ARM汇编语言中的符号

symbol(标号)

实质:代表一个地址值。段内标号的地址值在汇编时确认;段外标号的地址值在衔接时确认。

分类:3类(分类根据了 标号的生成方法)

根据PC的标号。根据PC的标号是坐落方针指令前的标号或许程序中数据界说伪操作前的标号。这种标号在汇编时将被处理成PC值加上(或减去)一个数字常量。(常用于一共跳转指令的方针地址,或许代码段中所嵌入的少数数据。)
根据寄存器的标号。根据寄存器的标号常用MAP和FIELD来界说,也能够用EQU来界说。这种标号在汇编时将被处理成寄存器的值加上(或减去)一个数字常量。(常用于拜访数据段中的数据。)
肯定地址。肯定地址是一个32位 数据。它能够寻址的规模为[0,232-1]即能够直接寻址整个内存空间。

symbol(部分标号)
部分标号主要在部分规模内运用。它由两部组成:最初是一个0-99直接的数字,后边紧接一个一般一共该部分变量效果规模的符号。
部分变量的效果规模一般为当时段,也能够用ROUT来界说部分变量的效果规模。
部分变量界说的语法格局:N{routname}
N:为0~99之间的数字。

routname:当时部分规模的称号(为符号),一般为该变量效果规模的称号(用ROUT伪操作界说的)。
部分变量引证的语法格局:%{F|B}{A|T}N{routname}
%:一共引证操作

N:为部分变量的数字号。
routname 为当时效果规模的称号(用ROUT伪操作界说的)
%:一共引证操作
F:指示编译器只向前查找
B:指示编译器只向后查找
A:指示编译器查找宏的一切嵌套层次
T:指示编译器查找宏的当时层次
留意:1.假如F和B都没有指定,编译器先向前查找,再向后查找
2.假如A和T都没有指定,编译器查找一切从当时层次到宏的最高层次,比当时层次低的层次不再查找。
3.假如指定了routname,编译器向前查找最近的ROUT伪操作,若routname与该ROUT伪操作界说的称号不匹配,编译器陈述过错,汇编失利。

symbol(常量)

数字常量是32位的整数。在ARM汇编语言中,运用EQU来界说数字常量。数字常量一经界说就不行修正。进行巨细比较时,以为数字常量都是无符号数。

{数字常量:十进制数,十六进制数,n_XXX(n一共n(2-9)进制数,XXX是详细的数,例如:8_3777)

字符常量:用一对单引号括起,包括一个单字符或规范C中的转义字符。例如:‘A’‘n’

字符串常量:由一对双引号括起,包括一个字符串或规范C中的转义字符

布尔常量:{TRUE}和{FALSE}

}

留意:1.汇编器对-n和2^32-1不做差异;汇编时对联系运算符选用无符号数方法处理,这就意味着当0>-1是

{FLASE}的

symbol(变量)

在程序中,变量的值在汇编处理过程中或许会产生改动。在ARM汇编中变量有数字变量、逻辑变量和字符串变量3种类型。变量的类型在程序中是不能够改动的。
数字变量的取值规模为数字常量和数字表达式所能一共的数值;

无符号数[0,2的32次方-1],有符号数[负2的31次方,正2的31次方-1]

逻辑变量的取值规模为{true}和{flash};

字符串变量的取值规模为串表达式能够表达的规模。[0,512]字节

留意:汇编时变量的替换
1.假如在字符串变量前有一个$字符,在汇编时编译器将用改串的数值来替代该字符串变量。
2.假如在数字变量前面有一个$字符,在汇编时编译器将该数字变量的数值转化成十六进制的串,然后用该十六进制的串替代$字符后的数字变量。
3.假如在逻辑变量前面有一个$字符,在汇编时编译器将该逻辑变量替换成它的取值(T或许F)
4.假如程序中需求字符$,则用$$来一共,编译器将不进行变量替换,而是将$$当作$.
一般情况下,包括在两个竖线(|)之间的$并不一共进行变量替换。可是假如竖线(|)是在双引号内,则将进行变量替换。
5.运用“.”来一共变量称号的完毕。

“.”也或许一共 当时指令地址(见下表)

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 A为根据寄存器的表达式
(2)INDEX:回来根据寄存器的表达式相关于其基址寄存器的偏移量。
:INDEX:A A为根据寄存器的表达式
(3)+、﹣:正负号,能够放在数字表达式或许根据PC的表达式前面。
+A(﹣A) A为根据PC的表达式或许数字表达式
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.html

2. ARM嵌入式体系结构与编程.邱铁。清华大学出版社

3. ARM嵌入式体系入门.三恒星科技.中国电力出版社

4. ARM嵌入式应用技术根底.刘凯.清华大学出版社

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/zhizao/264741.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部