访问字节数组的奇数索引会导致地址错误

时间:2014-01-02 18:44:52

标签: assembly 68000

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

1 个答案:

答案 0 :(得分:0)

问题是你是从数组中读取一个单词而不是一个字节,将第6行汇编代码更改为:

add.b (A4,D2), D7

将解决问题。