IFT 1227 (hiver 2007)
Architecture des ordinateurs I
Devoir 3
Programmation du robot en langage dbassemblage
Le robot est doté de roues
pouvant tourner de manière indépendante et d'une diode bi-colore:
vert-rouge. Pour ce devoir, on veut simuler un robot qui « prend», dans l'ordre,
un certain nombre d'objets disposés sur une grille.
Le robot aura, a priori, en
mémoire, une matrice de dimension nrn, 2 ≤ n ≤ 5
Chaque élément de la
matrice corresponds au nombre d'élément (fictifs) à faire
« ramasser » par le robot dans cette zone. À chaque étape, le robot
devra:
1.
choisir
la zone ayant le plus petit nombre d'éléments;
2.
s'y
déplacer en affichant une diode rouge;
3.
simuler
le ramassage des objets en comptant le nombre d'objets ramassés avec un
clignotement vert de la diode.
4.
Une
fois le décompte terminé, passer à la zone suivante
(recommencer à l'étape 1) jusqu'à ce qu'il n'y ait plus d'objets à
« ramasser » dans toute la grille.
Le robot doit pivoter de 90
degrés à la fois, se déplaçant donc d'une case adjacente à l'autre que par une
transition NORD, SUD, EST ou OUEST; les transitions diagonales étant prohibées.
Le robot n'a pas de « devant » ou « derrière » et doit
donc, le cas échéant, « reculer » au lieu de faire une manœuvre
inutile de 180 ou 270 degrés. Pour plus de précision lors d'une manœuvre de
rotation, afin que le robot conserve son centre de rotation, vous devez faire
pivoter ses deux roues en sens inverse l'une de l'autre.
Le robot ne doit pas
s'arrêter inutilement entre les zones; il peut cependant s'arrêter pour
effectuer une rotation de 90 degrés. Le robot est positionné initialement au
centre de la case (0,0). Comme la distance s'exprime en terme
de temps de déplacement, pour se déplacer au centre d'une autre case, on
calculera une demi seconde de temps de déplacement par case.
Lors du décompte, le
clignotement doit être d'une période d'environ une demi-seconde (attention à la
définition d'une « période »!) avec 50% du temps éteint, 50% du temps
allumé. À la fin du programme, le robot doit s'immobiliser et doit afficher un
clignotement rouge-vert (en alternance, sans période « éteint »)
d'une période d'une demi-seconde également.
Consignes :
· Remettez une seule version du fichier Tp3.asm
· Vérifiez votre compilation avant la remise. Si un programme ne compile pas, il
ne sera même pas regardé.
· Chaque fichier doit commencer par une en-tête reprenant les noms et les codes permanents des deux auteurs.
· Les travaux se font obligatoirement par équipes de deux. En cas d’empêchement majeur,
prendre rendez-vous immédiatement pour expliquer la situation. N’avoir trouvé
personne n’est pas un empêchement majeur. Toutes les personnes qui craignent de
se retrouver dans cette situation doivent contacter le démonstrateur
suffisamment tôt pour qu’il puisse lui-même constituer des équipes avec les
personnes concernées.
· Chaque auteur doit comprendre l’entièreté du travail et en remettre sa propre copie de manière électronique. Ce sera la preuve qu’il
assume la responsabilité du contenu du travail. Une pénalité majeure sera
appliquée si les deux copies remises sont différentes.
· Si dans une équipe, une personne se retrouve forcée à réaliser la
majeure partie du travail (parce que l’autre ne fait rien), elle doit en faire
part avant la correction et la participation des deux
personnes sera vérifiée.
· Tout cas de plagiat détecté sera traité selon
les règles de l’Université.
Procédure de
remise :
DATE DE REMISE : 17 avril à
23 :59, remise
du devoir dans le répertoire TP3