ARM汇编程序设计之:汇编语言文件格式
10.3 汇编语言文件格式
10.3.1 ARM汇编语言语句格式
ARM(Thumb)汇编语法语句格式如下所示。
{symbol}{instruction|directive|pseudo-instruction}{;comment}
① symbol
程序符号。通常为地址标号(label)。在指令和伪指令中通常为标号;在一些伪操作中符号可能是变量或常数。详见ARM伪操作一节。
在书写中,符号必须从一行的行头开始,前面不能包含空格或制表符tab。
② instruction
ARM或Thumb指令。
③ directive
伪操作。详见ARM伪操作一节。
④ pseudo-instruction
ARM伪指令。详见ARM伪指令一节。
⑤ comment
语句注释。注释以分号(;)开头,注释的结尾即为一行的结尾。为了程序清晰易读,注释也可以单独占用一行。汇编器在对程序进行汇编时忽略注释。
在汇编语言程序设计中,每一条指令的助记符可以全部用大写或全部用小写,但不允许在一条指令中大、小写混用。
同时,如果一条语句太长,可将该长语句分为若干行来书写,在行的末尾用"\"表示下一行与本行为同一条语句。
10.3.2 ARM汇编语言中的符号
在汇编语言程序设计中,经常使用各种符号代替地址(addresses)、变量(variables)和常量(constants)等,以增加程序的灵活性和可读性。尽管符号的命名由编程者决定,但并不是任意的,必须遵循以下的约定。
(1)符号区分大小写,同名的大、小写符号会被编译器认为是两个不同的符号。
(2)符号在其作用范围内必须惟一。
(3)自定义的符号名不能与系统的保留字相同。其中保留字包括系统内部变量
(built in variable)和系统预定义(predefined symbol)的符号。
(4)符号名不应与指令或伪指令同名。如果要使用和指令或伪指令同名的符号要用双斜杠"||"将其括起来,如"||ASSERT||"。
| 注意 | 虽然符号被双斜杠括起来,但双斜杠并非符号名的一部分。 |
(5)局部标号以数字开头,其他的符号都不能以数字开头。
1.变量(variable)
程序中的变量是指其值在程序的运行过程中可以改变的量。ARM(Thumb)汇编程序所支持的变量有三种。
· 数字变量(numeric)。
· 逻辑变量(logical)。
· 字符串变量(string)。
数字变量用于在程序的运行中保存数字值,但注意数字值的大小不应超出数字变量所能表示的范围。
逻辑变量用于在程序的运行中保存逻辑值,逻辑值只有两种取值情况:真({TURE})和假({FALSE})。
字符串变量用于在程序的运行中保存一个字符串,注意字符串的长度不应超出字符串变量所能表示的范围。
在ARM(Thumb)汇编语言程序设计中,可使用GBLA、GBLL、GBLS伪指令声明全局变量,使用LCLA、LCLL、LCLS伪指令声明局部变量,可使用SETA、SETL和SETS对其进行初始化。
2.常量(constants)
程序中的常量是指其值在程序的运行过程中不能被改变的量。ARM(Thumb)汇编程序所支持的常量有数字常量、逻辑常量和字符串常量。
数字常量一般为32位的整数,当作为无符号数时,其取值范围为0~232−1,当作为有符号数时,其取值范围为−231~231−1。汇编器认为−n和232−n是相等的。对于关系操作,如比较两个数的大小,汇编器将其操作数看作无符号的数,也就是说"0>−1",对汇编器来说取值为"假({FLASE})"。
逻辑常量只有两种取值情况,真或假。
字符串常量为一个固定的字符串,一般用于程序运行时的信息提示。
3.程序中的变量代换
汇编语言中的变量可以作为作为一整行出现在汇编程序中,也可以作为行的一部分使用。
如果在数字变量前面有一个代换操作符"$",编译器会将该数字变量的值转换为十六进制的字符串,并将该十六进制的字符串代换"$"后的数字变量。
如果在逻辑变量前面有一个代换操作符"$",编译器会将该逻辑变量代换为它的取值(真或假)。
如果在字符串变量前面有一个代换操作符"$",编译器会将该字符串变量的值代换"$"后的字符串变量。
如果程序中需要字符"$",则可以用"$$"来表示。汇编器将不进行变量替换,而是将"$$"作为"$"。
下面的两个例子说明了变量替换的过程。
; 直接的变量替换
GBLS add4ff
;
add4ff SETS "ADD r4,r4,#0xFF" ;给变量add4ff赋值
$add4ff.00 ;引用变量
; codes
ADD r4,r4,#0xFF00
; 有特殊符号的变量替换
GBLS s1
GBLS s2
GBLS fixup
GBLA count
;
count SETA 14
s1 SETS "a$$b$
汇编程序 ARM 文件格式 symbol instruction 相关文章:
- 基于DSP的汇编程序优化(01-10)
- 基于数字信号处理器的汇编程序优化方案(03-24)
- T0作定时器汇编程序(查询法)(12-02)
- DS1302时钟汇编程序数码管显示时间(12-02)
- 一个avr单片机的汇编程序,注意几个宏指令(12-02)
- 汇编程序:比较2个字符串是否相同(初级版)(12-01)