我认为我正在努力正确定义以下不明确的操作码:LD HL,SP+r8
和JP (HL)
操作码(分别为0xE9
和0xF8
)
在我的实现中,LD HL,SP+r8
将HL
设置为SP+r8
的值,但我感觉它可能与从RAM加载内存有关。
JP (HL)
,我有PUSH
PC到堆栈并将程序计数器设置为HL的值(如JP a16
,除了HL的值),但我已经阅读一些似乎说这是错误的论坛。
对这些说明中的任何一项所做的任何澄清都会很棒,因为我现在很茫然。
答案 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
。