100x100个整数A
个整数,每个一个字节,位于A
。编写一个程序段来计算次要对角线的总和,即
SUM =ΣA[i,99-i],其中i = 0 ... 99
这是我到目前为止所做的:
LEA A, A0
CLR.B D0
CLR.B D1
ADDA.L #99, D0
ADD.B (A0), D1
ADD.B #1, D0
BEQ Done
ADDA.L #99,A0
BRA loop
答案 0 :(得分:1)
此代码中存在很多问题,包括(但不限于):
在表现方面:
考虑到代码与解决方案足够接近,这里有一个变体(我没有测试,希望它有效)
lea A+99*100,a0 ; Points to the first column of the last row
moveq #0,d0 ; Start with Sum=0
moveq #100-1,d1 ; 100 iterations
Loop
moveq #0,d2 ; Clear register long
move.b (a0),d2 ; Read the byte
add.l d2,d0 ; Long add
lea -99(a0),a0 ; Move one row up and one column right
dbra d1,Loop ; Decrement d1 and branch to Loop until d1 gets negative
Done
; d0 now contains the sum