0
.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 [存储中的地址错误] 发生并且每次显示输入号码后都会显示“忽略”?我的错误是什么.....谢谢

4

1 回答 1

1

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

matrix:
  .align 2     # ensure matrix is properly aligned
  .space 100
于 2013-02-18T13:57:22.513 回答