LDA是一个简单的操作码,它将intel 8080处理器中的指向数据加载到累加器(寄存器a)。在这种情况下(0x3a LDA加法器),它表示op将加法器加载到累加器。但是我不知道它指定了什么地址。
A <-(adr)是0x3a进行的操作,它使用3个字节的内存。我可以将数据存储在op的最后2个字节中,如hi add和low add放在堆栈中,但是累加器只有1个字节,所以我不能。谢谢。
答案 0 :(得分:2)
LDA a16
指令从地址a16
中读取一个字节(8080具有16位总线)并将该值存储到A
寄存器中。
该指令被编码为三个:0x3a lo hi
,即lo
和hi
这两个组成地址的字节。
如果要将立即(常数)值存储到A
中,则应改用指令MVI A, x
,即x
为常数值。该指令的编码为:0x3e x
,只有两个字节,就像您期望的那样。
您似乎混淆了内存地址和内存内容。 8080具有16位的地址总线和8位的数据总线。这意味着它可以访问从地址0x0000到0xffff(16个全位)或65536个不同地址的内存,但是这些地址中的每个地址都可以存储一个字节,其值从0x00到0xff(8位)。总共可增加64 KB的内存。
现在,当您想从内存中读取一个值时,需要指定要读取的值的地址(记住,该地址是16位,该值是8位)。因此,您必须使用2个字节以某种方式将地址编码到指令中。英特尔CPU使用little-endian方案,因此对地址进行编码时,低8位存储在第一个字节中,高8位存储在第二个字节中。这就是LDA
操作码的作用,这就是为什么它长3个字节的原因。