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