我已经开始为Gameboy classic编程模拟器,这是我成功完成Chip 8 Emulator之后的下一个项目。
作为参考,我使用the GameBoy CPU Manual。
现在第66页说:
LD A,(HL) 7E 8
基本上,将值HL加载到寄存器A中。
但是,据我所知,这会将16位值HL加载到8位寄存器A中。这当然不合适。
你知道这是怎么回事吗?所有其他参考文献只是简单的表格,没有解释,但说同样的事情。
感谢您的回答!
答案 0 :(得分:7)
使用该指令,(HL)指向的值被加载到A而不是HL本身的值。 例如,如果HL的值为0xABCD且地址0xABCD的存储器值为0x50,则0x50将加载到寄存器A中。
伪实现
register.A = memory.ReadByte(register.HL);
答案 1 :(得分:1)
我认为LD A,(HL)是更广泛地写成LD a,[hl]的同义词,基于第71页的类似指令的文档。
- LDD A,(HL) 描述: 将地址HL的值放入A.递减HL。 相同:LD A,(HL) - DEC HL
醇>
因此,LD A,(HL)表示“将地址HL的值放入A”。 HL是一个16位值,但它引用的地址是8位,因此它适合A。