我无法弄清楚这里出了什么问题。我试图在内存中存储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