Fatorial Assembly MIPS

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

[ Hits: 8.449 ]

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 um número em hexadecimal na tela em Assembly Puro para Linux 64 bits (GNU Assembly

Escrita de um número em binário na tela em Assembly Puro para Linux x86 (Nasm - Netwide Assembler)

Escrita de um número em octal na tela em Assembly Puro para Linux x86 (Nasm - Netwide Assembler)

Inverter uma string, Assembly8086

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


  

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