Что делают коды операций 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,

Другие вопросы по тегам