2016-10-29 21 views
-2

私の最初のユニ・アサイメントでは、私はmipsに幾何学的プログレッション・プログラムを持っています。問題は私がa_ {n} = a * r^{n-1}でなければならないタイプであり、a1 = 3とr = 3のこの幾何学的進行の最初の6つの数字を示すプログラムを作らなければならない3,6,12,24,48,96と、これらの6.Itsの初心者クラスの要約であるので、私たちは標準アセンブリ名を使用しません。私の問題は、数字3,12,24,48,96,192とsum.Canを示すコードを作った誰も私を助けることができるので、私はその間に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'のことは何ですか? – Michael

答えて

1

r^(n-1)すなわち1<<(n-1)2^(n-1)あります。しかし、あなたが計算しているのはr<<(n-1)です。すなわち、2<<(n-1)です。これは明らかに、2倍の価値を与えてくれます。

+0

私はr << ...と何かを意味することでちょっと混乱しています。申し訳ありません。私はこれを数時間解決しようとしてきました。 –

+0

論理左シフト( 'sll')のように' << 'です。 – Michael

+1

omg。私の思考を説明するための説明をしてくれました。私はproblem.ifを認識しました。たとえば、最初の実行で$ 3の開始番号を変更します。2^1-1 = 0です。 –

関連する問題