我的代码中有一个字节数组,我必须访问这个数组的随机元素。加载数组的地址,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
是奇数地址,因此模拟器会产生地址错误,正确的方法是什么?