操作码 0xE9 (JP HL) 和 0xF8 (LD HL,SP+r8) 有什么作用?

The*_*lo2 3 emulation opcodes gameboy

我想我正在努力正确定义以下不明确的操作码:LD HL,SP+r8JP (HL)操作码(0xE90xF8分别)

在我的实现中,LD HL,SP+r8设置HL为 的值SP+r8,但我感觉这可能与从 RAM 加载内存有关。 JP (HL),我已经PUSH将 PC 放到堆栈上并将程序计数器设置为 HL 的值(就像JP a16,除了 HL 的值),但我读过一些论坛,似乎说这是错误的。

任何对这些指令所做的任何澄清都会很棒,因为我现在很迷茫。

Mic*_*ael 5

在我的实现中,LD HL,SP+r8 将 HL 设置为 SP+r8 的值,但我感觉这可能与从 RAM 加载内存有关。

不。它只需要一个 8 位立即数,对其进行符号扩展,将 的值添加SP到它并将结果存储在HL.

JP(HL),我将PC推入堆栈并将程序计数器设置为HL的值(如JP a16,除了HL的值)

JP不会将当前推入PC堆栈(也许您将其与 混淆CALL)。什么JP (HL)做才是PC = HL