Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- p1: .asciiz "\n1 - Mostrar todas as vagas \n2 - Mostrar vagas livres \n3 - Estacionar carro \n4 - Remover Carro \n5 - Resumo do estacionamento \n6 - Sair \n"
- space: .asciiz "-"
- vetor: .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- cheio1: .asciiz "Vaga Ocupada, escolha outra!!\n"
- vazio1: .asciiz "Vaga não ocupada, escolha outra!! \n"
- verificavagalivre: .asciiz "\nVagas livres "
- verificavagaocupada: .asciiz "\nVagas ocupada "
- vglivre: .asciiz " Vaga Livre\n"
- vgocupada: .asciiz " Vaga Ocupada\n"
- .text
- main:
- li $t1, 1
- li $t2, 2
- li $t3, 3
- li $t4, 4
- li $t5, 5
- li $t6, 6
- li $v0, 4
- la $a0 , p1 #imprime menu
- syscall
- li $v0 , 5 #LE RESULTADO DO MENU
- syscall
- move $t0, $v0
- li $s6, 0
- li $s7, 0
- beq $t0, $t1, mostrartdvagas
- beq $t0, $t2, mostrarlivres
- beq $t0, $t3, estcar
- beq $t0, $t4, remcar
- beq $t0, $t5, verifica
- j fim
- mostrartdvagas:
- li $s0 , 19 #Limite do laço com 20 posições
- move $t0 , $zero #Inicializa laço com 0
- la $s1 , vetor
- li $t6, 0
- laco:
- bgt $t0, $s0 , main #Criterio de parada do laço
- lw $t1 , 0($s1)
- addi $s1, $s1, 4
- addi $t0, $t0, 1
- li $v0, 1 #impressão vaga
- move $a0 , $t0
- syscall
- subi $t0, $t0, 1
- bne $t1, $t6, ocp
- j liv
- soma:
- addi $t0, $t0 , 1 #contador do laço
- j laco #volta para o laço
- liv:
- li $v0, 4
- la $a0 ,vglivre #imprime menu
- syscall
- j soma
- ocp:
- li $v0, 4
- la $a0 ,vgocupada #imprime menu
- syscall
- j soma
- mostrarlivres:
- li $s0 , 19 #Limite do laço com 20 posições
- move $t0 , $zero #Inicializa laço com 0
- la $s1 , vetor
- laco1:
- bgt $t0, $s0 , main #Criterio de parada do laço
- lw $t1 , 0($s1)
- addi $s1, $s1, 4
- beq $t1 , $zero , printcont
- #funcao imprime contador
- addi $t0, $t0 , 1 #contador do laço
- j laco1
- printcont:
- li $t6, 1
- addi $t0, $t0, 1
- li $v0, 1 #impressão vaga
- move $a0 , $t0
- syscall
- subi $t0, $t0, 1
- bne $t1, $t6, ocp1
- cont:
- addi $t0, $t0 , 1 #contador do laço
- j laco1 #volta para o laço
- ocp1:
- li $v0, 4
- la $a0 ,vglivre #imprime status vaga
- syscall
- j cont
- estcar:
- li $v0, 5
- syscall
- move $t9, $v0
- la $s1 , vetor
- mul $s2, $t9, $t4
- sub $s2, $s2, $t4
- add $s1, $s1, $s2
- lw $t7, 0($s1)
- beq $t7, $t1, cheio
- sw $t1 , 0($s1)
- j main
- remcar:
- li $t1, 0
- li $v0, 5
- syscall
- move $t9, $v0
- la $s1 , vetor
- mul $s2, $t9, $t4
- sub $s1, $s1, $t4
- add $s1, $s1, $s2
- lw $t7, 0($s1)
- beq $t7, $t1, vazio
- sw $t1, 0($s1)
- li $t1, 1
- j main
- verifica:
- li $s0 , 19 #Limite do laço com 20 posições
- move $t0 , $zero #Inicializa laço com 0
- la $s1 , vetor
- laco2:
- bgt $t0, $s0 , imprime1 #Criterio de parada do laço
- lw $t2 , 0($s1)
- beq $t2, $t1, relocupado
- j rellivre
- rellivre:
- addi $s7, $s7, 1
- addi $s1, $s1, 4
- addi $t0, $t0 , 1 #contador do laço
- j laco2 #volta para o laço
- relocupado:
- addi $s6, $s6, 1
- addi $s1, $s1, 4
- addi $t0, $t0 , 1 #contador do laço
- j laco2 #volta para o laço
- imprime1:
- li $v0, 4
- la $a0, verificavagalivre
- syscall
- li $v0, 1
- move $a0, $s7
- syscall
- li $v0, 4
- la $a0, verificavagaocupada
- syscall
- li $v0, 1
- move $a0, $s6
- syscall
- j main
- cheio:
- li $v0, 4
- la $a0, cheio1
- syscall
- j main
- vazio:
- li $v0, 4
- la $a0, vazio1
- syscall
- j main
- fim:
- li $v0, 10
- syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement