"Доступ к невыровненной ячейке памяти, неверный адрес =ffffff"
Я пытаюсь прочитать целые числа из файла input.txt, ниже мой цикл чтения, где я пытаюсь прочитать и сохранить целые числа в массиве. Я продолжаю получать "Доступ к невыровненной ячейке памяти, неверный адрес =ffffff" в любой строке после строки с "LDR R2, [R2,R5,LSL #2]... я использую ARM SIM. Кто-нибудь знает, что я делать неправильно?
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
1 ответ
Я столкнулся с подобной проблемой при программировании сборки руки
это произошло потому, что ожидалось смещение, кратное 4
STR R2, [R1, #2]
Приведенная выше инструкция выдает аналогичную ошибку. так что это было решено с помощью
STR R2, [R1, #4]
для лучшего понимания нажмите здесь