我無法弄清楚這裏出了什麼問題。我試圖在內存中存儲10個整數,然後按順序訪問它們中的每一個。這裏是我當前的代碼:程序集中的內存地址
.data # Data declaration section
strInMsg: .asciiz "Please Enter An Integer:"
.align 2
memAddr: .space 40
.text
main: #Get 10 integers and store them in $t0
la $t0, memAddr #$t0 - 40 = first element in array
add $t3, $zero, $zero
add $t1, $zero, 10
loop: la $a0,strInMsg
add $v0, $zero, 4
syscall
add $v0, $zero, 5
syscall
sw $v0, 0($t0)
add $s1, $s1, 4
sub $t1, $t1, 1
bgtz $t1, loop
#la $a0, memAddr
#sub $t0, $t0, 40
#j QuickSort
sub $t0, $t0, 40 #<--- PROBLEM LINE
lw $t3, 0($t0)
add $a0, $t3, $zero
addi $v0, $zero, 1
syscall
會發生什麼是正確的得到所有10個整數從用戶,如果我擺脫這個問題行的,將打印的最後一個元素如預期,因爲這是存儲在內存地址在$ t0。我以爲我可以從它減去40,使其回到前面,但它只是輸出0.我怎樣才能得到第一個元素?
像'$ t0'和'$ t1'這樣的臨時寄存器將不會保留在系統調用中。改用$ sxxx寄存器。 – markgz