Skip to content
Snippets Groups Projects
Commit d7b57857 authored by PEREZ-SIERRA ERIC's avatar PEREZ-SIERRA ERIC
Browse files

Cette fonction ajouté aide a l'affichage du labyrinthe

parent 6dc31476
Branches
Tags
No related merge requests found
.data
prompt: .asciiz "Donnez les dimensions du labyrinthe:\n"
ligne: .asciiz "\n"
space: .asciiz " "
.text
li $v0, 4
la $a0,prompt
la $a0, prompt
syscall
li $v0,5
syscall
move $t0, $v0
# addi $t0, $t0, 1
mul $a0, $t0, $t0
li $v0, 9
syscall
# On vient d'allouer t0 x t0 bytes
move $s0, $v0
# $v0 contient l'adresse du tableau
# $t0 contient encore l'entier mis en argument
li $t6, 15 # Valeur initiale pour toutes les cases (4 murs)
lire_ligne_lab:
li $t3, 0 #int i = 0
lire_ligne_lab_externe:
bge $t3, $t1, lire_ligne_lab_boucle_ext_fin
bge $t3, $t0, lire_ligne_lab_boucle_ext_fin
li $t4, 0 #int j = 0
lire_ligne_lab_boucle_interne:
bge $t4, $t2, lire_ligne_lab_boucle_int_fin
##### ##### #####
##### ##### #####
mul $t5, $t3, $t0 # $t5 <-- N * i
add $t5, $t5, $t4 # $t5 <-- N * i + j
sll $t5, $t5, 2 # $t5 <-- 2^2 * (N * i + j)
add $t5, $s0, $t5 # $t5 <-- adresse de base + (2^2 * (N * i + j))
bge $t4, $t0, lire_ligne_lab_boucle_int_fin
mul $t5, $t4, $t0 # $t5 <-- N * j
add $t5, $t5, $t3 # $t5 <-- N * j + i
sll $t5, $t5, 2 # $t5 <-- 2^2 * (N * j + i)
add $t5, $s0, $t5 # $t5 <-- adresse de base + (2^2 * (N * j + i))
# Assigner les valeurs à chaque cellule
# move $v0, $t6
sw $t6,0($t5)
addi $t4, $t4,1 # j++
sw $t6, 0($t5)
addi $t4, $t4, 1 # j++
b lire_ligne_lab_boucle_interne
lire_ligne_lab_boucle_int_fin:
......@@ -48,17 +50,73 @@ lire_ligne_lab_boucle_int_fin:
b lire_ligne_lab_externe
lire_ligne_lab_boucle_ext_fin:
# salaverga ahorita vemos que pedo
li $t6, 47
##### ##### #####
sw $t6,0($t5)
##### ##### #####
j après
après:
move $a0, $s0
move $a1, $t0
# $a0 contient maintenant l'adresse du premier element, maintenant il faut afficher le labyrinthe
# à partir de ça
jal affiche_lab
j fin
fin:
li $v0,10
syscall
affiche_lab:
move $t0, $a0 #$t0 contient l'adresse de base
move $t2, $a1
# li $t2, 4 # dimensions
li $t3, 0 #int i = 0
lire_ligne_lab_externe2:
beq $t3, $t2, lire_ligne_lab_boucle_ext_fin2
li $t4, 0 #int j = 0
lire_ligne_lab_boucle_interne2:
beq $t4, $t2, lire_ligne_lab_boucle_int_fin2
mul $t5, $t3, $t2 # $t5 <-- N * i
add $t5, $t5, $t4 # $t5 <-- N * i + j
sll $t5, $t5, 2 # $t5 <-- 2^2 * (N * i + j)
add $t5, $t0, $t5 # $t5 <-- adresse de base + (2^2 * (N * i + j))
# afficher
li $v0, 1
lw $a0, 0($t5)
# move $a0, $t7
syscall
li $v0, 4
la $a0, space
syscall
addi $t4, $t4,1 # j++
b lire_ligne_lab_boucle_interne2
lire_ligne_lab_boucle_int_fin2:
# Afficher l'espace entre lignes
li $v0, 4
la $a0, ligne
syscall
addi $t3, $t3, 1 # i++
b lire_ligne_lab_externe2
lire_ligne_lab_boucle_ext_fin2:
jr $ra
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment