Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Univercidade Federal Rural do Rio de Janeiro - Ciência da Computação
- # Victor Baéssa de Queiroz
- .data
- nFibo1: .double 1
- nFibo2: .double 1
- nFibo3: .double 0
- residuo: .double 1
- precisao: .double 0.00001
- ndOuro: .double 1.6
- ndOuroAnt: .double 1
- zero: .double 0.0
- menos1: .double -1.0
- mensagem: .asciiz "\nNumero de ouro: "
- mensagem1: .asciiz "\n"
- .text
- main:
- # Inicia as variaveis
- ldc1 $f2, nFibo1
- ldc1 $f4, nFibo2
- ldc1 $f6, nFibo3
- ldc1 $f8, residuo
- ldc1 $f10, precisao
- ldc1 $f12, ndOuro
- ldc1 $f14, ndOuroAnt
- ldc1 $f16, zero
- ldc1 $f18, menos1
- while:
- mov.d $f14, $f12 # Faz com que o numero de ouro anterior receba o numero de ouro atual
- div.d $f12, $f4, $f2 # Gera um novo numero de ouro a partir da sequencia de fibonacci
- sub.d $f8, $f12, $f14 # Gera um novo residuo para verificação da precisão
- c.lt.d $f8, $f16 # Verifica se o residuo é negativo
- bc1t resNegativo # Caso o residuo seja negativo, vai para o label resNegativo
- # Caso o residuo não seja negativo
- mov.d $f6, $f2 # O registrador que armazena nFibo3 recebe o valor de nFibo1
- mov.d $f2, $f4 # O registrador que armazena nFibo1 recebe o valor de nFibo2
- add.d $f4, $f2, $f6 # O registrador que armazena nFibo2 recebe a soma de nFibo1 e nFibo3
- c.lt.d $f10, $f8 # Verifica se a precisão é mmenor que o residuo, se sim da um jump para o label while
- bc1f exit
- j while # Se precisão é maior ou igual ao residuo, dá um jump para o label exit
- resNegativo:
- mul.d $f8, $f8,$f18 # O residuo é multiplicado por -1, para que volte a ser positivo
- mov.d $f6, $f2 # O registrador que armazena nFibo3 recebe o valor de nFibo1
- mov.d $f2, $f4 # O registrador que armazena nFibo1 recebe o valor de nFibo2
- add.d $f4, $f2, $f6 # O registrador que armazena nFibo2 recebe a soma de nFibo1 e nFibo3
- j while # Dá um jump para o label while
- exit:
- li $v0, 4
- la $a0, mensagem
- syscall
- li $v0, 3
- syscall
- li $v0, 4
- la $a0, mensagem1
- syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement