0

我正在尝试从 input.txt 文件中读取整数,下面是我的读取循环,我正在尝试读取整数并将其存储到数组中。我在使用 ARM SIM 的“LDR R2,[R2,R5,LSL #2]...im做错了吗?

    start:
    MOV R5, #0      @int i 
    MOV R1, #0
    swi SWI_Open
    LDR R1,=InFileH
    STR R0,[R1]
    MOV R3, #0

readloop:
    LDR R0, =InFileH
    LDR R0, [R0]
    swi SWI_RdInt
    CMP R0, #0
    BEQ readdone
    @the int is now in R0
    MOV R1, R0
    LDR R3,=a
    STR R2,[R3,R5,LSR#2]
    MOV R2, R1
    ADD R5, R5, #1      @i++
    bal readloop

readdone:
    MOV R0, #0
    swi SWI_Close
    swi SWI_Exit

.data
.align 4
InFileH:    .skip 4
InFile:     .asciz  "numbers.txt"
OutFile:    .asciz "numsort.txt"
OutFileH:   .skip 4
NewLine:    .asciz "\n"

a:  .skip 400
4

1 回答 1

0

我在编程臂组件时遇到了类似的问题,
这是因为它期望偏移量为 4 的倍数

STR R2, [R1, #2]

上面的指令会引发类似的错误。所以它通过使用解决了

STR R2, [R1, #4]

为了更好地理解点击这里

于 2018-11-17T17:05:00.070 回答