微软公司宣布不再支持你正在使用的 IE浏览器,这会严重影响浏览网页,请使用微软最新的Edge浏览器
厂商专区
产品/技术
应用分类

三大类常见ARM汇编语言符号解析

2016-02-14 08:59 来源:电源网综合 编辑:铃铛

在单片机的有关知识学习中,ARM汇编语言是其中重要的一环。后期很多命令都要依靠对单片机进行编程来实现最终效果,但众所周知,编程是一项较为复杂的工作,因此在初期打好基础是非常重要的。在本文中,小编就将为大家介绍在ARM汇编语言中的常见符号有哪些,以及这些符号的命名规则。

ARM编程中的符号能够代表的意义有很多,其可代表地址、变量和数字常量。当符号代表地址时又被称为标号。标号包含变量、数字常量、标号和局部标号。

符号的命名规则如下:

符号由大小写字母、数字以及下划线组成。

局部标号以数字开头,其他符号都不能以数字开头。

符号是区分大小写的。

符号中在其作用范围内必须惟一,即在其作用范围内不可有同名的符号。

程序中的符号不能与系统内部变量或者系统预定义的符号同名。

程序中的符号通常不要与指令助记符或者伪操作同名。

变量

在ARM汇编语言中,变量有数字变量、逻辑变量和串变量3种类型。变量的类型在程序中是不能改变的。数字变量的取值范围为数字常量的数字表达式所能表示的数值范围。关于数字常量和数字表达式所能表示的数值范围。逻辑变量的取值为{ture}和{false}。串变量的取值范围为串表达式可表示的范围。

在ARM汇编语言中,使用GBLA、GBLL及GBLS伪操作声明全局变量;使用LCLA、LCLL及LCLS伪操作声明局部变量;使用SETA、SETL及SETS伪操作为这些变量赋值。


数字常量

数字常量一般由3种表示方式:

第一种、十进制数,如43、6、112等。第二种、十六进制数,如0x3425、0xFE、0x1等。第三种、n进制数,用n_XXX表示,其中n为2~9,XXX为具体数,如2_01001101、8_4326等。

若数字常量时32位整数,当做为无符号整数时,其取值范围为0~2的32次幂-1;当作为有符号整数时,其取值范围为-2的31次幂~2的31次幂-1。汇编编译器并不区分一个数是无符号的还是有符号的,事实上,-n与2的32次幂-n在内存中是同一个数。

在ARM汇编语言中,使用EQU伪操作来定义数字常量。这里需要注意的是,数字常量一经定义,其数值就不能再修改。

在ARM汇编语言中,标号是表示程序中的指令或数据地址的符号,一般它代表一个地址。根据标号的生成方式可有以下3种,即:

基于PC的标号:是位于目标指令前或程序中数据定义伪操作前的标号,在汇编时将被处理成PC值加上一个数字常量。它常用于表示跳转指令的目标地址,或者代码段中所嵌入的少量数据。

基于寄存器的标号:通常用MAP和FILED伪操作定义该标号,也可用EQU伪操作定义。这种标号在汇编时将被处理成寄存器的值加上一个数字常量。它常用于访问位于数据段中的数据。

绝对地址:是一个32位的数字量,寻址的范围为0~2的32次幂-1,即直接可寻址整个内存空间。


局部标号

局部标号主要用于局部范围代码。它由一个0~99数字和一个通常表示该局部标号作用范围的标号组成,可重复定义。局部标号的作用范围通常为当前段,也可用伪操作ROUT表定义局部标号的作用范围。

局部标号定义的语法格式如下:

N{routname}

其中:N为0~99数字;routname为符号,通常为该标号作用范围的名称。

局部标号引用的语法格式如下:

%{F|B}{A|T}N{routname}

其中:%表示引用操作;F指示编译器只向前搜索;B指示编译器只向后搜索;A指示编译器搜索宏的所有嵌套层次;T指示编译器搜索宏的当前层次。

如果F和B都没有指定,则编译器先向前搜索,再向后搜索;如果A和T都没有指定,则编译器搜索所有从当前层次到宏的最高层次,比当前层次低的层次不再搜索。如果指定了routname,则编译器向前搜索最近的ROUT伪操作;若routname与该ROUT伪操作定义的名称不匹配,则编译器你报告错误,汇编失败。

以上就是ARM编程过程中常见的三大类符号含义与表示方法,本文不仅对这三种方法进行了介绍,还为大家讲解了ARM编程中符号的命名规则。相信大家在看过这篇文章之后一定对ARM编程中的符号有了新的认识,并收获了更多的知识。

声明:本内容为作者独立观点,不代表电源网。本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原作者所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱∶editor@netbroad.com。

相关阅读

微信关注
技术专题 更多>>
研发工程师的工具箱
智慧生活 创新未来

头条推荐

电子行业原创技术内容推荐
客服热线
服务时间:周一至周五9:00-18:00
微信关注
获取一手干货分享
免费技术研讨会
editor@netbroad.com
400-003-2006