EDA365电子论坛网

标题: ARM汇编语言程序中常用的符号 [打印本页]

作者: monsterscvb    时间: 2021-6-3 11:06
标题: ARM汇编语言程序中常用的符号
在汇编语言程序设计中,经常使用各种符号代替地址、变量和常量等,以增加程序的可读性。尽管符号的命名由编程者决定,但并不是任意的,必须遵循以下的约定:
— 符号区分大小写,同名的大、小写符号会被编译器认为是两个不同的符号。
4 F7 N& f7 H# M8 q: E
— 符号在其作用范围内必须唯一。
! d2 l6 H9 ^  w5 O% X8 Y+ o
— 自定义的符号名不能与系统的保留字相同。
/ w& R9 e1 A' T
— 符号名不应与指令或伪指令同名。
6 L: X, z5 o9 s
1、 程序中的变量
' g. ~: c8 Z& D, J; c* U
程序中的变量是指其值在程序的运行过程中可以改变的量。 ARM ( Thumb )汇编程序所支持的变量有数字变量、逻辑变量和字符串变量。

4 c1 X) j2 H0 y* I+ b1 H* Y( {$ ~
数字变量用于在程序的运行中保存数字值,但注意数字值的大小不应超出数字变量所能表示的范围。

1 c8 W5 W3 q5 f' U) w
逻辑变量用于在程序的运行中保存逻辑值,逻辑值只有两种取值情况:真或假。
- _' X+ q0 ?5 u: `1 g
字符串变量用于在程序的运行中保存一个字符串,但注意字符串的长度不应超出字符串变量所能表示的范围。
1 k+ K# W" F5 j, Y/ p
在 ARM ( Thumb )汇编语言程序设计中,可使用 GBLA 、 GBLL 、 GBLS 伪指令声明全局变量,使用 LCLA 、 LCLL 、 LCLS 伪指令声明局部变量,并可使用 SETA 、 SETL 和 SETS 对其进行初始化。

3 X7 g+ L" a5 R, R' v
2、 程序中的常量
% G: i2 Q1 _/ K' S8 O, P/ B
程序中的常量是指其指在程序的运行过程中不能被改变的量。 ARM ( Thumb )汇编程序所支持的常量有数字常量、逻辑常量和字符串常量。
" ]9 o8 _* U8 m& o) M
数字常量一般为 32 位的整数,当作为无符号数时,其取值范围为 0 ~ 2 32 -1 ,当作为有符号数时,其取值范围为 -2 31 ~ 2 31 -1 。
# q# d% M# T  F4 K
逻辑常量只有两种取值情况:真或假。
* G/ x* d5 }, `5 u
字符串常量为一个固定的字符串,一般用于程序运行时的信息提示。

$ |7 X& J2 T+ E4 Z* V! }
3、 程序中的变量代换

7 K" y$ `* |& U! _) {( H! ^/ z
程序中的变量可通过代换操作取得一个常量。代换操作符为 “ $ ” 。
% {% [3 T) x7 u0 U4 Z& o) Y: {
如果在数字变量前面有一个代换操作符 “ $ ” ,编译器会将该数字变量的值转换为十六进制的字符串,并将该十六进制的字符串代换 “ $ ” 后的数字变量。

' s( p# [& J0 E
如果在逻辑变量前面有一个代换操作符 “ $ ” ,编译器会将该逻辑变量代换为它的取值(真或假)。
$ V! p! ?+ I4 p; s
如果在字符串变量前面有一个代换操作符 “ $ ” ,编译器会将该字符串变量的值代换 “ $ ” 后的字符串变量。
5 h1 U; e2 X/ Q4 D; j4 k
使用示例:

% B5 @3 G" y- n1 B
LCLS S1 ;定义局部字符串变量S1 和S2

6 f( D( ?& \7 K8 h& C' Y
LCLS S2
5 ]) Q6 Y* D6 d# y, B% ?' E
S1 SETS “ Test! ”
% a2 P4 d- s) u2 J  z1 `  c
S2 SETS “ This is a $S1 ” ;字符串变量S2 的值为 “ This is a Test! ”

3 ^' u, C% L  h, b  y; i) P
作者: shapeofyou888    时间: 2021-6-3 13:11
符号的命名由编程者决定,但并不是任意的
作者: tryeverythingop    时间: 2021-6-3 15:04
程序中的变量是指其值在程序的运行过程中可以改变的量
作者: nevadaooo    时间: 2021-6-3 15:08
我把这个$ 符号看成了钱的符号,哈哈
作者: studyzfr    时间: 2021-6-3 16:12
学习!!!!!!!
作者: ldezgr    时间: 2021-6-6 14:29
好好学习,天天向上




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2