2014-02-01 3 views
0

Я пытаюсь попросить пользователя ввести число целых чисел, которые они хотят ввести, а затем пропустить эту сумму. Также я хочу передать каждое значение после этого в массив, но я столкнулся с проблемой, проверяющей, что цикл продолжается до тех пор, пока пользовательский пароль не войдет. 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: 

ответ

1

li означает «нагрузки немедленным», поэтому он всегда занимает один регистр и одно непосредственное значение. Чтобы скопировать одно значение регистра в другой регистр, используйте move destination source

Смежные вопросы