Итак, я пытаюсь понять, как обойти тот факт, что LDX не имеет возможности для косвенного индексирования, но мне все не повезло. (Довольно новый с ассемблером) Я использую LDA (arrPoint), Y для загрузки MSB из массива int, и я хочу использовать LDX (arrPoint), Y для получения LSB.Непрямое индексирование по регистру X - Assembler 6502
Любые советы о том, как я могу написать это, поэтому я могу использовать косвенные индексы с регистром X?
Вот некоторые из моего кода, где arrPoint находится в памяти 1000 $, а slask - 2 databytes.
getInt:
ASL
STA $36
LDY $36
LDX arrPoint, Y
INY
LDA (arrPoint), Y
RTS
setInt:
STY slask
ASL slask
LDY slask
STX arrPoint, Y
INY
STA (arrPoint), Y
RTS
Благодаря
Если вы не возражаете, крушить 'A' регистр вы можете использовать недокументированные инструкции' LAX (arrPoint), Y' (загружает ту же величину, чтобы как 'A', так и' X'). Код операции - '$ B3', если ваш ассемблер не поддерживает недокументированные инструкции. – Michael
Ну, похоже, я не мог использовать LAX, но не мог ли я сначала загрузить один байт в Accumilator, а затем написать TAX, чтобы перенести его в регистр X, а затем загрузить второй байт в Accumilator? –
'LAX' 1 байт и 1 цикл меньше, чем' LDA' + 'TAX', если я правильно рассчитываю. Но кроме этого было бы одно и то же. – Michael