Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Programa Assembly-fatorial, Notas de estudo de Informática

Programa em Assembly

Tipologia: Notas de estudo

2015

Compartilhado em 25/09/2015

emerson-ribeiro-39
emerson-ribeiro-39 🇧🇷

4.9

(7)

4 documentos

1 / 2

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
2. Faça um programa em assembly para calcular o fatorial de um número N. Considere
que o
fatorial de 0 é 1.
.data
msg_1: .asciiz "\nO fatorial de "
msg_11: .asciiz " é "
msg_2: .asciiz "Digite um numero: "
esp: .asciiz " "
.text
# t0 = n, t1 = FAT
li $t1,1 # t1 = FAT
la $a0,msg_2 # carregando os endereços da frase do msg para syscall
li $v0,4 # o tipo de serviço de syscall, Exibição de String (Print Service)
syscall
li $v0,5
syscall
move $t0,$v0
move $t3,$t0
beq $t0,$zero,PRINT # se t0 = 0 ir para exibição do fatorial
CAL:
mul $t1,$t1,$t0 # t1 = t1 * t0
addi $t0,$t0,-1 # n --
bgtz $t0,CAL # se t0 > 0 ir pra CAL
PRINT:
la $a0,msg_1 # carregando os endereços da frase do msg para syscall
li $v0,4 # especifica o serviço de Exibição de String (Print Service)
syscall
move $a0,$t3 # Carregando o endereço de memoria de $t3
li $v0,1 # Serviço de Exibição de inteiros
syscall
la $a0,msg_11 # carregando os endereços da frase do msg para syscall
li $v0,4 # especifica o serviço de Exibição de String (Print Service)
syscall
la $a0,esp # carregando os endereços da frase do msg para syscall
pf2

Pré-visualização parcial do texto

Baixe Programa Assembly-fatorial e outras Notas de estudo em PDF para Informática, somente na Docsity!

2. Faça um programa em assembly para calcular o fatorial de um número N. Considere

que o

fatorial de 0 é 1.

.data msg_1: .asciiz "\nO fatorial de " msg_11: .asciiz " é " msg_2: .asciiz "Digite um numero: " esp: .asciiz " "

.text

t0 = n, t1 = FAT

li $t1,1 # t1 = FAT

la $a0,msg_2 # carregando os endereços da frase do msg para syscall li $v0,4 # o tipo de serviço de syscall, Exibição de String (Print Service) syscall

li $v0, syscall move $t0,$v move $t3,$t

beq $t0,$zero,PRINT # se t0 = 0 ir para exibição do fatorial CAL: mul $t1,$t1,$t0 # t1 = t1 * t addi $t0,$t0,-1 # n -- bgtz $t0,CAL # se t0 > 0 ir pra CAL PRINT: la $a0,msg_1 # carregando os endereços da frase do msg para syscall li $v0,4 # especifica o serviço de Exibição de String (Print Service) syscall

move $a0,$t3 # Carregando o endereço de memoria de $t li $v0,1 # Serviço de Exibição de inteiros syscall

la $a0,msg_11 # carregando os endereços da frase do msg para syscall li $v0,4 # especifica o serviço de Exibição de String (Print Service) syscall

la $a0,esp # carregando os endereços da frase do msg para syscall

li $v0,4 # especifica o serviço de Exibição de String (Print Service) syscall

move $a0,$t1 # carregando os endereços da frase do msg para syscall li $v0,1 # especifica o serviço de Exibição de inteiros (Print Service) syscall