Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
1 ou 2 ?
1. 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 les
entrées/sorties parallèles.
Principe du jeu :
Au début du jeu, les joueurs disposent d'un tas de graines. Chacun des joueurs
prend, à tour de rôle, une ou deux graines dans ce tas . Le joueur qui retire la dernière
graine du tas perd la partie.
Les graines seront représentées ici par les huit diodes du port de sortie. Chaque
fois qu'un joueur récupère une graine, la diode allumée à l'extrémité la plus à gauche
est éteinte (une ou deux diodes s'éteignent à chaque tour de jeu). Les joueurs
indiquent s'ils souhaitent prendre une ou deux graines au moyen des interrupteurs du
port d'entrée (...001 indique que le joueur souhaite prendre une graine et ...010
indique qu'il souhaite en prendre deux). Chaque tour de jeu est validé par l'appui du
bouton IB1 (géré par test d'état). On suppose que le joueur n'entrera pas d'autres
valeurs 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 joueur
gagnant (...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 soit
géré par test d'état et que IA1 soit géré par interruption. Il est demandé à cette
question d'initialiser tous les registres et adresses mémoires nécessaires à la gestion
de 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 par
le joueur courant lorsque le bouton IB1 est appuyé et la range dans D0 puis appelle
le sous programme de la question 2 jusqu'à ce que la partie soit finie. Tester ce
programme.
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 sortie
en fin de partie. Pour cette question, il est nécessaire d'ajouter du code dans le
programme principal pour mémoriser le numéro du joueur courant (on pourra
utiliser D1 par exemple) ainsi qu'une boucle infinie en fin de partie permettant
d'attendre qu'une interruption survienne.