7

我刚开始学习汇编语言。我遇到了 EQU 的概念。起初它很有意义,直到我到达 DC.B. DC.B 和 EQU 有什么区别?你不能只对每个常数使用 EQU 吗?

4

1 回答 1

13

我不熟悉您的特定汇编程序语法,所以这个答案是有根据的猜测。

EQU 指令用于告诉汇编器您希望有一个命名符号常量(通常从其他汇编器值计算,包括其他 EQU 定义),您可以在汇编源文本的其他位置引用该常量。你必须总是写

 symbolname EQU constantexpression

这允许您在源文本的其他位置编写符号名而不是常量表达式。但是这个名称本身对最终组装的程序二进制数据没有直接影响。

“DC.B”(我假设“定义常量(字节)”用于告诉汇编器,您使用最终组装的程序在源文件中的相对位置嵌入一个字节的数据”。你写

optionalname DC.B  constantexpression

将常量表达式的计算值放入汇编程序二进制数据中的数据字节中。

所以,你可以写

 AnEvenNumber  EQU    2
 MyEvenNumber  DC.B   AnEvenNumber

第一行只产生一个命名常量,没有第二行,对你的二进制文件没有影响。第二行在您的二进制文件中生成一个字节,其中包含由命名符号常量指定的值。

请注意,DC.B 指令还允许使用可选名称;这个符号也可以用在你代码的其他地方。根据您的汇编程序的复杂程度,您可以定义

 LocationOfEvenNumber EQU  MyEvenNumber

      DC.W    LocationOfEvenNumber

现在在您的二进制文件中生成一个“指向”二进制数据字节的单词。

于 2012-07-26T15:45:31.773 回答