Что делают коды операций 0xE9 (JP HL) и 0xF8 (LD HL,SP+r8)?
Я думаю, что изо всех сил пытаюсь правильно определить следующие неоднозначные коды операций: LD HL,SP+r8
а также JP (HL)
коды операций (0xE9
а также 0xF8
соответственно)
В моей реализации, LD HL,SP+r8
наборы HL
к стоимости SP+r8
, но у меня такое ощущение, что это может быть связано с загрузкой памяти из ОЗУ.JP (HL)
У меня как PUSH
положить ПК в стек и установить для счетчика программы значение HL (например, JP a16
кроме как со значением HL), но я прочитал несколько форумов, которые, кажется, говорят, что это неправильно.
Любое разъяснение того, что делает любая из этих инструкций, было бы замечательно, так как я довольно потерян в данный момент.
1 ответ
В моей реализации LD HL,SP+r8 устанавливает HL в значение SP+r8, но у меня есть ощущение, что это может быть связано с загрузкой памяти из ОЗУ.
Нет. Он просто принимает 8-битное значение, расширяет его, добавляет значение SP
к нему и сохраняет результат в HL
,
JP (HL), я нажимаю ПК на стек и устанавливаю счетчик программ на значение HL (как JP a16, за исключением значения HL)
JP
не проталкивает ток PC
в стеке (может быть, вы путаете это с CALL
). Какие JP (HL)
делает это просто PC = HL
,