微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM基础:ARM 伪指令详解

ARM基础:ARM 伪指令详解

时间:11-20 来源:互联网 点击:

个别名Temp

13、 ROUT

语法格式:

{名称} ROUT

ROUT伪指令用于给一个局部变量定义作用范围。在程序中未使用该伪指令时,局部变量的作用范围为所在的AREA,而使用ROUT后,局部变量的作为范围为当前ROUT和下一个ROUT之间。

4.2 汇编语言的语句格式

ARM(Thumb)汇编语言的语句格式为:

{标号} {指令或伪指令} {;注释}

在汇编语言程序设计中,每一条指令的助记符可以全部用大写、或全部用小写,但不用许在一条指令中大、小写混用。

同时,如果一条语句太长,可将该长语句分为若干行来书写,在行的末尾用“”表示下一行与本行为同一条语句。

4.2.1 在汇编语言程序中常用的符号

在汇编语言程序设计中,经常使用各种符号代替地址、变量和常量等,以增加程序的可读性。尽管符号的命名由编程者决定,但并不是任意的,必须遵循以下的约定:

— 符号区分大小写,同名的大、小写符号会被编译器认为是两个不同的符号。

— 符号在其作用范围内必须唯一。

— 自定义的符号名不能与系统的保留字相同。

— 符号名不应与指令或伪指令同名。

1、 程序中的变量

程序中的变量是指其值在程序的运行过程中可以改变的量。ARM(Thumb)汇编程序所支持的变量有数字变量、逻辑变量和字符串变量。

数字变量用于在程序的运行中保存数字值,但注意数字值的大小不应超出数字变量所能表示的范围。

逻辑变量用于在程序的运行中保存逻辑值,逻辑值只有两种取值情况:真或假。

字符串变量用于在程序的运行中保存一个字符串,但注意字符串的长度不应超出字符串变量所能表示的范围。

在ARM(Thumb)汇编语言程序设计中,可使用GBLA、GBLL、GBLS伪指令声明全局变量,使用LCLA、LCLL、LCLS伪指令声明局部变量,并可使用SETA、SETL和SETS对其进行初始化。

2、 程序中的常量

程序中的常量是指其值在程序的运行过程中不能被改变的量。ARM(Thumb)汇编程序所支持的常量有数字常量、逻辑常量和字符串常量。

数字常量一般为32位的整数,当作为无符号数时,其取值范围为0~232-1,当作为有符号数时,其取值范围为-231~231-1。

逻辑常量只有两种取值情况:真或假。

字符串常量为一个固定的字符串,一般用于程序运行时的信息提示。

3、 程序中的变量代换

程序中的变量可通过代换操作取得一个常量。代换操作符为“$”。

如果在数字变量前面有一个代换操作符“$”,编译器会将该数字变量的值转换为十六进制的字符串,并将该十六进制的字符串代换“$”后的数字变量。

如果在逻辑变量前面有一个代换操作符“$”,编译器会将该逻辑变量代换为它的取值(真或假)。

如果在字符串变量前面有一个代换操作符“$”,编译器会将该字符串变量的值代换“$”后的字符串变量。

使用示例:

LCLS S1 ;定义局部字符串变量S1和S2

LCLS S2

S1 SETS “Test!”

S2 SETS “This is a $S1” ;字符串变量S2的值为“This is a Test!”

4.2.2 汇编语言程序中的表达式和运算符

在汇编语言程序设计中,也经常使用各种表达式,表达式一般由变量、常量、运算符和括号构成。常用的表达式有数字表达式、逻辑表达式和字符串表达式,其运算次序遵循如下的优先级:

— 优先级相同的双目运算符的运算顺序为从左到右。

— 相邻的单目运算符的运算顺序为从右到左,且单目运算符的优先级高于其他运算符。

— 括号运算符的优先级最高。

1、 数字表达式及运算符

数字表达式一般由数字常量、数字变量、数字运算符和括号构成。与数字表达式相关的运算符如下:

— “+”、“-”、“×”、“/” 及“MOD”算术运算符

以上的算术运算符分别代表加、减、乘、除和取余数运算。例如,以X和Y表示两个数字表达式,则:

X+Y 表示X与Y的和。

X-Y 表示X与Y的差。

X×Y 表示X与Y的乘积。

X/Y 表示X除以Y的商。

X:MOD:Y 表示X除以Y的余数。

— “ROL”、“ROR”、“SHL”及“SHR”移位运算符

以X和Y表示两个数字表达式,以上的移位运算符代表的运算如下:

X:ROL:Y 表示将X循环左移Y位。

X:ROR:Y 表示将X循环右移Y位。

X:SHL:Y 表示将X左移Y位。

X:SHR:Y 表示将X右移Y位。

— “AND”、“OR”、“NOT”及“EOR”按位逻辑运算符

以X和Y表示两个数字表达式,以上的按位逻辑运算符代表的运算如下:

X:AND:Y 表示将

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top