我正在尝试向用户询问他们想要输入的整数数量的输入,然后循环显示该数量。此外,我想将每个值提供给一个数组,但我遇到一个问题,检查循环是否继续,直到用户输入的sentinel值。 li不接受两个寄存器作为参数,还有其他方法可以做到吗?
.data
arr1:
.word 0:50 #allocate space for 50 integers (4-bits)
msg:
.asciiz "Give me the quantity of numbers:\n"
.text
main:
#print message
li $v0, 4
la $a0, msg
syscall
#read int
li $v0, 5
syscall
#store initial loop value
move $t0, $v0
li $8, 0
li $13, $t0 #sentinel value for loop
for:
bge $8, $13, end_for #end the loop when you reach then number entered earlier
#keep reading numbers
li $v0, 5
syscall
move $t1, $v0
la $9, arr1 #base address for array
mul $10, $8, 4 #offset of 4 bytes
add $11, $10, $9 #address for new element
li $12, $t1
sw $12, ($11) #save element at address
add $8, $8, 1 #increment loop
b for
end_for:
答案 0 :(得分:1)
li
代表“立即加载”,因此它总是需要一个寄存器和一个立即值。
要将一个寄存器值复制到另一个寄存器,请使用move destination source