Académique Documents
Professionnel Documents
Culture Documents
❖ Travail Pratique :
OUT Adresse, AL Écrire le contenu du registre AL vers l'interface spécifiée par l’Adresse.
IN AL, Adresse Lire dans le registre AL le contenu de l'interface spécifiée par
l’Adresse.
MOV Registre, Valeur Copier la Valeur dans le Registre (adressage immédiat)
MOV Registre1, Registre2 Copier le Registre2 dans le Registre 1
ROL Registre
NOP No Operation
CMP Registre, Valeur Effectue (Registre – Valeur), le résultat est perdu et actualise les flags :
AF CF OF PF SF ZF
XOR registre1, registre2 XOR : registre1= registre1 registre2
DEC Registre Registre = Registre -1
JNZ étiquette IP= étiquette si ZF = 0
JNE étiquette
JLE étiquette IP = étiquette si CF=1 ou ZF =1
JBE étiquette
JMP étiquette IP = étiquette.
{id_Adr} DB valeur Une directive qui définit un octet dans la mémoire est l’initialise avec
valeur. L’adresse de cette case est accessible via id_Adr.
Travail demandé :
1. Écrire un programme qui permet d'allumer La LED verte et affiche 4 sur l'afficher 7 segments.
2. Écrire un programme qui permet d'allumer Les LEDs rouges et affiche 9 sur l'afficher 7 segments.
3. Écrire un programme qui affiche un compteur modulo 10 sur l’afficheur 7 segment, la transition
est effectuée chaque seconde. Une des quatre LEDs doit s’allumer après chaque séquence complète
du compteur.
TP3 : Architecture des ordinateurs 1ere année ingénieurs
II-Feux de Circulation
Figure 2
On désire écrire un programme (en assembleur 8086/8088) pour contrôler les feux de
circulation placés à l'intersection de deux voix. On dispose sur le 'port extérieur' de 16 lampes
'Leds' branchées sur le port de sortie commandés par les ports A et B du 8255.
A B
D
C
TP3 : Architecture des ordinateurs 1ere année ingénieurs
Le tableau suivant donne les commandes binaires pour les différentes combinaisons d'allumage
des feux :
Rouge Jaune Vert Rouge Jaune Vert Rouge Jaune Vert Rouge Jaune Vert
1 0 0 1 0 0 0 0 1 0 0 1
1 0 0 1 0 0 0 1 0 0 1 0
0 0 1 0 0 1 1 0 0 1 0 0
0 1 0 0 1 0 1 0 0 1 0 0
Précautions :
1 : lampe allumée
0 : lampe éteinte
* changer au Jaune
Il est alors intéressant d'écrire un seul sous-programme qu'on appellera 'SEQ'' pour piloter les
deux feux A et B. Seulement, 'SEQ' doit faire appel à deux sous programmes :
* DELAY pour le temps d'attente qui dépend de la couleur du feux (vert ou Jaune).
TP3 : Architecture des ordinateurs 1ere année ingénieurs
Programme principal
‘FEU’
Séquence d’allumage
‘SEQ’
‘CHANGE’ ‘DELAY’
a) Procédure 'DELAY'
Une méthode pour obtenir un temps de retard (attente) est donnée par l'organigramme
suivant :
Delay
Nop
Nop
Nop
Décrémenter CX
Non
CX=0 ?
Oui
Décrémenter DI
Non
DI=0 ?
Oui
Return
En utilisant une paire de registre (DI et CX par exemple) comme compteur, écrire le
programme correspondant.
b) Procédure : 'CHANGE'
CHANGE
Non
SI=1 ?
Oui
Faire la rotation de la donné
(dans BX) 8 fois à gauche
Return
Précaution : Une méthode pour obtenir un temps de retard (attente) est donnée par
l'organigramme suivant :
FEU
Initialisation du SI par 0
CALL SEQ
Initialisation du SI par 1
CALL SEQ