Buscar

MIPs Assembly - Calcular IRPF

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

# Algoritmo "exercicio4.s"
# Linguagem : MIPs Assembly
# Disciplina : Org2
# Professor : Lahir
# Descrição : Calcular IRPF
# Autor(a) : Fabio Cabral
# Data atual : 26/09/2018
.data
# dados: .space 20 	# 20 bytes de memoria para o vetor
msg1:.asciiz "\nDigite o salario: "
msg2:.asciiz "\nFaixa 1 - Isento"
msg3:.asciiz "\nFaixa 2 - 7,5% - R$ "
msg4:.asciiz "\nFaixa 3 - 15,0% - R$ "
msg5:.asciiz "\nFaixa 4 - 22,5% - R$ "
msg6:.asciiz "\nFaixa 5 - 27,5% - R$ "
msg7:.asciiz "\nTotal Imposto - R$ "
msg8:.asciiz "\nSalario com descontos - R$ "
msg9:.asciiz "\n***** SISTEMA CALCULAR IRPF ***** "
msg10:.asciiz "\n********************************* "
.text
main:
#####################################
# Mostrar Titulo 
li $v0, 4
la $a0, msg9
syscall
# Pergunta
li $v0, 4
la $a0, msg1
syscall
# Leitura REAL
li $v0, 6
syscall
mov.s $f1, $f0
# Mostrar linha acabamento 
li $v0, 4
la $a0, msg10
syscall
#####################################
li.s $f2, 1903.98 # Faixa 1
li.s $f3, 2826.65 # Faixa 2
li.s $f4, 3751.05 # Faixa 3
li.s $f5, 4664.68 # Faixa 4
li.s $f6, 0.075 
li.s $f7, 0.15 
li.s $f8, 0.225 
li.s $f9, 0.275 
# CALCULA IMPOSTO FAIXA 1
sub.s $f26, $f3, $f2
mul.s $f22, $f6, $f26
# CALCULA IMPOSTO FAIXA 2
sub.s $f27, $f4, $f3
mul.s $f23, $f7, $f27
add.s $f13, $f22, $f23 # TOTAL DO IMPOSTO
# CALCULA IMPOSTO FAIXA 3
sub.s $f28, $f5, $f4
mul.s $f24, $f8, $f28
add.s $f14, $f13, $f24 # TOTAL DO IMPOSTO
# CALCULA IMPOSTO FAIXA 4
sub.s $f29, $f1, $f5
mul.s $f25, $f9, $f29
add.s $f15, $f14, $f25 # TOTAL DO IMPOSTO
############## FAIXA 1
c.le.s $f1, $f2 # se salario <= 1903.98
bc1t se1
bc1f senao1
se1:
li $v0, 4
la $a0, msg2 # IMPRIME FAIXA 1
syscall
j fimse
senao1:
############### FAIXA 2
c.le.s $f1, $f3 # SE SALARIO <= 2826.65
bc1t se2
bc1f senao2
se2:
li $v0, 4
la $a0, msg2 # IMPRIME FAIXA 1
syscall
li $v0, 4
la $a0, msg3 # IMPRIME FAIXA 2
syscall
li $v0, 2
mov.s $f12, $f22 # VALOR FAIXA 2
syscall
li $v0, 4
la $a0, msg7 # IMPRIME TOTAL IMPOSTO
syscall
li $v0, 2
mov.s $f12, $f22 # VALOR TOTAL IMPOSTO
syscall
li $v0, 4
la $a0, msg8 # IMPRIME SALARIO COM DESCONTOS
syscall
sub.s $f1, $f1, $f22
li $v0, 2
mov.s $f12, $f1 # VALOR SALARIO COM DESCONTOS
syscall
li $v0, 4
la $a0, msg10 # Mostrar linha acabamento 
syscall
j fimse
senao2:
################ FAIXA 3
c.le.s $f1, $f4 # SE SALARIO <= 3751.05
bc1t se3
bc1f senao3
se3:
li $v0, 4
la $a0, msg2 # IMPRIME FAIXA 1
syscall
li $v0, 4
la $a0, msg3 # IMPRIME FAIXA 2
syscall
li $v0, 2
mov.s $f12, $f22 # VALOR FAIXA 2
syscall
li $v0, 4
la $a0, msg4 # IMPRIME FAIXA 3
syscall
li $v0, 2
mov.s $f12, $f23 # VALOR FAIXA 3
syscall
li $v0, 4
la $a0, msg7 # IMPRIME TOTAL IMPOSTO
syscall
li $v0, 2
mov.s $f12, $f13 # VALOR TOTAL IMPOSTO
syscall
li $v0, 4
la $a0, msg8 # IMPRIME SALARIO COM DESCONTOS
syscall
sub.s $f1, $f1, $f13
li $v0, 2
mov.s $f12, $f1 # VALOR SALARIO COM DESCONTOS
syscall
li $v0, 4
la $a0, msg10 # Mostrar linha acabamento 
syscall
j fimse
senao3:
################ FAIXA 4
c.le.s $f1, $f5 # SE SALARIO <= 4664.68
bc1t se4
bc1f senao4
se4:
li $v0, 4
la $a0, msg2 # IMPRIME FAIXA 1
syscall
li $v0, 4
la $a0, msg3 # IMPRIME FAIXA 2
syscall
li $v0, 2
mov.s $f12, $f22 # VALOR FAIXA 2
syscall
li $v0, 4
la $a0, msg4 # IMPRIME FAIXA 3
syscall
li $v0, 2
mov.s $f12, $f23 # VALOR FAIXA 3
syscall
li $v0, 4
la $a0, msg5 # IMPRIME FAIXA 4
syscall
li $v0, 2
mov.s $f12, $f24 # VALOR FAIXA 4
syscall
li $v0, 4
la $a0, msg7 # IMPRIME TOTAL IMPOSTO
syscall
li $v0, 2
mov.s $f12, $f14 # VALOR TOTAL IMPOSTO
syscall
li $v0, 4
la $a0, msg8 # IMPRIME SALARIO COM DESCONTOS
syscall
sub.s $f1, $f1, $f14
li $v0, 2
mov.s $f12, $f1 # VALOR SALARIO COM DESCONTOS
syscall
li $v0, 4
la $a0, msg10 # Mostrar linha acabamento 
syscall
j fimse
senao4:
################ FAIXA 5
# SE SALARIO > 4664.68
li $v0, 4
la $a0, msg2 # IMPRIME FAIXA 1
syscall
li $v0, 4
la $a0, msg3 # IMPRIME FAIXA 2
syscall
li $v0, 2
mov.s $f12, $f22 # VALOR FAIXA 2
syscall
li $v0, 4
la $a0, msg4 # IMPRIME FAIXA 3
syscall
li $v0, 2
mov.s $f12, $f23 # VALOR FAIXA 3
syscall
li $v0, 4
la $a0, msg5 # IMPRIME FAIXA 4
syscall
li $v0, 2
mov.s $f12, $f24 # VALOR FAIXA 4
syscall
li $v0, 4
la $a0, msg6 # IMPRIME FAIXA 5
syscall
li $v0, 2
mov.s $f12, $f25 # VALOR FAIXA 5
syscall
li $v0, 4
la $a0, msg7 # IMPRIME TOTAL IMPOSTO
syscall
li $v0, 2
mov.s $f12, $f15 # VALOR TOTAL IMPOSTO
syscall
li $v0, 4
la $a0, msg8 # IMPRIME SALARIO COM DESCONTOS
syscall
sub.s $f1, $f1, $f15
li $v0, 2
mov.s $f12, $f1 # VALOR SALARIO COM DESCONTOS
syscall
li $v0, 4
la $a0, msg10 # Mostrar linha acabamento 
syscall
fimse:

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando