-1

考虑以下汇编器输出列表:

START 100
MOVER BREG, ONE                                101) + 04 2 105 
MOVEM BREG, RESULT                             102) + 05 2 106
PRINT RESULT                                   103) + 10 0 106
STOP                                           104) + 00 0 000
ONE DC '1'                                     105) + 00 0 001
RESULT DS 1                                    106) 
  1. 代码前的+号是什么意思?
  2. 为什么 ONE给定的地址001
  3. 为什么最后一条语句后面的条目RESULT DS 1留空?

此列表出现在 Dhamdhere的Systems Programming and Operating Systems中(编者注:由回答者发现)。

4

3 回答 3

3

我不知道您使用的是哪个汇编程序(在您的问题中提供该信息可能是明智的),因此这些不是特别明智的答案:

  1. 不知道 - 你的汇编手册怎么说
  2. 不是——这就是价值
  3. DS 只是保留一些空间

编辑:汇编程序是一种计算机程序,它采用包含汇编语言的文本并将其转换为机器代码。它还可以以人类可读的形式产生输出,这就是您发布的代码的样子。人类可读形式的格式特定于您正在使用的特定汇编器(即程序) - 它并不特定于汇编器为其发出机器代码的机器体系结构。

于 2009-03-24T18:35:25.410 回答
3

这似乎使用了系统程序和操作第 4 章中的简单汇编语言。

在操作码输出的描述中,它说,“符号不是指令的一部分”。快速阅读文本并没有揭示它什么的一部分,并且所有示例在该列中都有“+”。

于 2009-03-24T21:36:23.027 回答
1
  1. “+”号不是指令的一部分。(数字指令的那一面是机器指令)

  2. ONE 的地址是 105,001 是使用 DC 分配给 ONE 的值,DC 是声明常量的缩写形式。

    DC 保留内存字空间并分配常数。

  3. RESULT DS 1 的条目留空,因为 DS 保留给定要求的存储空间,这里只给出 1,因此它只保留一个存储字位置。

只有数字部分的另一面是机器指令,它遵循以下格式

Sign opcode register_opcode memory_operand

例如,

101) memory location
+ Sign (not part of instruction)
04 Machine opcode ( occupy 2 digits )
2 Register operand ( occupy 1 digit )
105 Memory operand ( occupy 3 digits )

注意:它是用于假设计算机的简单汇编语言,用于说明汇编程序的功能和技术。

于 2019-11-01T07:24:02.597 回答