1

是手臂组装机。我需要使用指令 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
4

1 回答 1

1

您可以在此处LDM找到和的描述。STM

您正在寻找的指令可能是LDMIASTMIAIA表示之后递增;即传输一个字,然后递增地址)。

例如:

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)。

于 2013-09-04T11:22:42.633 回答