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

时间:2016-05-04 08:05:19

标签: emulation gameboy opcodes

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

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

对这些说明中的任何一项所做的任何澄清都会很棒,因为我现在很茫然。

1 个答案:

答案 0 :(得分:3)

  

在我的实现中,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