第三章ARM微处理器指令系统和程序设计;提纲;ARM指令集;ARMvsThumb;ARM指令集分类;ARM体系结构的主要特征-三地址指令;ARM体系结构的主要特征-条件执行;ARM体系结构的主要特征-条件执行;ARM体系结构的主要特征-单指令移位操作;ARM指令的寻址方式;助记符;助记符;ARM子程序调用;助记符;ARM子程序嵌套调用;ARM调用规范;提纲;{标号}{指令或伪指令}{;注释}
注意,每一条指令的助记符可以全部用大写,或者全部用小写,但不可以在一条指令中大、小写混用。
另外,若一条语句太长,可将其分为若干行来书写,在行末用续行符“\”表示下一行与本行为同一条语句。;在ARM(Thumb)汇编语言程序设计中,全局变量由GBLA、GBLL、GBLS伪指令声明,局部变量由LCLA、LCLL、LCLS伪指令声明,并使用SETA、SETL和SETS伪指令对其进行初始化。;汇编语言程序中的符号;1.程序中的常量是指其值在程序的运行过程中不能被改变的量。ARM(Thumb)汇编程序所支持的常量有数字常量、逻辑常量和字符串常量。
2.数字常量一般为32位的整数,当作为无符号数时,其取值范围为0~232-1,当作为有符号数时,其取值范围为-231~231-1。
3.逻辑常量只有两种取值情况:真或假。
4.字符串常量为一个固定的字符串。;符号变量;1.程序中的变量通过代换操作取得一个常量,代换操作符为“$”。
2.代换操作符放在数字变量前,编译器会将该数字变量的值转换为十六进制的字符串,并将该十六进制的字符串代换“$”后的数字变量。
3.代换操作符放在逻辑变量前,编译器会将该逻辑变量代换为它的取值(真或假)。
4.代换操作符放在字符串变量前面,编译器会将该字符串变量的值代换“$”后的字符串变量。;1.在汇编语言程序设计中,表达式一般由变量、常量、运算符和括号构成。
2.常用的表达式有算术运算表达式、移位运算表达式、位逻辑1.运算表达式、关系运算表达式、逻辑运算表达式和字符串表达式等。; 表达式运算次序遵循如下的优先级:
优先级相同的双目运算符的运算顺序为从左到右。
相邻单目运算符的运算顺序为从右到左,且单目运算符优先级高于其他运算符。
3.括号运算符的优先级最高。;算术表达式一般由数字常量、数字变量、数字运算符和括号构成。相关的运算符如下:—“+”、“-”、“×”、“/”及“MOD”算术运算符,分别代表加、减、乘、除和取余数运算。
【例】以X和Y表示两个数字表达式,则:
1.X+Y表示X与Y的和。
2.X-Y表示X与Y的差。
3.X×Y表示X与Y的乘积。
4.X/Y表示X除以Y的商。
5.XMODY表示X除以Y的余数。;移位运算符包括“ROL”、“ROR”、“SHL”及“SHR”四种,分别代表循环左移、循环右移、左移、右移运算。
【例】以X和Y表示两个数字表达式,则:
1.XROL Y 表示将X循环左移Y位。
2.XROR Y 表示将X循环右移Y位。
3.XSHL Y 表示将X左移Y位。
4.XSHR Y 表示将X右移Y位。;位逻辑运算符包括“AND”、“OR”、“NOT”及“EOR”四种,分别代表按位作逻辑与、或、非及异或运算。
【例】以X和Y表示两个数字表达式,则:
1.XANDY表示将X和Y按位作逻辑与的操作。
2.XORY表示将X和Y按位作逻辑或的操作。
NOTY表示将Y按位作逻辑非的操作。
XEORY表示将X和Y按位作逻辑异或的操作。;关系运算符包括“==”、“”、“”、“=”、“=”、“/=”、“”七种,其表达式的运算结果为真或假。
【例】以X和Y表示两个逻辑表达式,则:
X==Y表示X等于Y。
XY表示X大于Y。
XY表示X小于Y。
X=Y表示X大于等于Y。
X=Y表示X小于等于Y。
X/=Y表示X不等于Y。
XY表示X不等于Y。;逻辑运算符包括“LAND”、“LOR”、“LNOT”及“LEOR”四种,分别代表逻辑与、或、非及异或运算。
【例】以X和Y表示两个逻辑表达式,则:
XLANDY表示将X和Y作逻辑与的操作。
XLORY表示将X和Y作逻辑或的操作。
LNOTY表示将Y作逻辑非的操作。
XLEORY表示将X和Y作逻辑异或的操作。;字符串表