2016-10-29 2 views
-2

제 첫 번째 할당에서 나는 mips에 기하학적 진행 프로그램을 가지고 있습니다. 문제는 내가 사용해야하는 타입은 a_ {n} = a * r^{n-1}이고 a1 = 3 및 r = 3.Numbers로이 기하학적 진행의 처음 6 개의 숫자를 나타내는 프로그램을 만들어야합니다. 볼 수 있습니다 3,6,12,24,48,96 및 이러한 요약 6.Its 초보자 클래스 그래서 우리는 표준 어셈블리 이름을 사용하지 마십시오. 내 문제는 내가 숫자 3,12,24,48,96,192 및 sum.Can 사람을 보여줄 수있는 코드를 만들었습니다 그래서 사이에 숫자 6을 squize 수 있습니까?어셈블리 프로그램 (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 
r^(n-1)
+0

루프의 'if/else' - 점은 무엇입니까? – Michael

답변

1

, 즉 1<<(n-1)2^(n-1)이다. 그러나 계산하는 것은 r<<(n-1)입니다. 즉, 2<<(n-1)입니다. 이는 분명히 원하는 값의 두 배를 줄 것입니다.

+0

나는 r << ...로 의미심장하게 혼란 스럽다. 미안하다. 나는 이것을 몇 시간 동안 풀려고 노력해 왔고, 나의 두뇌는 너무 어리 석다. –

+0

논리 왼쪽 시프트 ('sll')와 같이'<<'입니다. – Michael

+1

omg. 내 생각에 대해 설명해 주려고. 문제가 생겼다는 것을 깨달았습니다. 예를 들어 첫 번째 실행에서 $ 3의 시작 번호를 변경하면 2^1-1 = 0이되므로 해결 된 번호 6. 문제가 해결됩니다. –

관련 문제