它是手臂组装者。我需要使用指令ldm和stm在一次迭代中复制8个数组的数组。您不能添加或清除任何代码行。我该怎么做?
这是您需要使用的代码:
num EQU 24
IMPORT exit
EXPORT start
start LDR r0, =src
LDR r1, =dst
MOV r2, #num
LSL r2,#3
LOOP LDM ???? what to put instead of ????
STM ????
SUBS r2, r2, #1
BNE LOOP
BL exit
AREA Block, DATA, READWRITE
src DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8
dst DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
END
答案 0 :(得分:1)
您可以找到LDM
和STM
here的说明。
您正在寻找的说明可能是LDMIA
和STMIA
(IA
表示之后的增量;即传输一个字,然后递增地址)。
例如:
LDMIA r0!,{r3-r6} @ Read four words from src (r0) into registers r3, r4, r5 and r6.
@ The final address is written back to r0.
顺便说一句,这对我来说不太合适:
MOV r2, #num, LSL#2
LOOP ...
SUBS r2, r2, #1
从事物的外观来看,你要迭代96次(==数组的大小,以字节为单位)。但你显然不只是每次迭代复制一个字节。如果您计划每次迭代复制8个单词,则只应迭代3次(96/32)。