Итак, я пытаюсь выяснить, как обойти тот факт, что LDX не имеет опции для косвенной индексации, но мне все не повезло. (Довольно новый для ассемблера) Я использую LDA (arrPoint), Y для загрузки и получения MSB из массива int, и я хочу использовать LDX (arrPoint), Y для получения LSB.
Какие-нибудь советы о том, как я могу написать это, чтобы я мог использовать косвенную индексацию с регистром X?
Вот часть моего кода, где arrPoint находится в памяти $ 1000, а slask - 2 байта данных.
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
на случай, если ваш ассемблер не поддерживает недокументированные инструкции. - person Michael   schedule 20.11.2013LAX
на 1 байт и на 1 цикл меньше, чемLDA
+TAX
, если я считаю правильно. Но в остальном это было бы то же самое. - person Michael   schedule 20.11.2013