Upload
benjamin-vidal
View
26
Download
0
Embed Size (px)
Citation preview
Examen de TP d'assembleur 68K
Durée : 45 minutes
Licence d'informatique 3ème année 2003-2004
Module 6
Un ou deux ?
Note : Ne sont autorisés que les polycopiés sur le processeur 68K et sur lesentrées/sorties parallèles.
Principe du jeu :
Au début du jeu, les joueurs disposent d'un tas de graines. Chacun des joueursprend, à tour de rôle, une ou deux graines dans ce tas . Le joueur qui retire la dernièregraine du tas perd la partie.
Les graines seront représentées ici par les huit diodes du port de sortie. Chaquefois qu'un joueur récupère une graine, la diode allumée à l'extrémité la plus à gaucheest éteinte (une ou deux diodes s'éteignent à chaque tour de jeu). Les joueursindiquent s'ils souhaitent prendre une ou deux graines au moyen des interrupteurs duport d'entrée (...001 indique que le joueur souhaite prendre une graine et ...010indique qu'il souhaite en prendre deux). Chaque tour de jeu est validé par l'appui dubouton IB1 (géré par test d'état). On suppose que le joueur n'entrera pas d'autresvaleurs que 1 ou 2. Enfin, lorsque la partie se termine, l'appui sur le bouton IA1 (gérépar interruption) permet de visualiser en binaire sur les diodes le numéro du joueurgagnant (...001 pour le joueur 1 ou ...010 pour le joueur 2).
Questions :
1. Initialiser correctement le port d'entrée/sortie parallèle pour que le bouton IB1 soitgéré par test d'état et que IA1 soit géré par interruption. Il est demandé à cettequestion d'initialiser tous les registres et adresses mémoires nécessaires à la gestionde IA1 par interruption (sr, vra, vbr, table de vecteurs de branchements).L'initialisation devra également allumer toutes les diodes du port de sortie.
2. Ecrire un sous programme qui prend en paramètre d'entrée le nombre de diodes àéteindre dans D0 et qui met à jour le port de sortie en conséquence.
3. Ecrire, à la suite des initialisations, un programme qui récupère la valeur saisie parle joueur courant lorsque le bouton IB1 est appuyé et la range dans D0 puis appellele sous programme de la question 2 jusqu'à ce que la partie soit finie. Tester ceprogramme.
4. Ecrire le programme de traitement d'interruption (terminé par l'instruction “rte”)permettant d'afficher le numéro du joueur gagnant sur les diodes du port de sortieen fin de partie. Pour cette question, il est nécessaire d'ajouter du code dans leprogramme principal pour mémoriser le numéro du joueur courant (on pourrautiliser D1 par exemple) ainsi qu'une boucle infinie en fin de partie permettantd'attendre qu'une interruption survienne.