2

我正在使用 C 语言开发 GameBoy 模拟器。现在我正在处理 CPU.c 文件,我对此处列出的一些指令感到有些困惑:

http://realboyemulator.files.wordpress.com/2013/01/gbcpuman.pdf

如果您参考上述 PDF 的第 66 页,并查看与 Opcode 0x7E - LD,R1,R2 对应的指令,我很好奇这个不是指令。

GB 有 8 个 8 位寄存器,A,B,C,D,E,F,H,L。16位寄存器可以通过连接两个来组成:AF,BC,DE,HL。

我对 Opcode 0x7E 感到困惑,因为它看起来像是试图将 16 位值 (HL) 存储到 8 位寄存器 (A) 中。

LD,A,(HL)

我误解了这份文件吗?有人可以解释为什么会存在这样的指令吗?它不能被 LD,A,L 代替吗?

4

1 回答 1

6

地址是 16 位,但它指向 1 个字节(8 位),它放入寄存器 A 中(下例中的寄存器 D)。

LD D, (HL)

该指令将位于寄存器对 HL 中地址的字节装入 D。

在http://gameboy.mongenel.com/dmg/lesson1.html找到这个

以下是所有课程 http://gameboy.mongenel.com/asmschool.html

于 2014-01-05T03:20:59.260 回答