我需要从用户那里读取字符串,将它们存储在堆栈中并将它们从最后一个打印到第一个。 但问题是我只能打印最后一个String。例如:
INPUT:
3
a
b
c
输出:
c
c
c
当我使用数字而不是字符串时,程序工作正常。我想,我存储寄存器的地址,而不是值,但我不知道如何解决它。
这是代码:
.data
text1: .asciiz "Enter the number of Strings.\n"
newLine: .asciiz "\n"
.text
main:
# Ask about number of Strings
li $v0, 4
la $a0, text1
syscall
# Read number of Strings
li $v0, 5
syscall
add $t0, $zero, $v0
add $t1, $t0, $zero
if:
beq $t0, 0, next
add $zero, $zero, $zero
push:
# Read String
li $v0, 8
la $a1, 8
syscall
la $t2, ($a0)
# Push on the stack
addi $sp, $sp, -4
sw $t2, 0($sp)
sub $t0, $t0, 1 # update counter
jal if
add $zero, $zero, $zero
next:
beq $t1, $t0, end
pop:
# Pop from the stack
lw $t3, 0($sp)
addiu $sp, $sp, 4
# Print String
li $v0, 4
move $a0, $t3
syscall
add $t0, $t0, 1 # update counter
jal next
add $zero, $zero, $zero
end:
提前致谢。