IFT 1227 (hiver 2008)
Architecture des ordinateurs I
Devoir 3
Programmation du robot en langage assemblage
L’objectif de ce devoir est d’enrichir un robot d’un programme qui lui permettrait d’interpréter et d’obéir à un certain nombre de commandes. Le robot est doté de roues pouvant tourner de manière indépendante et d'une diode bi-colore: vert-rouge.
Le robot possède une mémoire de commandes de 256 octets et une mémoire de données de 256 octets aussi. L’octet 0 de la mémoire des données est appelé accu dans le reste de ce texte. Une période désigne un temps de 500 ms.
Au repos, le robot ne bouge pas et aucune diode n’est allumée. Après l’exécution d’une commande, le robot se remet à l’état de repos et exécute la commande suivante. Les commandes sont exécutées séquentiellement. Chaque commande est sur 1 ou 2 octets. Le différentes commandes sont :
|
Format |
|
Avance |
01 |
si l’accu est négatif il recule sinon il avance. La valeur absolue de l’accu désigne le nombre de périodes de mouvement. |
Clignote |
02 |
si l’accu est négatif le clignotement est rouge sinon il est vert. La valeur absolue de l’accu désigne le nombre de périodes de clignotements. |
Tourne |
03 |
L’accu contient le membre de quarts de tour à effectuer. Il faudra calibrer le temps de rotation de votre robot. Si l’accu est négatif le sens est celui des aiguilles d’une montre sinon c’est le sens contraire. |
Load |
04 xx |
Charger l’accu avec le contenu de la mémoire d’adresse xx. |
Store |
05 xx |
Charger la mémoire d’adresse xx avec le contenu de l’accu. |
Add |
06 xx |
Additionner à l’accu le contenu de la mémoire d’adresse xx. |
Sub |
07 xx |
Soustraire à l’accu le contenu de la mémoire d’adresse xx. |
Saut |
08 yy |
Aller à la commande d’adresse absolue yy |
JZ |
09 yy |
Si l’accu est nul alors aller à la commande d’adresse absolue yy sinon continuer en séquence. |
JP |
0A yy |
Si l’accu est positif alors aller à la commande d’adresse absolue yy sinon continuer en séquence. |
SOS |
0B |
Le robot s’arrête et clignote en rouge 3 clignotement courts, suivis de trois longs, suivis de trois courts et puis tout s’éteint. Un clignotement court correspond à un clignotement qui dure en tout une période, alors qu’un clignotement long, la lumière rouge reste allumée rependait 2.5 périodes et s’éteint pendant une demi période. Le SOS indique la fin des commandes. |
Le passage à la commande suivante se fait après la terminaison de commande sous exécution.
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 but de ce TP est donc d'écrire un interpréteur de commandes sur le micro-contrôleur du robot. Vous devrez donc pouvoir exécuter un « fichier » de commandes que l'on donnera en entrée à votre robot.
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 : 15 avril à 23 :59, remise du devoir dans le répertoire TP3