2013-04-20 2 views
0

Я получаю сообщение об ошибке при запуске программы: адрес хранилища не выравнивается по границе слова, что делать?MIPS сохранение данных в массивах

Вот код:

 .data 
welcome: .asciiz "Welcome to Memorization Game. \n\nYour need to enter the numbers printed in the exact sequence. Press S to start.\n" 
start: .asciiz "\nHere we go....\n" 
enter: .asciiz "\n Please enter the number:\n" 
array: .space 400 
    .text 

main:  la $t0, array  # load address of array 
     la $a0, welcome 
     li $v0, 4  # 
     syscall   # print welcome message 
     li $v0, 12  # 
     syscall   # scan to continue 
     bne $v0, 115, Exit # if $v0 != "s", jump to Exit 
     la $a0, start  # 
     li $v0, 4  # 
     syscall   # Print start message 
     li $s0, 0  # N0. of random generated numbers = 0 
     add $t3, $t0, $0 # load address of array into $t3 

Random:  slti $t2, $s0, 100 # 
     beqz $t2, Exit  # 
     addi $a0, $zero, 10 # 
     addi $a1, $zero, 99 # 
     li $v0, 42  # 
     syscall   # generate a random number 
     sw $v0, ($t3)  # put number generated into array[n] 
     addi $t3, $t3, 4 # next address 
     addi $s0, $s0, 1 # counter++ 
     j Random 

Exit:  li $v0, 10  # 
     syscall   # terminate 

ответ

2

Попробуйте вставить одно из следующих действий перед тем array: .space 400:

.p2align 2 

 

.align 2 

 

.align 4 

Другой возможный вариант заключается в переходе array: .space 400 к началу раздела данных.

+0

Спасибо, что решил проблему, но я не думаю, что случайно сгенерированные числа хранятся. Какие-либо предложения ? –

+0

Да, используйте отладчик. Кроме того, поскольку этот вопрос решен, остальное заслуживает отдельного вопроса. Но отлаживайте перед публикацией новых вопросов. –

Смежные вопросы