0

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

4

1 回答 1

0

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

add.b (A4,D2), D7

将解决问题。

于 2014-01-02T19:52:42.983 回答