其中:
①instruction 为指令。 在ARM 汇编语言中,指令不能从一行的行头开始。 在一行语句中,指令的前面必须有空格或者符号。
②directive 为伪操作。
③pseudo-instruction 为伪指令。
④symbol 为符号。 在ARM 汇编语言中,符号必须从一行的行头开始,并且符号中不能包含空格。 在指令和伪指令中符号用作地址标号;在有些伪操作中,符号用作变量或常量。
⑤comment 为语句的注释。 在ARM 汇编语言中注释以分号“;”开头。 注释的结尾即为一行的结尾。 注释也可以单独占用一行。
注意:
①在ARM 汇编语言中,各个指令、伪指令及伪操作的助记符可以全部用大写字母,也可以全部用小写字母,但不能在一个助记符中既有大写字母又有小写字母。
②源程序中,在语句之间适当地插入空行,可以提高源代码的可读性。
③如果一条语句很长,为了提高可读性,可以使用“\”将该长语句分成若干行来写。 在“\”之后不能再有其他字符,包括空格和制表符。
(1)ARM 汇编语言中的符号
在ARM 汇编语言中,符号可以代表地址、变量和数字常量。 当符号代表地址时,又称为标号。 符号包括变量、数字常量、标号和局部标号。
符号的命名规则如下:
①符号由大小写字母、数字以及下画线组成。
②局部标号(例如在ADS 编译环境下,ROUT 之间的标号为局部标号)以数字开头,其他的符号都不能以数字开头。
③符号是区分大小写的。
④符号在其作用范围内必须是唯一的,即在其作用范围内不可有同名的符号。
⑤程序中的符号不能与系统内部变量或系统预定义的符号同名。
⑥程序中的符号通常不要与指令助记符或伪操作同名。(www.xing528.com)
(2)ARM 汇编语言中的表达式
表达式是由符号、数值、单目或多目操作符以及括号组成的。 在一个表达式各种元素的优先级如下所示:
①括号内的表达式优先级最高。
②各种操作符有一定的优先级。
③相邻的单目操作符的执行顺序为由右到左,单目操作符优先级高于其他操作符。
④优先级相同的双目操作符执行顺序为由左到右。
(3)ARM 汇编语言程序格式
本小节以ADS 编译器下汇编语言程序设计的格式为例,介绍ARM 汇编语言程序的基本格式,并详细描述了ARM 汇编语言编程的几个重点。
ARM 汇编语言是以段为单位来组织源文件的。 段是相对独立的、具有特定名称的、不可分割的指令或数据序列。 段又可以分为代码段和数据段:代码段存放执行代码,数据段存放代码运行时需要用到的数据。 一个ARM 源程序至少需要一个代码段,大的程序可以包含多个代码段和数据段。
ARM 汇编语言源程序经过汇编处理后生成一个可执行的映像文件,它通常包括下面三部分:
①一个或多个代码段,代码段通常是只读的。
②零个或多个包含初始值的数据段,这些数据段通常是可读写的。
③零个或多个不包含初始值的数据段,这些数据段被初始化为“0”,通常是可读写的。
链接器根据一定的规则将各个段安排到内存中的相应位置。 源程序中段之间的相邻关系与执行的映像文件中段之间的相邻关系并不一定相同。
下面通过一个简单的例子,说明ARM 汇编语言源程序的基本结构。
在ARM 汇编语言源程序中,使用伪操作AREA 定义一个段。 AREA 伪操作表示了一个段的开始,同时定义了这个段的名称及相关属性。 在本例中定义了一个只读的代码段,其名称为“EXAMPLE”。
ENTRY 伪操作标识了程序执行的第一条指令,即程序的入口点。 一个ARM 程序中可以有多个ENTRY,至少要有一个ENTRY。 初始化部分的代码以及异常中断处理程序中都包含了ENTRY。 如果程序包含了C 代码,C 语言库文件的初始化部分也包含了ENTRY。
END 伪操作告知汇编编译器源文件的结束。 每一个汇编模块必须包含一个END 伪操作,指示本模块的结束。
本程序的程序体部分实现了一个简单的加法运算。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。