我刚开始学习汇编语言。我遇到了EQU的概念。起初它很有道理,直到我到达DC.B. DC.B和EQU有什么区别?你不能只为每个常数使用EQU吗?
答案 0 :(得分:13)
我不熟悉您的特定汇编语法,所以这个答案是一个有根据的猜测。
EQU指令用于告诉汇编程序您希望有一个命名符号常量(通常根据其他汇编程序值计算,包括其他EQU定义),您可以在程序集源文本<中的其他位置引用它/ em>的。你必须总是写
symbolname EQU constantexpression
这允许您在源文本的其他位置编写 symbolname 而不是 constantexpression 。但这个名称本身对最终汇编的程序二进制数据没有直接影响。
“DC.B”(我假设'define constant(byte)'用于告诉汇编程序您使用最终组装的程序在源文件中的相对位置嵌入一个数据字节“。你写了
optionalname DC.B constantexpression
将常量表达式的计算值放入汇编的程序二进制数据中的数据字节中。
所以,你可以写
AnEvenNumber EQU 2
MyEvenNumber DC.B AnEvenNumber
第一行只生成一个命名常量,没有第二行,对二进制文件没有影响。第二行在二进制文件中生成一个字节,其中包含由命名符号常量指定的值。
请注意,DC.B指令还允许使用可选名称;此符号也可用于代码中的其他位置。根据汇编程序的复杂程度,您可以定义
LocationOfEvenNumber EQU MyEvenNumber
和
DC.W LocationOfEvenNumber
现在在二进制文件中生成一个“指向”二进制数据字节的单词。