Ошибка MIPS: адрес магазина не выровнен по границе слова 0x1001005e при использовании sw - PullRequest
0 голосов
/ 27 февраля 2019

Когда я пытаюсь сохранить некоторые числа в строке, первый способ, который я использовал, работает хорошо, но во втором способе есть некоторые ошибки.Когда он переходит к sw $ v0, ($ t0), возникает ошибка «Исключение во время выполнения в 0x0040002c: адрес магазина не выровнен по границе слова 0x1001005e».Я думаю, что нет никакой разницы между этими двумя способами.Я только начинаю изучать ассемблер, пожалуйста, помогите мне с ошибкой.

первый путь:

.data 
array:
    .space 1024     
input_msg:
    .ascii "Input number: "
space_str:
    .ascii " "       

.text 
.globl main
main:
la $t6,array         
move $t7 $zero       
addi $t8 $zero 10
input:
la $a0 input_msg     
li $v0 4           
syscall              

li $v0 5
syscall            

move $t0 $t7        
mul $t0 $t0 4       
addu $t0 $t0 $t6     
sw $v0 0($t0)        

addi $t7 $t7 1      
blt $t7 $t8 input 

второй путь:

read: .asciiz "Input a, b, c, d\n"
operator: .space 16
.text
.globl main

main:   
la $t0, operator# address of string operator
li $t1, 4   # cycle times
li $t2, 1   # counter

la $a0, read    
li $v0, 4
syscall

input: 

li $v0, 5
syscall 

move $t3, $t0   # t3 is the current address of string

sw $v0, ($t0)
addu $t3, $t0, 4    # change the address 
addu $t2, $t2, 1    


move $t0, $t3
blt $t2, $t1, input 
...