如何在MIPS中解决异常5(Store Word)?

时间:2013-02-18 12:29:45

标签: mips

.data
string1:.asciiz "Enter number\n"
matrix:.space 100
i: .word 0
k: .word 0
.text
main:
lw $t1,i
lw $t2,k
la $s0,matrix
jal Build_matrix
j exit
Build_matrix:
li $t3,25
li $t4,0
li $a1,0
Scanning:
bge $t1,$t3,Return  #if i>=25,stop
li $v0,4
la $a0,string1
syscall
add $t4,$t2,$t2     #2j
add $t4,$t4,$t4     #4j
add $a1,$s0,$t4 
li $v0,5
syscall 
sw $v0,0($a1)
addi $t1,$t1,1
addi $t2,$t2,1
j Scanning
 Return:
jr $ra
    #**** End of Build_matrix method ****
exit:

这是从用户输入25个数字(要求数字25次)并将它们存储在内存中的代码。没有编译时错误。但是在运行时,此消息 - “异常5 [存储中的地址错误] ]发生并忽略“每次显示输入数字后显示?我的错误是什么.....谢谢

1 个答案:

答案 0 :(得分:1)

您面临的问题是矩阵不是字对齐的,这是sw指令所需要的。 您必须在矩阵标签后添加.align 2指令:

matrix:
  .align 2     # ensure matrix is properly aligned
  .space 100