Advertisement
Guest User

xd

a guest
Oct 27th, 2019
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 3.69 KB | None | 0 0
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement