У меня есть массив байтов в моем коде, и мне нужно получить доступ к случайным элементам этого массива. Адрес массива загружается в A4
, а индекс вычисляется и сохраняется в D2
. Мне нужно прочитать один элемент (один байт) из этого массива в индексе D2
и добавить его в D7. Позвольте мне пояснить это, показав, как это реализовано на языке C:
char Array[80];
char* A4 = Array; // Equivalent to &Array[0]
short D2, D7 = 0;
for(...) {
D2 = ...
D7 += A4[D2];
}
Как я реализовал это в сборке m68k (часть кода):
lea Array, A4
clr.l D7
* for (...) {
* D2 = ...
add.w (A4,D2),D7 ; D7 += A4[D2];
* }
ORG $2000
Array ds.b 80
Но иногда D2 нечетный, а A4 + D2
- нечетный адрес, поэтому симулятор выдает ошибку адреса, как правильно это сделать?