Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting &引用;访问未对齐的内存位置,错误地址=ffffff";_Sorting_Assembly_Armasm - Fatal编程技术网

Sorting &引用;访问未对齐的内存位置,错误地址=ffffff";

Sorting &引用;访问未对齐的内存位置,错误地址=ffffff";,sorting,assembly,armasm,Sorting,Assembly,Armasm,我试图从input.txt文件中读取整数,下面是我的读取循环,我试图在其中读取整数并将其存储到数组中。在“LDR R2、[R2、R5、LSL#2]…我使用ARM SIM卡”之后的任何一行中,我都会不断获得“访问未对齐的内存位置,错误地址=FFFFFFFF”。有人知道我做错了什么吗 start: MOV R5, #0 @int i MOV R1, #0 swi SWI_Open LDR R1,=InFileH STR R0,[R1]

我试图从input.txt文件中读取整数,下面是我的读取循环,我试图在其中读取整数并将其存储到数组中。在“LDR R2、[R2、R5、LSL#2]…我使用ARM SIM卡”之后的任何一行中,我都会不断获得“访问未对齐的内存位置,错误地址=FFFFFFFF”。有人知道我做错了什么吗

    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

我在编写arm汇编程序时遇到过类似的问题
这是因为它期望偏移量是4的倍数

STR R2, [R1, #2]
上面的指令抛出了类似的错误。因此使用

STR R2, [R1, #4]

为了更好地理解

LDR R2[R2,R5,LSL#2]的源操作数中使用R2之前,不要将R2设置为值
如何写入该行以保存偏移量并将其读取的整数存储到数组中的正确地址。两个提示:LDR将值从内存加载到寄存器中。STR将值从寄存器存储到内存中。使用
LDR R3,=a
指令将数组地址加载到R3中,但不使用我把它从LDR改为STR,并把R3放在里面。我感到困惑,因为所有我寻找正确语法状态汇编的地方都是“LSL R2,R3,#2”。我把我迄今为止的东西放在上面。这至少是正确的轨道吗?
[R3,R5,LSR#2]