汇编语言常量
常量(constant)是程序中使用的一个确定数值,在汇编阶段就可以确定,直接编码于指令代码中,不是保存在存储器中可变的变量,因为是编码在指令中的量,和指令一起存储了,所以不用单独开辟主存空间,所以也就没法动态改变它了,这也正是高级语言常量无法修改的原因。
下面这些整数常量声明了各种基数。每行都有注释:
下表列出了算术运算符,并按照从高 (1) 到低 (4) 的顺序给出了它们的优先级。对整型常量表达式而言很重要的是,要意识到它们只在汇编时计算。这里将它们简称为 整数表达式。
运算符优先级 (operator precedence) 是指,当一个表达式包含两个或多个运算符时,这些操作的执行顺序。下面是一些表达式和它们的执行顺序:
编码实数(encoded real)表示的是十六进制实数,用 IEEE 浮点数格式表示短实数。比如,十进制数 +1.0 用二进制表示为:
整数常量
整数常量(integer literal)(又称为整型常量(integer constant))由一个可选前置符号、一个或多个数字,以及一个指明其基数的可选基数字符构成:[{+|-}] digits [radix]
由此,比如 26 就是一个有效的整数常量。它没有基数,所以假设其是十进制形式。如果想要表示十六进制数 26,就将其写为 26h。同样,数字 1101 可以被看做是十进制值,除非在其末尾添加“b”,使其成为 1101b (二进制)。下表列出了可能的基数值:提示:本教程使用 Microsoft 语法符号。方括号内的元素是可选的;大括号内的元素用 | 符号分隔,且必须要选择其中一个元素;斜体字标识的是有明确定义或说明的元素。
h | 十六进制 | r | 编码实数 |
q/o | 八进制 | t | 十进制(备用) |
d | 十进制 | y | 二进制(备用) |
b | 二进制 |
下面这些整数常量声明了各种基数。每行都有注释:
26 ;十进制 26d ;十进制 11010011b ;二进制 42q ;八进制 42o ;八进制 1Ah ;十六进制 0A3h ;十六进制以字母开头的十六进制数必须加个前置 0,以防汇编器将其解释为标识符。
整型常量表达式
整型常量表达式 (constant integer expression) 是一种算术表达式,它包含了整数常量和算术运算符。每个表达式的计算结果必须是一个整数,并可用 32 位 (从 0 到 FFFFFFFFh) 来存放。下表列出了算术运算符,并按照从高 (1) 到低 (4) 的顺序给出了它们的优先级。对整型常量表达式而言很重要的是,要意识到它们只在汇编时计算。这里将它们简称为 整数表达式。
运算符 | 名称 | 优先级 |
---|---|---|
() | 圆括号 | 1 |
+,- | 一元加、减 | 2 |
*, / | 乘、除 | 3 |
MOD | 取模 | 3 |
+, - | 加、减 | 4 |
运算符优先级 (operator precedence) 是指,当一个表达式包含两个或多个运算符时,这些操作的执行顺序。下面是一些表达式和它们的执行顺序:
4 + 5 * 2 ;乘法,加法 12 - 1 MOD 5 ;取模,减法 -5 + 2 ;一元减法,加法 (4 + 2) * 6 ;加法,乘法下面给出了一些有效表达式和它们的值:
表达式 | 值 |
---|---|
16/5 | 3 |
-(3+4) * (6-1 ) | -35 |
-3+4*6- 1 | 20 |
25 mod 3 | 1 |
提示:在表达式中使用圆括号来表明操作顺序,那么就不用去死记运算符优先级。
实数常量
实数常量(real number literal)(又称为浮点数常量(floating-point literal))用于表示十进制实数和编码(十六进制)实数。十进制实数包含一个可选符号,其后跟随一个整数,一个十进制小数点,一个可选的表示小数部分的整数,和一个可选的指数:[sign]integer.[integer] [exponent]
符号和指数的格式如下:
sign {+,-}
exponent E[{+,-}]integer
2.
+3.0
-44.2E+05
26.E5
编码实数(encoded real)表示的是十六进制实数,用 IEEE 浮点数格式表示短实数。比如,十进制数 +1.0 用二进制表示为:
0011 1111 1000 0000 0000 0000 0000 0000
在汇编语言中,同样的值可以编码为短实数:3F800000r
字符常量
字符常量 (character literal) 是指,用单引号或双引号包含的一个字符。汇编器在内存中保存的是该字符二进制 ASCII 码的数值。例如:
'A'
"d"
字符串常量
字符串常量 (string literal) 是用单引号或双引号包含的一个字符 ( 含空格符 ) 序列:
'ABC'
'X'
"Good night, Gracie"
'40961
"This isn't a test"
'Say "Good night," Gracie'