Java 如何用arm汇编语言编写两个数组循环

Java 如何用arm汇编语言编写两个数组循环,java,arrays,loops,assembly,arm,Java,Arrays,Loops,Assembly,Arm,问题是将循环初始化和(数组编号2)写入数组(数组编号1)所有前面元素的和。因此,在java中: 和[i]=和[i-1]+数组[i] //已将总和[0]初始化为数组[0] 到目前为止,我的代码有以下几行: array fill 20 sum fill 20 LDR R1,=array ; LDR R2,=1 ; initialize R1 to 1 LDR R3,=20 ; initia

问题是将循环初始化和(数组编号2)写入数组(数组编号1)所有前面元素的和。因此,在java中:

和[i]=和[i-1]+数组[i] //已将总和[0]初始化为数组[0]

到目前为止,我的代码有以下几行:

    array   fill        20  
    sum     fill        20

    LDR     R1,=array ; 
    LDR     R2,=1 ; initialize R1 to 1
    LDR     R3,=20 ; initialize R3 to 20

    LDR     R4,=sum
    LDR     R5,=1 ; initialize R4 to 1
    LDR     R6,=20 ;


   loop    STRB     R2,[R1,#0] ; 
           ADD      R2, R2,#1 ; Add 1 to R2
           ADD      R1, R1,#1 ; Add 1 to R1
           CMP      R2,R3 ; compare R2 and R3
           BNE      loop ; loop while not equal (R2 and R3)


   loop2   STRB     R5,[R4,#0] 
           ADD      R5, R5,#1
           ADD      R4, R4,#1
           CMP      R5,R6
           BNE      loop2
最终值应为210。

我知道我以错误的方式初始化了sum循环,但不知道如何更正它。我也无法继续代码


我刚刚开始学习arm汇编语言,非常感谢您的帮助。

我很久没有写过arm/Aarch32(PROG26!)。我搞不清楚你想用代码去哪里。你似乎根本没有读数组,我也不知道为什么你有两个循环。如果注释引用了指令应该执行的操作,而不是重复相同的信息,这也会有所帮助。因此,在第一个循环中,我只是将R2增加1,R1设置为数组的地址,然后每次循环时增加1字节。问题在于第二个循环。在增加它并保留20字节的空间后,它执行与第一个循环相同的操作。第二个循环的目的是将第二个数组初始化为第一个数组的所有前面元素的总和(如问题中所给出的),我没有这样做,因为我不知道如何做。写这些评论是为了让我不会忘记我在做什么,如果它们不够的话,很抱歉。我已经很久没有写过任何ARM/Aarch32(PROG26!)。我搞不清楚你想用代码去哪里。你似乎根本没有读数组,我也不知道为什么你有两个循环。如果注释引用了指令应该执行的操作,而不是重复相同的信息,这也会有所帮助。因此,在第一个循环中,我只是将R2增加1,R1设置为数组的地址,然后每次循环时增加1字节。问题在于第二个循环。在增加它并保留20字节的空间后,它执行与第一个循环相同的操作。第二个循环的目的是将第二个数组初始化为第一个数组的所有前面元素的总和(如问题中所给出的),我没有这样做,因为我不知道如何做。这些评论是为了不让我忘记我在做什么,如果还不够的话,我很抱歉。