Fatorial Assembly MIPS

Publicado por Saulo Gomes (última atualização em 16/09/2015)

[ Hits: 4.044 ]

Homepage: https://about.me/saulo.gomes

Download fatorial_num_var.asm




Usando o simulador MARS, fiz esse pequeno script para demonstrar como uma operação de fatoração pode ser executada, basta alterar o valor da variável 'num'.

Optei por não utilizar dados de entrada para simplificar o entendimento.

  



Esconder código-fonte

# By saulobr88
# Assembly MIPS fatorial exemplo
#
.data
   num:   .word   10
   one:   .word   1
   two:   .word   2
.text
.globl main   # main()

main:
   lw $s0, num # Guarda o valor de entrada
   lw $s1, one # Guarda 1 para comparacao e retorno
   lw $s2, two # Guarda 2 para comparacao
   li $s3, 268500992 # Endereço de destino na RAM em decimal
   lw $t2, one # para ser o retorno padrao
   lw $t3, num # Valor de controle para o LOOP
   add $s4, $s0, $s1 # $s4 = 11
   
   # Teste para saber se num eh maior que 1
   slt $t0,$s0,$s2   # testa se num < 2 (retorna 1 se num < 2)
         beq $t0,$zero,LOOP   # Se num >= 1, vai fazer outra chamada
         #sw $t2, ($s3)
         j LSair

LOOP:
   addi $t4, $t4, 1
      slt $t0, $t4, $s4 # Verifica se o valor esta na sua ultima posicao
      beq $t0, $zero, LSair # Se chegou no final sai
   mul $t2, $t2, $t4 # t2 começa com 1, e vai incrementando pelo produto
   j LOOP

LSair:
   sw $t2, ($s3)

Scripts recomendados

GAS Inteiro para String (formato binário)

Assembler 8086 - Simples código que mostra horas e minutos em pontos

"Clear Screen" para Linux x86 com Inline Assembly (embutido no código) em C

FreeBSD Write

Retorna o maior elemento de um vetor


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts