汇编语言等号=伪指令
等号伪指令(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的大数据开发【教程】,都在这儿!
汇编语言等号=伪指令相关推荐
- 汇编语言ALIGN伪指令:对齐一个变量
ALIGN 伪指令将一个变量对齐到字节边界.字边界.双字边界或段落边界. 语法如下: ALIGN bound Bound 可取值有:1.2.4.8.16.当取值为 1 时,则下一个变量对齐于 1 字节 ...
- 32位汇编语言条件伪指令和win32汇编关于windows.inc的error A2004
首先看一下如下的代码: 可以构建成功:运行如下: 如果去掉 include S:\masm32\include\masm32.inc include S:\masm32\inclu ...
- 汇编语言TEXTEQU伪指令
TEXTEQU 伪指令,类似于 EQU,创建了文本宏(text macro).它有 3 种格式:第一种为名称分配的是文本:第二种分配的是已有文本宏的内容:第三种分配的是整数常量表达式: name TE ...
- 汇编语言EQU伪指令
EQU 伪指令把一个符号名称与一个整数表达式或一个任意文本连接起来,它有 3 种格式: name EQU expression name EQU symbol name EQU <text> ...
- 汇编语言 ORG伪指令
ORG伪指令给它下面一条语句指定起始偏移地址.通常,段定义语句 segment 指出了段的起点,偏移地址为0,段内各个语句或数据的地址,将会由段起始地址开始依次后推.当要对某条指令或某些数据规定特殊的 ...
- 汇编语言c equ a-b,汇编语言EQU伪指令
EQU 伪指令把一个符号名称与一个整数表达式或一个任意文本连接起来,它有 3 种格式: name EQU expression name EQU symbol name EQU 第一种格式中,expr ...
- at指令代码 stm32f030_汇编语言程序设计第二篇——80X86汇编语言伪指令
一.伪指令详解 伪指令在百度百科中的定义为: 伪指令(Pseudo Instruction)是用于对汇编过程进行控制的指令,该类指令并不是可执行指令,没有机器代码,只用于汇编过程中为汇编程序提供汇编信 ...
- 汇编语言——伪指令详解
1 汇编语言的语句结构 1.1 标号名 1.1.1 定义: 标号(LABEL)是为一组机器指令所起的名字.标号可有可无,只有当需要用符号地址来访问该语句时,才给此语句赋予标号,以 : 作为结束符,其是 ...
- 伪指令endp告诉汇编程序_汇编语言程序设计第二篇——80X86汇编语言伪指令
一.伪指令详解 伪指令在百度百科中的定义为: 伪指令(Pseudo Instruction)是用于对汇编过程进行控制的指令,该类指令并不是可执行指令,没有机器代码,只用于汇编过程中为汇编程序提供汇编信 ...
最新文章
- 用stm32f10x建立新的工程重要步骤
- Remix中文版 【Solidity IDE】
- c# 泛型study
- Performing User-Managed Database-18.7、Performing Complete User-Managed Media Recovery
- 通过poi的XSSF实现生成excel文件
- Making the Grade POJ - 3666(离散化+dp)
- excel 公式 单引号 concat_Excel两个新函数帮你快速搞定批量连接
- J - Borg Maze
- android+模拟器+ram,Android模拟器RAM修改方法 - 尤其是3.0
- 没有调用save或update方法,却有sql语句执行
- uva10817 dijkstra
- Python容器专题 - 元组(tuple)
- UIApplication委托信息(多任务)
- 贡献一个新浪的幻灯片(javascript)
- python pptx表格里的字体怎么调整_在python pptx中更改序列填充颜色
- html周报模板,工作周报模板(标准)
- winyyy sys hcpidesk sys mtlrd sys uldfhjfh sys servets exe等1
- c语言简单系统实例,简单的c语言编程实例
- run()方法和start()方法的区别
- 海康威视高级副总裁毕会娟:全面解读“物信融合数据平台”的功能与业务逻辑... 1