0

LDA 是一个简单的操作码,它加载到 intel 8080 处理器中指向的数据的累加器(寄存器 a)。在这种情况下(0x3a LDA addr),它表示 op 将 addr 加载到累加器。但我无法识别它指定为 addr 的内容。

A <- (adr) 是 0x3a 执行的操作,它使用 3 个字节的内存。我可以将数据存储在 op 的最后 2 个字节中,因为高加和低加在堆栈中,但累加器只有 1 个字节,所以我不能。谢谢。

4

1 回答 1

1

LDA a16指令从地址读取一个字节a16(8080 有一个 16 位总线)并将该值存储到A寄存器中。

该指令被编码为三个 : 0x3a lo hi,beinglohi组成地址的两个字节。

如果你想存储一个立即(常数)值,A你应该使用指令MVI A, x,作为x常数值。如您所料,该指令被编码为:0x3e x,只有两个字节。


看起来您混淆了内存地址内存内容。8080 有 16 位地址总线和 8 位数据总线。这意味着它可以访问从地址 0x0000 到 0xffff(16 个完整位)或 65536 个不同地址的内存,但每个地址都可以存储一个字节,其值从 0x00 到 0xff(8 位)。这增加了 64 KB 的内存。

现在,当你想从内存中读取一个值时,你需要指定你正在读取的值的地址(记住,地址是 16 位,值是 8 位)。因此,您必须使用 2 个字节以某种方式将地址编码到指令中。Intel CPU 使用 little-endian 方案,因此对地址进行编码时,低 8 位存储在第一个字节中,高 8 位存储在第二个字节中。这就是LDA操作码的作用,这就是它长 3 个字节的原因。

于 2019-09-01T16:32:03.587 回答