等号伪指令(equal-sign directive)把一个符号名称与一个整数表达式连接起来,其语法如下:

name = expression

通常,表达式是一个 32 位的整数值。当程序进行汇编时,在汇编器预处理阶段,所有出现的 name 都会被替换为 expression。假设下面的语句出现在一个源代码文件开始的位置:

COUNT = 500

然后,假设在其后 10 行的位置有如下语句:

mov eax, COUNT

那么,当汇编文件时,MASM 将扫描这个源文件,并生成相应的代码行:

mov eax, 500

为什么使用符号?

程序员可以完全跳过 COUNT 符号,简化为直接用常量 500 来编写 MOV 指令,但是经验表明,如果使用符号将会让程序更加容易阅读和维护。

设想,如果 COUNT 在整个程序中出现多次,那么,在之后的时间里,程序员就能方便地重新定义它的值:

COUNT = 600

假如再次对该源文件进行汇编,则所有的 COUNT 都将会被自动替换为 600。

当前地址计数器

最重要的符号之一被称为当前地址计数器(current location counter),表示为 $。例如,下面的语句声明了一个变量 selfPtr,并将其初始化为该变量的偏移量:

selfPtr DWORD $

键盘定义

程序通常定义符号来识别常用的数字键盘代码。比如,27 是 Esc 键的 ASCII 码:

Esc_key = 27

在该程序的后面,如果语句使用这个符号而不是整数常量,那么它会具有更强的自描述性。

使用
mov al,Esc_key ;好的编程风格
而非
mov al,27      ;不好的编程风格

使用DUP操作符

《数据定义》一节说明了怎样使用 DUP 操作符来存储数组和字符串。为了简化程序的维护,DUP 使用的计数器应该是符号计数器。

在下例中,如果已经定义了 COUNT,那么它就可以用于下面的数据定义中:

array dword COUNT DUP(0)

重定义

用“=”定义的符号,在同一程序内可以被重新定义。下例展示了当 COUNT 改变数值后,汇编器如何计算它的值:

COUNT = 5
mov al,COUNT ; AL = 5
COUNT = 10
mov al,COUNT ; AL = 10
COUNT = 100
mov al,COUNT ; AL = 100

符号值的改变,例如 COUNT,不会影响语句在运行时的执行顺序。相反,在汇编器预处理阶段,符号会根据汇编器对源代码处理的顺序来改变数值。

下一篇:计算数组和字符串长度

强力推荐阅读文章

年薪40+W的大数据开发【教程】,都在这儿!

汇编语言等号=伪指令相关推荐

  1. 汇编语言ALIGN伪指令:对齐一个变量

    ALIGN 伪指令将一个变量对齐到字节边界.字边界.双字边界或段落边界. 语法如下: ALIGN bound Bound 可取值有:1.2.4.8.16.当取值为 1 时,则下一个变量对齐于 1 字节 ...

  2. 32位汇编语言条件伪指令和win32汇编关于windows.inc的error A2004

    首先看一下如下的代码: 可以构建成功:运行如下: 如果去掉 include    S:\masm32\include\masm32.inc     include    S:\masm32\inclu ...

  3. 汇编语言TEXTEQU伪指令

    TEXTEQU 伪指令,类似于 EQU,创建了文本宏(text macro).它有 3 种格式:第一种为名称分配的是文本:第二种分配的是已有文本宏的内容:第三种分配的是整数常量表达式: name TE ...

  4. 汇编语言EQU伪指令

    EQU 伪指令把一个符号名称与一个整数表达式或一个任意文本连接起来,它有 3 种格式: name EQU expression name EQU symbol name EQU <text> ...

  5. 汇编语言 ORG伪指令

    ORG伪指令给它下面一条语句指定起始偏移地址.通常,段定义语句 segment 指出了段的起点,偏移地址为0,段内各个语句或数据的地址,将会由段起始地址开始依次后推.当要对某条指令或某些数据规定特殊的 ...

  6. 汇编语言c equ a-b,汇编语言EQU伪指令

    EQU 伪指令把一个符号名称与一个整数表达式或一个任意文本连接起来,它有 3 种格式: name EQU expression name EQU symbol name EQU 第一种格式中,expr ...

  7. at指令代码 stm32f030_汇编语言程序设计第二篇——80X86汇编语言伪指令

    一.伪指令详解 伪指令在百度百科中的定义为: 伪指令(Pseudo Instruction)是用于对汇编过程进行控制的指令,该类指令并不是可执行指令,没有机器代码,只用于汇编过程中为汇编程序提供汇编信 ...

  8. 汇编语言——伪指令详解

    1 汇编语言的语句结构 1.1 标号名 1.1.1 定义: 标号(LABEL)是为一组机器指令所起的名字.标号可有可无,只有当需要用符号地址来访问该语句时,才给此语句赋予标号,以 : 作为结束符,其是 ...

  9. 伪指令endp告诉汇编程序_汇编语言程序设计第二篇——80X86汇编语言伪指令

    一.伪指令详解 伪指令在百度百科中的定义为: 伪指令(Pseudo Instruction)是用于对汇编过程进行控制的指令,该类指令并不是可执行指令,没有机器代码,只用于汇编过程中为汇编程序提供汇编信 ...

最新文章

  1. 用stm32f10x建立新的工程重要步骤
  2. Remix中文版 【Solidity IDE】
  3. c# 泛型study
  4. Performing User-Managed Database-18.7、Performing Complete User-Managed Media Recovery
  5. 通过poi的XSSF实现生成excel文件
  6. Making the Grade POJ - 3666(离散化+dp)
  7. excel 公式 单引号 concat_Excel两个新函数帮你快速搞定批量连接
  8. J - Borg Maze
  9. android+模拟器+ram,Android模拟器RAM修改方法 - 尤其是3.0
  10. 没有调用save或update方法,却有sql语句执行
  11. uva10817 dijkstra
  12. Python容器专题 - 元组(tuple)
  13. UIApplication委托信息(多任务)
  14. 贡献一个新浪的幻灯片(javascript)
  15. python pptx表格里的字体怎么调整_在python pptx中更改序列填充颜色
  16. html周报模板,工作周报模板(标准)
  17. winyyy sys hcpidesk sys mtlrd sys uldfhjfh sys servets exe等1
  18. c语言简单系统实例,简单的c语言编程实例
  19. run()方法和start()方法的区别
  20. 海康威视高级副总裁毕会娟:全面解读“物信融合数据平台”的功能与业务逻辑... 1

热门文章

  1. 对于机器学习中,数据增强
  2. Java学习:多线程(2)
  3. 【DSP开发】【VS开发】YUV与RGB格式转换
  4. [Django]模型学习记录篇--基础
  5. 《ES6基础教程》之 Call 方法和 Apply 方法
  6. 系统安装操作优化:chapter 3 安装windos操作系统。
  7. 【转】IAR与Keil两款开发工具区别
  8. 【云炬大学生创业基础笔记】第1章第2节关于什么是创客的讨论
  9. [云炬创业管理笔记]第一章测试5
  10. [云炬创业基础笔记]第七张创业团队测试3