Вам нужно найти два нулевых местоположения страницы и проиндексировать их.Косвенная адресация доступна только через нулевую страницу.И, на самом деле, не существует косвенного режима с нулевой страницей, который также не использует индекс.
При условии, что доступны $02
и $03
.Скопируйте туда байты.
; Store the address you want to access in zp memory
lda $300
sta $03 ; Note I'm swapping the bytes (see below)
lda $301
sta $02
; access the address indirectly through zero page
ldx #0
lda $data
sta ($02,x) ; x is zero so address used is $02
Причина, по которой я переставил байты при копировании их на нулевую страницу, заключается в том, что вы сохранили адрес (в вашем вопросе) в $300
в порядке с прямым порядком байтов, т.е.байт по младшему адресу.6502 является прямым порядком байтов, что означает, что он ожидает младший байт по младшему адресу.Вы должны действительно следовать 6502 соглашениям и хранить свои байты так, чтобы $300
содержал $16
, а $301
содержал $20
.