添加的结果在哪里?英特尔8080

时间:2013-05-22 15:28:16

标签: assembly intel-8080

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

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

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

例如,图片显示我在8085模拟器中的示例。 enter image description here

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

为每个指令累加器提供2个字节后,也没有结果。 enter image description here

似乎唯一可能影响累加器或任何其他注册表的指令是INR。 “我的”模拟器是否有缺陷并且无法正常工作? enter image description here

2 个答案:

答案 0 :(得分: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

(如果我们看到MVI A, 3MVI B, 4没有操作码的coloumn M. Code,这很清楚 然后,只有您将获得目标代码:

3E 03 06 04 80 76

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

答案 1 :(得分:1)

的结果
MVI A, 3H
MVI B, 4H
ADD B

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

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