Free Essay

Trab1

In:

Submitted By kayuga
Words 402
Pages 2
# # # # # # #

CODIGO ASSEMBLY PARA O CALCULO DO FATORIAL NAO RECURSIVO inteiro positivo n. (Ex: 0! = 1; código em C #include #include 3! = 3*2*1 = 6) */

# int fatorial(int n) # { # int fat = 1; # while (n > 1) { # fat = fat * n--; # } # return(fat); # } # # void main() # { # int n = 0; # # printf("Digite um numero para o fatorial:"); # scanf("%d", &n); # # printf("O fatorial de %d e' %d\n", n, fatorial(n)); # # return; # } #******************************************************************* .data # inicia o segmento de dados .align 0 # determina o alinhamento dos bytes (2 elevado a 0) strdigite: .asciiz "Digite um numero para o fatorial: " strfat: .asciiz "O fatorial de " streh: .asciiz " eh :" .text # inicia o segmento de texto .align 2 # determina alinhamento de 2 elevado a 2, ou seja, 4 bytes .globl main # determina que o identificador main é global main: li $v0, 4 # cod. rotina impressao string la $a0, strdigite # end. da string a ser impressa syscall # chamada do sistema operacional li $v0, 5 syscall # cod rotina ler um inteiro # chamada do sistema operacional # copia vlr lido para $a0 (parametro)

add $a0, $zero, $v0 jal fatorial move $t1, $v0 move $t0, $a0 calculado o fatorial li $v0, 4 la $a0, strfat syscall

# chama a funcao fatorial # salva em $t1 o resultado do fatorial # salva em $t0 o valor sobre o qual foi # cod. rotina impressao string # obtem endereco de strfat para impressao # impressao da string strfat

li $v0, 1 move $a0, $t0 syscall li $v0, 4 la $a0, streh syscall li $v0, 1 move $a0, $t1 syscall li $v0, 10 syscall

# cod rotina para impressao inteiro # $a0 recebe nr digitado para o calculo # cod. rotina impressao string # obtem endereco de streh para impressao # cod. rotina impressao inteiro # $a0 recebe resultado do fatorial # fim do programa

#****************************************************************** # aqui termina a funcao main e comeca a funcao fatorial #****************************************************************** fatorial: addi $sp, $sp,-8 sw $a0, 4($sp) sw $ra, 0($sp) addi $v0, $zero, 1 addi $t6, $zero, 1 loopfat: ble $a0, $t6, endloop while mul $v0, $v0, $a0 addi $a0, $a0, -1 j loopfat endloop: lw $a0, 4($sp) lw $ra, 0($sp) addi $sp, $sp, 8 jr $ra # decrementa $sp # salva $a0 na pilha # salva $ra na pilha # fat=1 # $t6 auxilia na parada da repeticao # loop para o calculo do fatorial # condicional que marca o inicio do # fat = fat * n # n--

# recupera $a0 da pilha # recupera $ra da pilha # incrementa $sp # retorna para a funcao main

# esta linha nunca sera atingida

Similar Documents

Free Essay

Trab1

...1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn g23nv1f 1fre1g12rg21fn...

Words: 280 - Pages: 2