SHARE
TWEET

xd

a guest Oct 27th, 2019 135 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .data
  2.     estacionamento: .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  3.     mostrarVagas: .asciiz "\nMostrar vagas: \n"
  4.     vagasLivres: .asciiz "\nMostrar vagas livres: \n"
  5.     estacionar: .asciiz "\nEstacionar carro na vaga: "
  6.     remover: .asciiz "\nRemover carro da vaga: "
  7.     resumoEstacionamento: .asciiz "\nResumo do estacionamento:"
  8.     saida: .asciiz "Falou irmao\n"
  9.     Menu: .asciiz "\n1. Mostrar vagas\n2. Mostrar vagas livres\n3. Estacionar carro na vaga\n4. Remover carro da vaga\n5. Resumo do estacionamento\n6. Encerrar programa\n"
  10.     vagaLivre: .asciiz " Vaga Livre\n"
  11.     vagaOcupada: .asciiz " Vaga Ocupada\n"
  12.     vagaNaoOcupada: .asciiz "Vaga nao esta sendo ocupada\n"
  13.     VagasOcupadas: .asciiz "\nVagas ocupadas: "
  14.     VagasVazias: .asciiz "\nVagas Livres: "
  15.    
  16. .text
  17.  
  18. main:
  19.     la $s1, estacionamento # $s1 registrador do vetor
  20. menu:
  21.     li $t8, 0 # $t8 registrador do indice
  22.     li $v0, 4
  23.     la $a0, Menu
  24.     syscall
  25.    
  26.     li $v0, 5 # lê a entrada desejada
  27.     syscall
  28.     move $t0, $v0
  29.    
  30.     beq $t0, 1, MostrarVagas
  31.     beq $t0, 2, VagasLivres
  32.     beq $t0, 3, Estacionar
  33.     beq $t0, 4, Remover
  34.     beq $t0, 5, Resumo
  35.     beq $t0, 6, exit
  36.    
  37. MostrarVagas:
  38.     la $s1, estacionamento # inicia o endereço do vetor
  39.     li $v0, 4
  40.     la $a0, mostrarVagas
  41.     syscall
  42.  
  43. loopmv:
  44.     beq $t8, 20, menu # for mostrar vagas
  45.    
  46.     lw $t0, 0($s1)
  47.     addi $s1, $s1, 4
  48.    
  49.     li $v0, 1
  50.     move $a0, $t8
  51.     syscall
  52.    
  53.     addi $t8, $t8, 1
  54.    
  55.     li $v0, 4
  56.    
  57.     beqz $t0, VL1 # if livre
  58.     la $a0, vagaOcupada # else ocupada
  59.     syscall
  60.     j loopmv
  61.    
  62. VL1:
  63.     la $a0, vagaLivre
  64.     syscall
  65.     j loopmv
  66.  
  67. VagasLivres:
  68.     la $s1, estacionamento # inicia o endereço do vetor
  69.     li $v0, 4
  70.     la $a0, vagasLivres
  71.     syscall
  72.  
  73. loopvl:
  74.     beq $t8, 20, menu # for vagas livres
  75.    
  76.     lw $t0, 0($s1)
  77.     addi $s1, $s1, 4
  78.    
  79.     addi $t8, $t8, 1
  80.    
  81.     bnez $t0, loopvl # se estiver ocupada não vai para os prints e retorna para o for
  82.    
  83.     li $v0, 1
  84.     subi $a0, $t8, 1
  85.     syscall
  86.    
  87.     li $v0, 4
  88.     la $a0, vagaLivre
  89.     syscall
  90.     j loopvl
  91.  
  92. Estacionar:
  93.     la $s1, estacionamento # inicia o endereço do vetor
  94.     li $v0, 4
  95.     la $a0, estacionar
  96.     syscall
  97.    
  98.     li $v0, 5
  99.     syscall
  100.     move $s7, $v0
  101.    
  102.     li $t0, 4  
  103.     mul $s7, $s7, $t0
  104.     add $s1, $s1, $s7  
  105.     lw $t1, 0($s1) 
  106.    
  107.     bnez $t1, VagaNaoDisponivel # se ja estiver ocupada vai para o print
  108.     li $t6, 1
  109.     sw $t6, 0($s1) # estaciona e registra 1 na vaga selecionada
  110.     j menu
  111.    
  112. VagaNaoDisponivel:
  113.     li $v0, 4          
  114.     la $a0, vagaOcupada
  115.     syscall
  116.     j Estacionar # retorna para estacionar em outra vaga
  117. Remover:
  118.     la $s1, estacionamento # inicia o endereço do vetor
  119.     li $v0, 4
  120.     la $a0, remover
  121.     syscall
  122.    
  123.     li $v0, 5
  124.     syscall
  125.     move $s7, $v0
  126.    
  127.     li $t0, 4
  128.     mul $s7, $s7, $t0 # multiplica bits
  129.     add $s1, $s1, $s7
  130.     lw $t1, 0($s1) # carrega na posição indicada
  131.     beqz $t1, VagaLivre # if vaga não esteja ocupada
  132.     sw $zero, 0($s1) # else remove o carro e registra 0 na vaga
  133.     j menu
  134.        
  135. VagaLivre:
  136.     li $v0, 4          
  137.     la $a0, vagaNaoOcupada
  138.     syscall
  139.     j Remover
  140.    
  141. Resumo:
  142.     li $v0, 4
  143.     la $a0, resumoEstacionamento
  144.     syscall
  145.    
  146.     la $s1, estacionamento # inicia o endereço do vetor
  147.     li $t0, 0     # $t0 = contador de ocupadas 
  148.     li $t1, 0     # $t1 = contador de livres
  149.     li $t8, 0     # $t8 = indice
  150.    
  151. LoopResumo:
  152.     beq $t8, 20, ExitResumo # for resumo
  153.    
  154.     lw $t4, 0($s1)
  155.     addi $s1, $s1, 4
  156.    
  157.     bne $t4, $zero, OcupadaResumo # if ocupada
  158.     addi $t1, $t1, 1 # else livre
  159.     addi $t8, $t8, 1    
  160.     j LoopResumo        
  161.    
  162. OcupadaResumo:
  163.     addi $t0, $t0, 1   
  164.     addi $t8, $t8, 1   
  165.     j LoopResumo       
  166.  
  167. ExitResumo:
  168.     # prints do resumo
  169.     li $v0, 4
  170.     la $a0, VagasOcupadas
  171.     syscall
  172.     li $v0, 1  
  173.     move $a0, $t0
  174.     syscall
  175.    
  176.     li $v0, 4
  177.     la $a0, VagasVazias
  178.     syscall
  179.     li $v0, 1
  180.     move $a0, $t1      
  181.     syscall
  182.    
  183.     j menu
  184. exit:
  185.     li $v0, 4
  186.     la $a0, saida
  187.     syscall
  188.     li $v0, 10
  189.     syscall
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top