教材:嵌入式系统及应用,罗蕾、李允、陈丽蓉等,电子工业出版社
基本概念
- ARM 编译器支持汇编语言的程序设计和 C/C++ 语言的程序设计,以及两者的混合编程
- 汇编语言(Assembly Language)是面向机器的程序设计语言
- 在汇编语言中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言
- 汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等优点
- 在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植
- 使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序(也叫汇编器),汇编程序是系统软件中语言处理系统软件
- 汇编程序把汇编语言翻译成机器语言的过程称为汇编
- 汇编语言程序、汇编器和机器码程序之间的关系
- 人们设计了一些专门用于指导汇编器进行汇编工作的指令,由于这些指令不形成机器码指令,它们只是在汇编器进行汇编工作的过程中起作用,所以被叫做伪指令
- 用汇编语言编写的程序叫做汇编语言程序
- 从源程序翻译成的机器码程序就叫做目标程序
汇编语言的规范
汇编语句格式
- ARM(Thumb)汇编语言的语句格式为:
{<标号>} <指令或伪指令> {;注释}
- 每一条指令的助记符可以全部用大写或全部用小写,但不允许在一条指令中大小写混用
- 如果一条语句太长,则可将该长语句分成若干行来书写,每行的末尾用“\”来表示下一行与本行为同一条语句
汇编语言的表达式和运算符
运算次序
- 优先级相同的双目运算符运算顺序为从左到右
- 相邻的单目运算符的运算顺序为从右到左
- 单目运算符的优先级高于双目运算符
- 括号运算符的优先级最高
数字表达式及运算符
- +、-、X、/及MOD算术运算符
- ROL、ROR、SHL及SHR移位运算符
- AND、OR、NOT及EOR按位逻辑运算符
逻辑表达式及运算符
- =、>、<、>=、<=、/=、<> 运算符
- LAND、LOR、LNOT 及 LEOR 运算符
字符串表达式及运算符
- LEN运算符
- CHR运算符
- STR运算符
- LEFT运算符
- RIGHT运算符
- CC运算符
与寄存器和程序计数器(PC)相关的表达式及运算符
- BASE运算符
- INDEX运算符
其它常用运算符
- “?” 运算符
- DEF 运算符
程序中的变量代换
程序中的变量可通过代换操作取得一个常量,代换操作符为“$”
如果在数字变量前面有一个代换操作符 “$” ,则编译器会将该数字变量的值转换为十六进制的字符串,并将该十六进制的字符串代换 “$” 后的数字变量
如果在逻辑变量前面有一个代换操作符 “$” ,则编译器会将该逻辑变量代换为它的取值(真或假)
如果在字符串变量前面有一个代换操作符 “$” ,则编译器会将该字符串变量的值代换 “$” 后的字符串变量
LCLS s1 ;定义局部字符串变量S1和S2 LCLS s2 s1 SETS “Test !” s2 SETS “This is a $s1” ;s2 为 “This is a Test !”