Próbuję zapisać dane wprowadzane przez użytkownika do tablicy, ale gdy używam polecenia sw, pojawia się błąd "adres sklepu nie jest wyrównany dla słowa związanego". Moim celem jest odczytanie z 10 liczb całkowitych z tablicy, ale po wprowadzeniu pierwszej cyfry pojawia się błąd przy poleceniu sw. Nie wiem, co robię źle, spędziłem kilka godzin próbując to rozgryźć. Każda pomoc zostanie bardzo doceniona i oznaczona jako przydatna.MIPS - Przechowywanie danych w tablicy w danych wprowadzanych przez użytkownika
.data
mess: .asciiz " Enter 10 numbers to be stored in the array. "
array: .space 40 #10 element integer array
.globl main
.text
main:
jal read
b done
read:
la $t0, 0 #count variable
b readLoop
jr $ra
readLoop:
beq $t0, 40, read #branch if equal to 40, 10 items
li $v0, 4 #Print string
la $a0, mess #load prompt
syscall
li $v0, 5 #read int
syscall
sw $v0, array #store input in array ERROR HERE
addi $t0, $t0, 4 #add by 4 to count
b readLoop
print:
done:
To zadziałało dla mnie. Nie wiem, dlaczego to nie działa powyżej
.data
list: .space 16
.globl main
.text
main:
li $v0, 5
syscall
sw $v0, list
move $a0, $v0
li $v0, 1
syscall
To nic nie zmieni . Dziękuje za odpowiedź. –
Czy pojawił się błąd kompilacji? '.p2align 2' ma wyrównać następujący kod/dane na adres o potędze 2 (2^2 = 4 tutaj). Co się stanie, jeśli dodasz jedną do trzech dodatkowych znaków do ciągu 'mess'? To może również poprawić wyrównanie 'tablicy'. –