Fatorial Assembly MIPS

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

[ Hits: 8.483 ]

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

Escrita de número em binário em Assembly Puro para Linux 64 bits (Nasm - Netwide Assembler)

"Clear Screen" para Linux x86 em Assembly Puro (Nasm - Netwide Assembler)

Escrita de um número em decimal na tela em Assembly Puro para Linux 64 bits (GNU Assembly)

Expressão matemática em C

Inverter uma string, Assembly8086


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts