Vous êtes sur la page 1sur 2

République Algérienne Démocratique et Populaire

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique


USTHB Architecture des Ordinateurs 2
Faculté d’Informatique Licence 2ème année Informatique
Département IA & SD

TD3 : Les Entrées/Sorties (IN et OUT)

Exercice 1 :

Donner toutes les écritures possibles en Assembleur et en code machine pour l’opération d’écriture du port 55H
ayant une taille d’un octet.

Exercice 2 :
Avec l’introduction d’une pièce de monnaie (5, 10 ou 20 DA), le bit B2 du port 0006H est alors mis à 1. Le
programme lit dans le port 0005H le code de la pièce (B1B0 du port 0005H = 00 si 5 DA, 01 si 10 DA, 10 si 20
DA). Après l’attente de mise à 1 du bit d’état B3, le programme envoie les pièces de 1 DA sur le port 0007H.
Donner le code assembleur de la séquence qui réalise une telle gestion en utilisant la technique d’E/S programmée.

0005H Data_In
CPU Mémoire
0006H Status
0007H Data_Out

Exercice 3 :
Soit un système à deux relais pour commander le fonctionnement de deux pompes d’eau A et
B. Il communique ses données via le port d’entrée 1111H d’un circuit d’interface, appelé ctrlPompe. Dès la
réception des données, ctrlPompe envoie une demande d’interruption au µP qui lit le port d’entrée dans AL et
affiche à l’écran, via le port de sortie 2222H du circuit d’interface ctrlEcran, l’un des messages :
1. « Pompes en repos » si les deux relais sont ouverts ;
2. « Pompe A active » si le relais A est fermé et le relais B est ouvert ;
3. « Pompe B active » si le relais A est ouvert et le relais B est fermé ;
4. « Pompes A et B actives » si les deux relais sont fermés.

Les états des relais A et B sont indiqués respectivement par les bits B2 et B5 du port ctrlPompe. Si le bit est
à 0, le relais correspondant est alors ouvert sinon il est fermé.
Le circuit ctrlPompe ne peut envoyer des demandes d’interruptions que lors que le bit B3 de
son port de contrôle 1112H est à 1.
L’état prêt de l’écran est signalé au µP par le bit B5 du port d’état 2223H, B5 = 1 écran prêt, B5 = 0 écran
occupé.
1. Ecrire une routine d’interruption qui lit le port d’entrée du ctrlPompe et puis utilise la technique d’E/S
programmée pour afficher le message correspondant à l’écran.

Exercice 4 :
Un système embarqué, destiné à maintenir l’avion à une altitude fixée par le pilote, est composé de :
1. Un Microprocesseur ;
2. Une interface InterfCapteur comportant deux ports :
+ Port 350H est un port de données en lecture. Il contient l’altitude courante de l’avion. Celle-ci
est calculée par le capteur ;
+ Port 352H est un port d’état en lecture. Dans le cas du dysfonctionnement du Capteur, ce port
indique le code de la cause (code d’erreur).
3. Un Capteur pour calculer l’altitude de l’avion. A chaque variation, le Capteur
calcule la nouvelle altitude et la dépose dans le port 350H du InterfCapteur ;
4. Une interface InterfReacteur comportant le port 355H de sortie. Ce dernier sert à contrôler la
vitesse des réacteurs en nombre de tours par seconde ;
5. Une interface DMA pour l’affichage des messages à l’écran afin d’informer le pilote. Elle
comporte 2 ports : Les ports 70H et 721H indiquent respectivement l’adresse et la longueur du
message à afficher.
Ce système fonctionne comme suit :
1) Le Microprocesseur lit continuellement le port de données du InterfCapteur et compare son
contenu à la valeur Valt fixée par le pilote. Si Valt < valeur lue (respectivement Valt > valeur lue),
le Microprocesseur envoie A (respectivement
R) pour Accélérer (respectivement pour Ralentir) au port de sortie du InterfReacteur. Par contre, si
les deux valeurs sont identiques, le Microprocesseur envoi M pour maintenir les réacteurs à un
rythme constant.
2) Toute modification du contenu du port 352 (du InterfCapteur) provoquera l’interruption n° 190. La
routine de celle-ci lit le port 352H et transmettra le code d’erreur à une procédure, prédéfinie et
appelée DecoderErreur, qui décode l’erreur et lui revoie les adresses mémoires début et fin de
message. Celui-ci (message) est affiché par la routine, en utilisant l’interface DMA.
Questions :
1) Ecrire la séquence d’assembleur permettant de maintenir l’avion à l’altitude
Valt=10 000 m.
2) Ecrire la routine d’interruption permettant le décodage d’erreur et l’affichage du message
correspondant à l’écran.
3) Si la routine d’interruption se trouve à l’adresse physique mémoire 1345FH, montrer
en assembleur comment installer son vecteur dans la table de vecteurs.

Vous aimerez peut-être aussi