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

gijlo24d  于 2023-04-30  发布在  其他
关注(0)|答案(2)|浏览(87)

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

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

但是在哪里可以找到处理后的结果呢?我应该把结果从A复制到某个内存地址还是什么?对不起,这是我第一次接触这种东西,我不知道它是如何工作的。
例如,图片显示了我在8085模拟器中的示例。

另一个问题是,为什么一些旗帜改变了,但登记册保持不变?MVI B, 4H不应该改变B寄存器的值吗?如果没有,请解释它是如何工作的。
在为每个指令提供2个字节后,累加器也没有结果。

而且似乎唯一可能影响累加器或任何其他注册表的指令是INR。有没有可能是“我的”模拟器有缺陷,不能正常工作?

dm7nw8vv

dm7nw8vv1#

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

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

(this如果我们看到M列就清楚了。Code where MVI A, 3 and MVI B, 4 has no opcodes)那么只有你会得到预期的代码:

3E 03 06 04 80 76

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

qjp7pelc

qjp7pelc2#

的结果

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

将在寄存器A中有一个结果。
寄存器B中的MVI B,4H的结果将是4H。

相关问题