2016-10-29 3 views
-2

Хорошо в моем первом назначении uni, я получил геометрическую программу прогрессирования в mips. Проблема заключается в том, что я должен использовать a_ {n} = a * r^{n-1}, и мне нужно создать программу, которая отображает первые 6 чисел этой геометрической прогрессии с a1 = 3 и r = 3. Числовые можно увидеть 3,6,12,24,48,96 и резюме этого класса новичков 6.Its, поэтому мы не используем стандартные имена Assembly. моя проблема в том, что я сделал код, который показывает числа 3,12,24,48,96,192 и сумму. Может ли кто-нибудь помочь мне, чтобы я мог склеить число 6 между ними?Сборка программы в mips. Геометрическая прогрессия

li $3,1 
li $8,3 #a1 
li $9,2 #r 
li $10,5 #counter 
li $11,0 #summ 
addi $2,$0,1 
add $4,$0,$8 
syscall 
add $11,$11,$4 
L1: 
    addi $3,$3,1 
    subi $6,$3,1 
    beq $6,1,Else 
    sllv $14,$9,$6 
    Else: 
     sllv $14,$9,$6 
    j Endif 
    Endif: 
    mul $14,$8,$14 
    add $4,$0,$14 
    addi $2,$0,1 
    syscall 
    add $11,$11,$4 
    addi $10,$10,-1 
    bne $10,$0,L1 
    addi $2,$0,1 
    move $4,$11 
    syscall 
+0

В чем смысл этого 'if/else'-thing в цикле? – Michael

ответ

1

r^(n-1) является 2^(n-1), т.е. 1<<(n-1). Но то, что вы вычисляете, составляет r<<(n-1), то есть 2<<(n-1), что, очевидно, даст вам удвоенное значение, которое вы хотели.

+0

Я немного смущен тем, что вы имеете в виду с r << .. извините, я пытался решить это часами, и мой мозг настолько запутан в настоящий момент. –

+0

'<<' как в логическом сдвиге влево ('sll'). – Michael

+1

omg.trying, чтобы объяснить u моя мысль заставила меня понять меня problem.if я меняю стартовый номер $ 3, то, например, в первом прогоне 2^1-1 = 0, поэтому я получу номер 6. проблема решена. –

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