1
沒有任何字符串,該程序運行良好。但是當我添加代碼塊的地方說「如果我把這個塊拿出來運行」,我會在出現錯誤的地方說「這裏導致錯誤」。我得到的錯誤是「運行時異常在0x00400028:地址超出範圍0x00000002」MIPS - 打印字符串導致嘗試打印數組值的錯誤
我不知道爲什麼我得到這個錯誤。我沒有看到如何打印字符串會給我一個錯誤,試圖從堆棧打印一個int。
我一直試圖解決這個問題幾個小時,我沒有找到很多的幫助或資源MIPS,所以任何幫助將不勝感激,並標誌有用。
.data
.align 2
list: .space 40 #an array of 10 ints
blank: .asciiz " "
mess: .asciiz "The values in the array are "
.globl main
.text
main:
jal read
li $v0, 4
la $a0, mess
syscall
jal print
jal total
jal average
lw $a0, 0($sp) #load avererage from stack
li $t0, 1 #print it
syscall #causes ERROR here ############
b done #end program
#reads in 10 digits into array
read:
li $v0, 5 #prompts for int
syscall
sw $v0, list($t0) #stores int in array
addi $t0, $t0, 4 #holds the number 4
blt $t0, 40, read #repeats until array is full
jr $ra #return to caller
#prints array
print:
lw $a0, list($t1) #loads int from array
li $v0, 1 #print int
syscall
li $v0, 4 #if I take this block out it runs ########
la $a0, blank #
syscall #
addi, $t1, $t1, 4 #counter
blt $t1, 40, print #repeats until array it full
jr $ra #return to caller
#adds the total of all array elements
total:
lw $t3, list($t2) #gets ints from array
add $s0, $s0, $t3 #adds number to running total
addi $t2, $t2, 4 #counter
blt $t2, 40, total #repeat until all ints are added
addi $sp, $sp, -4 #allocate space on array
sw $s0, 0($sp) #store total on stack
jr $ra #return to caller
#divides the total by 10, for the average
average:
lw $a0, 0($sp) #gets the total from the stack
addi $t4, $t4, 10 #10 to divide by
div $a0, $t4
mflo $t5
sw $t5, 0($sp) #store aveg in stack
jr $ra
done:
哇,我太傻了。非常感謝你。 –