0

我无法理解英特尔 8080 处理代码的行为。例如,我想添加两个十六进制数字:3H 和 4H,所以我写道:

MVI A, 3H
MVI B, 4H
ADD B
HLT

但是处理后在哪里可以找到结果呢?我应该将结果从 A 复制到某个内存地址还是什么?对不起,但这是我第一次使用这种东西,我看不出它是如何工作的。

例如,图片显示了我在 8085 模拟器中的示例。 在此处输入图像描述

另一个问题是为什么有些标志改变了但寄存器保持不变?不应该MVI B, 4H改变 B 寄存器的值吗?如果不是,请解释它是如何工作的。

在为每条指令提供 2 个字节后,累加器也没有结果。 在此处输入图像描述

似乎唯一可能影响累加器或任何其他注册表的指令是 INR。“我的”模拟器是否有可能存在缺陷并且无法正常工作? 在此处输入图像描述

4

2 回答 2

2

正如我从屏幕截图中看到的那样,您错误地输入了代码。你的最终代码应该是这样的:

MVI A, 3H       ->   3E 03
MVI B, 4H       ->   06 04
ADD B           ->   80
HLT             ->   76

我没有使用过这个模拟器,但我想你输入了错误的助记符。我认为应该是这样的:

Address    Mnemonics   M Code
Address1:  MVI A       3E
Address2:  3           03
Address3:  MVI B       06
Address4:  4           04
Address5:  ADD B       80
Address6:  HLT         76

而且不喜欢:

Address1: MVI A, 3
Address2: MVI B, 4
Address3: ADD B
Address4: HLT

(如果我们在没有操作码的地方看到列 M. 代码,这一点就很清楚MVI A, 3了)那么只有你会得到预期的代码:MVI B, 4

3E 03 06 04 80 76

到目前为止,您实际运行的是一些NOP操作(操作码值00)和HLT. :-)

于 2013-05-23T04:39:16.293 回答
1

的结果

MVI A, 3H
MVI B, 4H
ADD B

将在寄存器 A 中产生结果。

MVI B, 4H 的结果将是寄存器 B 中的 4H。

于 2013-05-22T15:32:07.433 回答