• 汇编语言常量

    常量(constant)是程序中使用的一个确定数值,在汇编阶段就可以确定,直接编码于指令代码中,不是保存在存储器中可变的变量,因为是编码在指令中的量,和指令一起存储了,所以不用单独开辟主存空间,所以也就没法动态改变它了,这也正是高级语言常量无法修改的原因。

    整数常量

    整数常量(integer literal)(又称为整型常量(integer constant))由一个可选前置符号、一个或多个数字,以及一个指明其基数的可选基数字符构成:

    [{+|-}] digits [radix]

    提示:本教程使用 Microsoft 语法符号。方括号内的元素是可选的;大括号内的元素用 | 符号分隔,且必须要选择其中一个元素;斜体字标识的是有明确定义或说明的元素。

    由此,比如 26 就是一个有效的整数常量。它没有基数,所以假设其是十进制形式。如果想要表示十六进制数 26,就将其写为 26h。同样,数字 1101 可以被看做是十进制值,除非在其末尾添加“b”,使其成为 1101b (二进制)。下表列出了可能的基数值:

    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"

    表明字符常量在内部保存为整数,使用的是 ASCII 编码序列。因此,当编写字符常量“A”时,它在内存中存放的形式为数字 65 ( 或 41h)。

    字符串常量

    字符串常量 (string literal) 是用单引号或双引号包含的一个字符 ( 含空格符 ) 序列:

    'ABC'
    'X'
    "Good night, Gracie"
    '40961

    嵌套引号也是被允许的,使用方法如下例所示:

    "This isn't a test"
    'Say "Good night," Gracie'

    和字符常量以整数形式存放一样,字符串常量在内存中的保存形式为整数字节数值序列。例如,字符串常量“ABCD”就包含四个字节 41h、42h、43h、44h。

更多...

加载中...