GameBoy ISA(编写模拟器)

Bub*_*ubo 2 assembly z80 emulation cpu-registers gameboy

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

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

如果您参考上述 PDF 的第 66 页,并查看与操作码 0x7E -- LD,R1,R2 相对应的指令,我对这不是结构很好奇..

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

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

LD,A,(HL)

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

SSp*_*oke 6

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

LD D, (HL)
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 一般注意,在汇编语言中括号通常意味着从内存加载。一些 CISC ISA 甚至有将加载两次的指令,表示为“X(Y(RA))”或“X(Y[RA])”。 (2认同)