loop:
la $a0, msg1 #output message
li $v0, 4
syscall
li $v0, 5 #read in user input
syscall
move $t0, $v0
beq $t0, -99, endloop
beq $t1,20,endloop #get user input up to 20 times
addi $t1, $t1, 1
sw $t0,($t3)
addi $t3,$t3,4
b loop #loop until it reaches 20
endloop:
我无法弄清楚如何将用户输入的数据保存到array.array大小为20整数和-99停止。不包括阵列上的-99。
答案 0 :(得分:0)
所以,我添加了必要的行,它可以在不改变任何代码的情况下工作。因此,我怀疑问题在于如何为阵列分配存储空间。
.data
msg1: .asciiz "> "
.align 2
array: .space 400
.text
main:
la $t3 array
loop:
la $a0, msg1 #output message
li $v0, 4
syscall
li $v0, 5 #read in user input
syscall
move $t0, $v0
beq $t0, -99, endloop
beq $t1,20,endloop #get user input up to 20 times
addi $t1, $t1, 1
sw $t0,($t3)
addi $t3,$t3,4
b loop #loop until it reaches 20
endloop:
jr $ra
首先,我使用.space 400
分配400个字节的存储空间,足以容纳100个整数来存储数组。重要的是,也许你错过的是.space 400
之前我有指令.align 2
强制数组是字对齐的。