我的代码中有一个字节数组,我必须访问此数组的随机元素。
数组地址加载到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
是奇数地址所以模拟器产生地址错误,这是正确的做法吗?
答案 0 :(得分:0)
问题是你是从数组中读取一个单词而不是一个字节,将第6行汇编代码更改为:
add.b (A4,D2), D7
将解决问题。