具體思路:先定義一個隊列用來存儲數據,在實現中,通過移位操作可以獲知隊列的長度(移位操作相比除法更加快速),同時注意在隊列的存儲中是一個字存儲一個數據,但是移位和後面累加的操作中,隊列指針的指向地址每次加4還是加8主要看自己的機子是32位還是64位的機子。然後後面就是主要的實現部分了,大家應該都可以看懂。
ARM代碼如下:
ARRAY_SIZE EQU 40
AREA HOMEWORK4,CODE,READWRITE
ENTRY
START
MOV R0,#0
LDR R1,=ARRAY_DATA
MOV R2,#0
MOV R3,#0
LDR R4,=RESULT
MOV R5,#ARRAY_SIZE
ADD R5,R0,R5,LSR #2
INIT
ADD R0,R0,#1
STR R0,[R1]
ADD R1,R1,#4
CMP R0,R5
BNE INIT
BEQ SUM
SUM
LDR R3,[R1]
ADD R2,R2,R3
SUB R1,R1,#4
CMP R0,#0
SUB R0,R0,#1
BNE SUM
STR R2,[R4]
BEQ STOP
STOP
B STOP
ARRAY_DATA
SPACE ARRAY_SIZE
RESULT
DCD 0
END