用户mips输入的数组整数

时间:2014-03-08 18:54:40

标签: arrays stack mips

    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。

1 个答案:

答案 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强制数组是字对齐的。