我无法理解处理英特尔8080代码的行为。 例如,我想添加两个十六进制数: 3H和4H所以我写道:
MVI A, 3H
MVI B, 4H
ADD B
HLT
但是我在哪里可以找到处理后的结果?我应该将结果从A复制到某个内存地址还是什么? 对不起,这是我第一次遇到这种情况,我看不出它是如何运作的。
例如,图片显示我在8085模拟器中的示例。
另一个问题是为什么有些标志改变但是寄存器保持不变?
MVI B, 4H
不应该改变B寄存器的值吗?
如果没有,请解释它是如何工作的。
为每个指令累加器提供2个字节后,也没有结果。
似乎唯一可能影响累加器或任何其他注册表的指令是INR。 “我的”模拟器是否有缺陷并且无法正常工作?
答案 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, 3
和MVI 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。