2013-03-28 3 views
4

Чтение документации на 6502, и я не смог найти это в любом месте. При использовании относительной адресации можно обернуть. Но можно ли обернуть оба конца? Я предполагаю, что это возможно, однако маловероятно.6502 Обмотка относительного адреса

И когда я имею в виду оба конца, я имею в виду, я знаю, что вы можете обернуть с высокого ПК на низкий ПК. Но можете ли вы также обернуть с низкого ПК на высокий ПК?

ответ

7

Пересечение границы страницы с относительной ветвью приведет к дополнительному циклу, но не имеет значения, является ли ветка перехода страницы ветвью вперед или назад.

Вы можете попробовать это в Visual6502. Введите программу A9 00 F0 EC (LDA #00/BEQ $FFF0) по адресу 0000, выполните однократный код и посмотрите, где он заканчивается после BEQ. Если вы доверяете только реальному оборудованию, вы можете легко убедиться в этом, например, в развлекательной системе Nintendo.

Очевидно, чтобы иметь возможность добраться до страницы FF с относительной ветвью, вы должны были бы выполнять из RAM-памяти zeropage, и вы, вероятно, не захотите тратить ZP RAM на код, так как он должен соответствовать вашим наиболее часто доступным данные. Таким образом, этот конкретный сценарий маловероятен.

0

В общем случае вы можете выполнить собственное вычисление адреса с использованием арифметики по модулю, а затем использовать результат для абсолютной адресации.

+2

Я считаю, что вопрос о 6502 поведении. Op, вероятно, работает над некоторыми материалами эмуляции и т. Д. Я не думаю, что этот ответ ему помогает. –

3

Да, это работает и наоборот. Но многие ассемблеры этого не поддерживают. Когда вы пытаетесь поместить оператор ветви в начале области адресации> $ ff80, ассемблеры обычно вызывают ошибки, такие как «offset too large». Но когда вы попытаетесь поместить код операции с байтовыми значениями, например > 0002 f0 e0, вы получите результат beq $ffe4. Я использовал 0002 в качестве первого адреса памяти, так как я использовал Commodore 64, чтобы попробовать, и $ 0001 не может использоваться для этой машины. Для других машин на базе 6502, 0000 тоже должно быть в порядке.

 Смежные вопросы

  • Нет связанных вопросов^_^