GameBoy 16 位加载到 8 位内存

GameBoy 16-bit load into 8-bit memory

我已经开始为 Gameboy classic 编写模拟器,这是我继成功的 Chip 8 模拟器之后的下一个项目。

作为参考,我使用 the GameBoy CPU Manual

现在第 66 页上写着:

LD  A,(HL)  7E  8

基本上,将值 HL 加载到寄存器 A。

但是,据我了解,这会将 16 位值 HL 加载到 8 位寄存器 A 中。这当然不适合。

你知道这是什么意思吗?所有其他参考资料都是简单的表格,没有解释,但说的是一样的。

感谢您的回答!

通过这条指令,(HL) 指向的值被加载到 A 中,而不是 HL 本身的值。 例如,如果 HL 的值为 0xABCD,地址 0xABCD 处的内存值为 0x50,则将 0x50 加载到寄存器 A.

伪实现

register.A = memory.ReadByte(register.HL);

我认为 LD A,(HL) 是更广泛写为 LD a,[hl] 的同义词,基于第 71 页上类似说明的文档。

  1. LDD A,(HL) Description: Put value at address HL into A. Decrement HL. Same as: LD A,(HL) - DEC HL

所以LD A,(HL)表示"Put value at address HL into A."HL是一个16位的值,但是它引用的地址是8位,所以适合A.