我正在使用Easy68k开发一个汇编程序,并使用M68k 汇编语言进行编程。我正在尝试计算两个 16 位字数组(A
和B
)的标量积(点积)。但是,我遇到了一个问题,我的LOOP
变得无限大,但我不知道为什么。
代码如下:
ORG $8000
START:
clr.l d0
lea.l A,a0
lea.l B,a1
moveq #len,d1
LOOP:
move.w (a0)+,d5
move.w (a1)+,d6
mulu.w d5,d6
add.l d6,d0
subq.l #1,d1
bne.s LOOP
move.l d0,scalar_prod
SIMHALT
; DATES
A DC.W 10,20,30,40
B DC.W 50,60,70,80
len EQU 4
scalar_prod DC.L 0
END START
问题
d1
我以为当和都减为零时循环应该停止d2
,但它并没有按预期终止。有人能帮我理解这里可能出了什么问题吗?通过使用move.b #len,d1
优化建议:
我也非常感激任何关于如何优化此代码的建议。谢谢!:-)