购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 文字常量

汇编器大都支持文字型的数值(包括二进制、十进制及十六进制数值)、字符和字符串常量。不巧的是,各汇编器对文字常量采用的语法可谓五花八门。本节将说明本书所用汇编器的语法。

3.3.1 二进制文字常量

所有汇编器都支持基数为2的文字常量。很少有编译器发出二进制的常量,所以不大可能在编译器输出中发现这些值,但在手工编写的汇编代码中我们也许会看到二进制文字常量。C++第14版本也支持二进制文字常量,即0b xxxxx

3.3.1.1 HLA中的二进制文字常量

HLA中的二进制文字常量以百分号字符%打头,后面跟着一到多位的二进制数字0或1。在二进制数的任意相邻两位之间可放置下画线字符。HLA程序员习惯上将二进制数的每4位用下画线分隔。例如:

3.3.1.2 Gas中的二进制文字常量

Gas中的二进制文字常量以“0b”打头,后面跟着一到多位二进制数0或1,例如:

3.3.1.3 MASM中的二进制文字常量

在MASM中,二进制文字常量是以“b”为后缀的一到多位二进制数0或1。下面是一些例子:

3.3.2 十进制文字常量

十进制常量在大多数汇编器中都采用标准格式—一到多位十进制数,不需要任何特别的前后缀。这是编译器发出的常见数字格式之一,故而在编译器输出代码中经常会看到十进制文字常量。

3.3.2.1 HLA中的十进制文字常量

HLA允许在十进制数的任意相邻两位间插入下画线。HLA程序员往往使用下画线将十进制数分隔成每3位数在一起的形式。例如,十进制数可表示为如下这样:

HLA程序员还可对十进制数插入下画线:

3.3.2.2 Gas、MASM中的十进制文字常量

Gas、MASM使用十进制数串,即标准的十进制“计算机”格式,例如:

Gas、MASM不允许在十进制文字常量中嵌入下画线,这一点有别于HLA。

3.3.3 十六进制文字常量

十六进制文字常量是汇编语言程序,尤其是编译器输出的汇编语言程序中常见的另一种数值形式。

3.3.3.1 HLA中的十六进制文字常量

在HLA中,十六进制文字常量以“$”开头,后面是十六进制数0到9、a到f或A到F组成的串。任意相邻两个数之间都可以有下画线。习惯上,HLA程序员用下画线将每4位数分隔开来。例如:

3.3.3.2 Gas中的十六进制文字常量

在Gas中,十六进制文字常量以“0x”为前缀,后面是一串十六进制数0到9、a到f或A到F,比如:

3.3.3.3 MASM中的十六进制文字常量

在MASM中,十六进制文字常量为带后缀“h”的一串十六进制数0到9、a到f或A到F。数值必须以数字打头,如果第一位数为a到f,则应再加上前缀“0”。例如:

3.3.4 字符与字符串文字常量

字符与字符串也是汇编语言程序中的常见数据类型。MASM不区分字符与字符串,但HLA和Gas对字符、字符串采用不同的内部表示,所以使用此类汇编器时,区别这两种文字常量是很有必要的。

3.3.4.1 HLA中的字符与字符串文字常量

HLA的字符文字常量有好几种形式。最常见的形式是用单引号括住单个可打印的字符,比如'A'。为了说明单引号为字符文字常量,HLA要求将两个单引号用单引号括起来(即四个单引号—'''')。也可以把“#”放在表示ASCII值的二进制数、十进制或十六进制数的前面来表示其对应的字符。举例如下:

HLA字符串文字常量是用双引号括住零到多个字符表示的。如果字符串常量中包含了双引号,则应在字符串中用两个双引号代表一个双引号。

示例如下:

3.3.4.2 Gas中的字符与字符串文字常量

Gas中的字符文字常量由单引号后跟着单个字符表示。越来越多的Gas现代版本及Mac上的Gas,都支持'a'形式的字符常量。例如:

字符串文字常量在Gas中用双引号括住零到多个字符来表示,其语法与C语言的字符串一样。可以通过“\”转义序列向Gas字符串中嵌入特殊字符。例如:

3.3.4.3 MASM中的字符与字符串文字常量

MASM采用的字符与字符串文字常量形式一样:一个或多个字符用单引号括住,也可以用双引号括住。MASM汇编器无所谓字符常量与字符串常量,示例如下:

3.3.5 浮点型文字常量

在汇编语言中,浮点型文字常量的表示方法通常与高级语言一样—一串数字,可能有小数点,后面也可能带有符号整数作为指数。例如: VRcUdHhcpOYSJUrllE0xGsWVjZ66pOsiaCRrGOLNOJhzHZBVEKkRXCpsPNTTk2Dl

点击中间区域
呼出菜单
上一章
目录
下一章
×