Vous êtes sur la page 1sur 48

Université Sidi Mohamed Ben Abdellah

Faculté des Sciences et Techniques


Département Génie Industriel

MST Génie Industriel


Examen d'informatique industrielle 2005 – 2006

Problème I
Écrire un programme en assembleur qui effectue les opérations suivantes :
1. Chargement dans la mémoire des données suivantes
• 32h, 0Ah, 89h, 47h, BCh, FFh, 11h
• 84h, BAh, 90h, B7h, 6Ah, F0h, 00h
2. Comparaison entre deux éléments de la même colonne.
3. Affectation du nombre le plus grand à la pile.
La comparaison doit commencer à partir de la 1ère colonne :
32h, 0Ah, 89h, 47h, BCh, FFh, 11h
84h, BAh, 90h, B7h, 6Ah, F0h, 00h

1ère colonne dernière colonne

4. Retour au DOS

Problème II
L’interfaçage entre un afficheur LCD et le port parallèle d’un PC est réalisé comme le montre la
figure ci-dessous :
Port Parallèle

D0 D0
D1 D1
D2 D2
D3 D3
D4 D4 Afficheur LCD
D5 D5
D6 D6 Vcc
D7 D7
E R/W RS Vcc

strobe

Select
printer

Avec :
E ≡ (Enable) marche sur front descendant permettant la saisie de la donnée à afficher.
RS ≡ (Registre Select) travaille au niveau bas validant l’afficheur.
a. Faire un organigramme qui permet d’afficher la série 00h – FFh. L’affichage de chaque
donnée dure 1s. Justifier les différentes étapes ainsi que les valeurs d’initialisation des
registres.
b. Traduire l’organigramme en langage C.
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution
Problème I :

DOSSEG
.MODEL SMALL
.STACK 0100H
.DATA
T1 DB 32H, 0AH, 89H, 47H, 0BCH, 0FFH, 11H
T2 DB 84H, 0BAH, 90H, 0B7H, 6AH, 0F0H, 00H
.CODE
START:
MOV AX, @DATA
MOV DS, AX
MOV AH, 00H
MOV BX, OFFSET T1
MOV CX, 7
BOUCLE: MOV AL, [BX]
CMP AL, [BX+7]
JA SORTIE
MOV AL, [BX+7]
SORTIE: PUSH AX
INC BX
LOOP BOUCLE
MOV AX, 4C00H
INT 21H
END START
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

MST Génie Industriel


Examen d'informatique industrielle 2005 – 2006

Écrire un programme en assembleur qui effectue les opérations suivantes :

1. Saisie au clavier deux caractères.

2. Réaliser la somme des codes ASCII des deux caractères.

3. Afficher le caractère correspondant.

Les 3 opérations doivent être répétées 5 fois, avant d’effectuer le retour au DOS.
On mettra l’opération 1 en sous programme.
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution
DOSSEG
.MODEL SMALL
.CODE
START:
MOV CX, 05H
BOUCLE: CALL SAISIE
MOV DL, AL
CALL SAISIE
ADD DL, AL
MOV AH, 02H
INT 21H
LOOP BOUCLE
MOV AX, 4C00H
INT 21H
SAISIE PROC NEAR
MOV AH, 01H
INT 21H
RET
SAISIE ENDP
END START
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

MST Génie Industriel


Examen d'informatique industrielle 2007 – 2008

Le code ASCII représente chaque caractère sur 8 bits (1 octet). Le chiffre de poids fort
est toujours égal à 0. Les codes des lettres alphabétiques minuscules se suivent et
varient de 61h à 7Ah. Lorsque le 6ème bit passe à 0 le caractère prend la forme
majuscule.
Exemple : Le code ASCII de a est 61h : 0 1 1 0 0 0 01
Lorsque a passe en majuscule A, le code devient 41h : 0 1 0 0 0 0 0 1

Écrire un programme assembleur qui doit :

1. Mettre dans la pile les codes ASCII de toutes les lettres minuscules (a … z).

2. Transformer les caractères minuscules en caractères majuscules en les affichant


un par un.

3. Retourner au DOS.

On mettra la transformation d’un caractère et son affichage sous forme de sous


programme.
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution:

DOSSEG
.MODEL SMALL
.STACK 0100H
.CODE
START:
MOV AL, 61H
SAUT: PUSH AX
INC AX
CMP AL, 7AH
JBE SAUT
MOV SI, 02H
BOUCLE: CALL TRANSFORMATION
ADD SI, 02H
CMP DL, 41H
JA BOUCLE
MOV AX, 4C00h
INT 21H

TRANSFORMATION PROC NEAR


MOV BP, SP
MOV DL, [BP+SI]
AND DL, 0DFH
MOV AH, 02H
INT 21H
RET
TRANSFORMATION ENDP
END START
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

MST Génie Industriel

Examen d'informatique industrielle 2008 – 2009

1. Préciser pour chacune des instructions suivantes le mode d’adressage :

MOV AL, [000B]


ADD AL, C4h
MOV [BX], 00h
MOV AX, 0FFh

2. Effectuer les opérations suivantes, sur 4 bits, et préciser les valeurs des indicateurs
CF, ZF, SF, OF, et PF :

1010 + 0101 et 0111 + 0001

3. Quels sont les rôles des registres suivants :


IP et SP ?

4. Faire le programme assembleur suivant :

• Écrire dans la mémoire 18h, 11h, 29h, 04h, 20h


• Ranger dans la pile la valeur minimale du tableau (lecture à partir de la
mémoire)
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution:
EXERCICE 4:

DOSSEG
.MODEL SMALL
.STACK 0100H
.DATA
T1 DB 18H, 11H, 29H, 04H, 20H
.CODE
START:
MOV AX, @DATA
MOV DS, AX
MOV AH, 00H
MOV BX, OFFSET T1
MOV CX, 4
MOV AL, [BX]
BOUCLE:
CMP AL, [BX+1]
JB S1
MOV AL, [BX+1]
S1: INC BX
LOOP BOUCLE
PUSH AX
MOV AX, 4C00H
INT 21H
END START
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

MST en Génie Industriel

Examen de rattrapage d'informatique industrielle 2008 – 2009

1. Détailler le principe de tous les modes d’adressage du 80x86.

2. Faire le programme assembleur suivant :

• Créer le tableau suivant dans la mémoire : 01 00 02 00 03 00 04 00


• Ranger dans la pile le nombre de valeurs nulles de ce tableau (lire les
données à partir du tableau)
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution:
DOSSEG
.MODEL SMALL
.STACK 0100H
.DATA
T1 DB 01H, 00H, 02H, 00H, 03H, 00H, 04H, 00H
.CODE
START:
MOV AX, @DATA
MOV DS, AX
MOV AH, 00H
MOV BX, OFFSET T1
MOV AL, 08H
MOV CX, AL
SORTIE: CMP [BX], 00H
JNZ S1
JMP S2
S1: DEC AL
S2: INC BX
LOOP SORTIE
PUSH AX
MOV AX, 4C00H
INT 21H
END START
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Master ST en Génie Industriel

Examen de microprocesseur 2008 – 2009

1. Parmi les instructions suivantes indiquer celles qui sont incorrectes et corriger
les :

PUSH AL
ROL AX, 2
MOV AX, var
MOV AX, BL
MOV AX, [0001]

2. Détailler les étapes de l’exécution des deux instructions suivantes en précisant


le mode d’adressage :

MOV BX, AX
MOV AX, 03h
AND AX, [SI+6]

3. Citer tous les registres du 80x86 en indiquant leurs rôles.

4. Faire le programme assembleur suivant


• Créer le tableau suivant dans la mémoire : 01 00 02 00 03 00 04 00
• Ranger dans AX le nombre de valeur non nulles de ce tableau (lire les
données à partir du tableau).
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution 1:

EXERCICE 4:

DOSSEG
.MODEL SMALL
.STACK 0100H
.DATA
T1 DB 01H, 00H, 02H, 00H, 03H, 00H, 04H, 00H
.CODE
START:
MOV AX, @DATA
MOV DS, AX
MOV AH, 00H
MOV BX, OFFSET T1
MOV AL, 8
MOV CX, AL
SORTIE: CMP [BX], 00H
JE S1
JMP S2
S1: DEC AL
S2: INC BX
LOOP SORTIE
MOV AX, 4C00H
INT 21H
END START
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution 2:

EXERCICE 4:

DOSSEG
.MODEL SMALL
.STACK 0100H
.DATA
T1 DB 01H, 00H, 02H, 00H, 03H, 00H, 04H, 00H
.CODE
START:
MOV AX, @DATA
MOV DS, AX
MOV AH, 00H
MOV BX, OFFSET T1
MOV AL, 8
MOV CX, AL
SORTIE: CMP [BX], 00H
JNE S2
DEC AL
S2: INC BX
LOOP SORTIE
MOV AX, 4C00H
INT 21H
END START
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Master ST en Génie Industriel

Examen de rattrapage de microprocesseur 2008-2009

1. Donner la position des indicateurs CF, ZF, SF, PF et OF à la fin de l’exécution des
instructions suivantes :

MOV AX, AAh


ADD AX, 11h
ADC AX, 45h
Préciser le contenu de AX.

2. Quelle est la procédure suivie par le processeur lors de l’appel d’un sous
programme à passage de paramètre par la pile.

3. Faire le programme assembleur suivant:

• Créer le tableau suivant dans la mémoire :

01h, 00h, 02h, 00h, 03h, 00h, 02h, 00h


01h, 02h, 02h, 01h, 03h, 00h, 04h, 00h

• Faire l'addition de toutes les colonnes et ranger dans la pile les éléments des
colonnes qui donnent comme résultat la valeur 6.
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution:
EXERCICE 3:

DOSSEG
.MODEL SMALL
.STACK 0100H
.DATA
T1 DB 01H, 00H, 02H, 00H, 03H, 00H, 02H, 00H
T2 DB 01H, 02H, 02H, 01H, 03H, 00H, 04H, 00H
.CODE
START:
MOV AX, @DATA
MOV DS, AX
MOV AH, 00H
MOV BX, OFFSET T1
MOV CX, 8
SORTIE: MOV AL, [BX]
ADD AL, [BX+8]
CMP AL, 06H
JNE S1
PUSH [BX]
PUSH [BX+8]
S1: INC BX
LOOP SORTIE
MOV AX, 4C00H
INT 21H
END START
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Master ST en Génie Industriel

Contrôle N°2 Microprocesseur & Microcontrôleur 2009 - 2010

Exercice I :

1. Citer les registres d’index et préciser leur rôle


2. Rappeler le rôle du registre PSW ainsi que celui de chaque indicateur
3. Pourquoi la mémoire est-elle divisée en plusieurs segments de 64 ko chacun ?

Exercice II :

1. Écrire le programme assembleur suivant:

• Charger le data segment par 3 valeurs différentes


• Comparer les et mettre la pus grande valeur dans la pile
• Additionner les 3 valeurs de la mémoire et empiler le résultat
• Empiler les tris valeurs de la mémoire

2. Illustrer, à l'aide d'un schéma la situation de la pile (Valeurs, position SP)


Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution:
Exercice II :

DOSSEG JA S2
.MODEL SMALL MOV AL, VAR3
.STACK 0100 H S2:
.DATA PUSH AX
VAR1 DB 01H MOV AL, VAR1
VAR2 DB 04H ADD AL, VAR2
VAR3 DB 03H ADD AL, VAR3
.CODE PUSH AX
START: MOV BX, OFFSET VAR1
MOV AX, @DATA MOV CX, 3
MOV DS, AX S3:
MOV AH, 00H MOV AL,[BX]
MOV AL, VAR1 PUSH AX
CMP AL, VAR2 INC BX
JA S1 LOOP S3
MOV AL, VAR2 MOV AX, 4C00H
S1: INT 21H
CMP AL, VAR3 END START

SP F6h
0003
SP F8h
0004
SP FAh
0001
SP FCh
0008
SP FEh
0003
SP 100h
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Master ST en Génie Industriel

Examen Microprocesseur & Microcontrôleur 2009 - 2010

Exercice I :
1. Quelle est la différence entre une interruption matérielle et une interruption
logicielle ?
2. Donner les étapes de traitement d’une interruption matérielle
3. Indiquer le type du mode d’adressage des instructions suivantes en expliquant la
méthode de saisie de la donnée

ADC AX, 50h


INC BX
MOV DX, [SI+5]

Exercice II :

Faire un programme en assembleur qui affiche les lettres de l’alphabet en minuscule et


en majuscule comme le montre l’exemple ci-dessous :

aAbBcC…zZ

Mettre sous forme de sous programmes

• L’affichage d’un caractère


• La transformation du caractère
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution:

Exercice II :

DOSSEG DOSSEG
.MODEL SMALL .MODEL SMALL
.CODE .CODE
START: START:
MOV BL, 61H MOV AL, 61H
SAUT: SAUT:
MOV DL, BL MOV DL, AL
CALL AFFICHAGE CALL AFFICHAGE
CALL TRANSFORMATION CALL TRANSFORMATION
CALL AFFICHAGE CALL AFFICHAGE
INC BL INC AL
CMP BL, 7AH CMP AL, 7AH
JBE SAUT JBE SAUT
MOV AX, 4C00H MOV AX, 4C00H
INT 21H INT 21H
AFFICHAGE PROC NEAR AFFICHAGE PROC NEAR
MOV AH, 02H MOV AH, 02H
INT 21H INT 21H
RET RET
AFFICHAGE ENDP AFFICHAGE ENDP

TRANSFORMATION PROC NEAR TRANSFORMATION PROC NEAR


AND DL, 0DFH AND DL, 0DFH
RET RET
TRANSFORMATION ENDP TRANSFORMATION ENDP
END START END START
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Master ST en Génie Industriel

Contrôle continu Microprocesseur & Microcontrôleur 2010-2011

Exercice I :
1. Préciser le rôle de chacun des registres suivants :
CS, DS, SP et IP

2. Quel est l’intérêt du registre flag (PSW) ?

Exercice II :

1. Écrire un programme en assembleur qui exécute les opérations suivantes:

• Mettre dans la pile les valeurs ci-dessous dans cet ordre :

18h, 11h, 29h, 04h, 20h

• Lire les données à partir de la pile en les comparants. Ranger la valeur la plus
grande dans le registre DX

2. Illustrer, à l'aide d'un schéma la situation de la pile après l’exécution de


l’instruction d’empilement. Préciser les différentes valeurs de SP.
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution:
Exercice II :

DOSSEG
.MODEL SMALL
.STACK 0100H
.DATA
T1 DB 18H, 11H, 29H, 04H, 20H
.CODE
START:
MOV AX, @DATA
MOV DS, AX
MOV AH, 00H
MOV BX, OFFSET T1
MOV CX, 5
SORTIE: MOV AL, [BX]
INC BX
PUSH AX
LOOP SORTIE
POP DX
S1: CMP SP, 100H
JZ FIN
POP AX
CMP DL, AL
JA S1
MOV DL, AL
JMP S1
FIN:
MOV AX, 4C00H
INT 21H
END START
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Master ST en Génie Industriel

Examen de Microprocesseur & Microcontrôleur 2010-2011

PARTIE I :

1. Rappeler brièvement tous les registres du 80x86 en précisant le rôle de chacun des
registres.
2. Donner le mode d’adressage de l’instruction suivante et indiquer les étapes de
l’exécution : AND AX, [BX+SI+7]
3. Pourquoi les segments de la mémoire ont une taille de 64 Ko ?
4. Donner l’architecture de l’espace mémoire en précisant les adresses et le mode
d’adressage du microcontrôleur 80C535.
5. Quelle est la différence entre un registre général est un SFR ?
6. Citer 3 exemples de registres généraux et 3 exemples de registres SFR.

PARTIE II :

Écrire un programme en assembleur qui permet de réaliser les opérations suivantes :


1. Saisie de quatre caractères au clavier
2. Comparaison des quatre caractères saisis
3. Affichage du caractère dont le code ASCII et le plus grand

L’opération 1 doit être réalisée par un sous programme.


NB : Le code ASCII du caractère saisi est mis dans AL par le CPU
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

PARTIE III :

On considère une diode LED connectée à la sortie 7 du port 1 du


microcontrôleur 80C535. On souhaite faire clignoter, sans arrêt, la diode suivant deux
périodes différentes. Le choix de la période se fait à l’aide d’une commande externe
(interrupteur) connectée à l’entrée 7 du port 4.

Écrire un programme à charger dans le microcontrôleur, qui offre le deux


possibilités suivantes selon le mode de fonctionnement précédemment décrit :
Si l’interrupteur est à l’état haut on choisit la période 1
Si l’interrupteur est à l’état bas on choisit la période 2

• Période 1 : durée de l’allumage (extinction) est de l’ordre de 65.5 ms


• Période 2 : durée de l’allumage (extinction) est de l’ordre de 32.80 ms

Justifier le choix des valeurs à mettre dans les registres pour avoir la période voulue.
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution:
PARTIE II :

DOSSEG
.MODEL SMALL
.CODE
START:
MOV DL, 00H
MOV CX, 04H
BOUCLE: CALL SAISIE
CMP DL, AL
JA SAUT
MOV DL, AL
SAUT:
LOOP BOUCLE
MOV AH, 02H
INT 21H
MOV AX, 4C00H
INT 21H
SAISIE PROC NEAR
MOV AH, 01H
INT 21H
RET
SAISIE ENDP
END START
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

PARTIE III :

Solution 1:

CPU 80515
INCLUDE stddef51
USING bank0
SEGMENT code
ORG 0000H
START:
MOV R7, #80H
BOUCLE : CPL P1.7
CALL ATTENTE Début
JB P4.7 START
MOV R7, #40H
SJMP BOUCLE R7← 80H

ATTENTE :
SAUT2: MOV R6, #00H
CPL P1.7
SAUT1: DJNZ R6, SAUT1
DJNZ R7, SAUT2
RET
ATTENTE

END

R7← 40H Bas Haut


P4.7
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution 2:

CPU 80515
INCLUDE stddef51
USING bank0
SEGMENT code
ORG 0000H
START:
CPL P1.7
JB P4.7 HAUT
CALL ATTENTE2
SJMP BAS
HAUT : CALL ATTENTE1 Début
BAS : SJMP START

ATTENTE1 :
CPL P1.7
MOV R7, #80H
SAUT2: MOV R6, #00H
SAUT1: DJNZ R6, SAUT1
DJNZ R7, SAUT2 P4.7
RET
ATTENTE2 :
MOV R7, #40H
ATTENTE1 ATTENTE2
SAUT4: MOV R6, #00H
SAUT3: DJNZ R6, SAUT3
DJNZ R7, SAUT4
RET

END
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Master ST en Génie Industriel

Examen de rattrapage de Microprocesseur & Microcontrôleur


2010-2011

EXERCICE I :
Écrire le programme assembleur qui exécute les opérations suivantes :
• Créer le tableau : 01h, 00h, 02h, 00h, 03h, 00h, 04h, 00h.
• Compter le nombre de valeurs nulles.
• Mettre ce nombre dans le registre AX puis dans la pile.

EXERCICE II :
Soit le programme du microcontrôleur 80C535 suivant :

CPU 80515
INCLUDE stddef51
USING bank0
SEGMENT code
ORG 0000H
START :
mov R6, #30h
mov 35h, #2Fh
mov P1, #FFh
mov @R0, #50h
nbr : orl AR6, #01010101B
cpl P1
cjne R6, #04, nbr
sjmp start
END

1. Donner la signification de chaque instruction.


2. Calculer la durée du programme sachant que le cycle machine est de l’ordre de 1µs.
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution :

EXERCICE I :
DOSSEG
.MODEL SMALL
.STACK 0100H
.DATA
T1 DB 01H, 00H, 02H, 00H, 03H, 00H, 04H, 00H
.CODE
START:
MOV AX, @DATA
MOV DS, AX
MOV AH, 00H
MOV BX, OFFSET T1
MOV AL, 08H
MOV CX, AL
SORTIE: CMP [BX], 00H
JNZ S1
JMP S2
S1: DEC AX
S2: INC BX
LOOP SORTIE
PUSH AX
MOV AX, 4C00H
INT 21H
END START
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

EXERCICE II :

CPU 80515 ; Préciser le type de CPU (instruction relative à l’utilisation la


; Liste de commande spécifique au processeur)

INCLUDE stddef51 ; Définition des SFR

USING bank0 ; La banque de registres utilisée

SEGMENT code ;Positionnement du compteur d’adresse sur la zone mémoire

ORG 0000H ; Adresse de début du programme (1ère commande à partir


de 0000H)

; Programme principal

START:
mov R6, #30h ; Mettre 30H dans le reistreR6

mov 35h, #2Fh ; Charger l’adresse 35 de la mémoire par


; La constante 2FH

mov P1, #FFh ; Affecter la valeur FFH au port 1

mov @R0, #50h ; Mettre la constante 50H dans


; L’emplacement mémoire adressé par R0

nbr : orl AR6, #01010101B ; Stocker le résultat de l’opération logique


; Ou dans R6

cpl P1 ; Complémenter le port 1

cjne R6, #04, nbr ; Comparer R6 avec la valeur 04 si il n’est


; pas égaux sauter à nbr

SJMP START ; Saut à l’adresse de START

END
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Master ST en Génie Industriel

Contrôle continu Microprocesseur & Microcontrôleur 2011-2012

1. Détailler les étapes de l’exécution des deux instructions suivantes en précisant


le mode d’adressage :

MOV AX, var


AND AX, [SI+6]

2. Citer tous les registres du 80x86 en indiquant brièvement le rôle de chacun.

3. Écrire le programme assembleur qui réalise les opérations suivantes :


• Créer la série de valeurs hexadécimales suivantes dans la zone
mémoire :

1001h, 0000h, 2002h, 0000h, A003h, 0000h, 1F04h, 0000h.

• Compter le nombre de valeurs non nulles dans cette série (lire les
données à partir de la mémoire).
• Ranger ce nombre dans la pile.
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution:

EXERCICE 3:

DOSSEG
.MODEL SMALL
.STACK 0100H
.DATA
T1 DW 1001H, 0000H, 2002H, 0000H, 0A003H, 0000H, 1F04H, 0000H
.CODE
START:
MOV AX, @DATA
MOV DS, AX
MOV AH, 00H
MOV BX, OFFSET T1
MOV AL, 8
MOV CX, AX
SORTIE: CMP [BX], 0000H
JNE S1
DEC AL
S1: ADD BX, 2
LOOP SORTIE
MOV AX, 4C00H
INT 21H
END START
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Master ST en Génie Industriel

Examen de Microprocesseur & Microcontrôleur 2011-2012

Exercice I :
1. Quelle est la différence entre une interruption matérielle et une interruption
logicielle ?
2. Donner les étapes de traitement d’une interruption matérielle
3. Pour un microcontrôleur 80C535, préciser l’emplacement dans la mémoire des
bases (banks) de registres généraux en donnant leur nombre.
4. Donner quelques exemples de registres SFR.

Exercice II :

Faire un programme en assembleur 80x86 qui affiche les lettres de l’alphabet en


minuscule et en majuscule comme le montre cet exemple :

aAbBcC…zZ

L’affichage du caractère doit être traité sous forme d’un sous programme.

Exercice III :

On considère une diode LED connectée à la sortie 7 du port 1 du


microcontrôleur 80C535. On souhaite faire clignoter, sans arrêt, la diode selon la
période suivante :
• durée de l’allumage est de l’ordre de 33.55 s
• durée de l’extinction est de l’ordre de 32.80 ms
1. donner l’ordinogramme de commandes du programme principal
2. donner l’ordinogramme de commandes des sous programmes réalisant
l’allumage et l’extinction (justifier le choix des valeurs à charger dans les
registres)
3. écrire le programme en assembleur 80515.
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

EXERCICE II:
Solution1 : Solution2 :

DOSSEG DOSSEG
.MODEL SMALL .MODEL SMALL
.CODE .CODE
START: START:
MOV AL, 61H MOV AL, 61H
SAUT: SAUT:
MOV DL, AL MOV DL, AL
CALL AFFICHAGE CALL AFFICHAGE
ADD DL, 20H AND DL, 0DFH
CALL AFFICHAGE CALL AFFICHAGE
INC AL ADD AL, 20H
CMP AL, 7AH INC AL
JBE SAUT CMP AL, 7AH
MOV AX, 4C00H JBE SAUT
INT 21H MOV AX, 4C00H
AFFICHAGE PROC NEAR INT 21H
MOV AH, 02H AFFICHAGE PROC NEAR
INT 21H MOV AH, 02H
RET INT 21H
AFFICHAGE ENDP RET
END START AFFICHAGE ENDP
END START
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Exercice III :

1. Programme principal
2.1. Attente1 : 33,55 s
Début

Début

P1.7← 0B

R7← 80H

ATTENTE1

R6← 00H

CPL P1.7
2.2. Attente2 : 32,80
R5← 00H
Début
ATTENTE2

R5← R5 - 1 Non
R7← 40H R5 = 0

Oui
R6← 00H
R6← R6 - 1 Non
R6 = 0

Non R6← R6 - 1 Oui


R6 = 0
R7← R7 - 1 Non
Oui R7 = 0

Non R7← R7 - 1
Oui
R7 = 0
Retour au
Oui programme

Retour au
programme
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

3.

CPU 80515

INCLUDE stddef51
USING bank0
SEGMENT code
ORG 0000H
START:
MOV P1.7, #0B
CALL ATTENTE1
CPL P1.7
CALL ATTENTE2
SJMP START

ATTENTE1 :
MOV R7, #80H
SAUT3: MOV R6, #00H
SAUT2: MOV R5, #00H
SAUT1: DJNZ R5, SAUT1
DJNZ R6, SAUT2
DJNZ R7, SAUT3
RET
ATTENTE2 :
MOV R7, #40H
SAUT5: MOV R6, #00H
SAUT4: DJNZ R6, SAUT4
DJNZ R7, SAUT5
RET

END
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Examen de rattrapage de Microprocesseur & Microcontrôleur


2011-2012

EXERCICE I :

EXERCICE II :
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Exercice Supplémentaire :
On considère 8 diodes LED connectées sorties du port P1.

On souhaite faire défiler, sans arrêt, les 8 diodes suivant deux périodes
différentes.

Le choix du sens du défilement se fait à l’aide d’un interrupteur qui commande


le bit 6 du port 4

• Si l’interrupteur est à l’état haut on choisit le défilement à droite.


• Si l’interrupteur est à l’état bas on choisit le défilement à gauche.

Le choix de la période d’allumage se fait à l’aide d’une commande externe


(interrupteur) connectée à l’entrée 7 du port 4.

• Si l’interrupteur est à l’état haut on choisit la période 1


• Si l’interrupteur est à l’état bas on choisit la période 2

o Période 1 : durée de l’allumage (extinction) est de l’ordre de 65.5 ms


o Période 2 : durée de l’allumage (extinction) est de l’ordre de 32.80 ms

Écrire un programme à charger dans le microcontrôleur, qui réalise les


fonctions décrit précédemment.
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Solution
CPU 80515
INCLUDE stddef51
USING bank0
SEGMENT code
ORG 0000H
START:
MOV A, #FEH
SAUT3: MOV R7, #80H
SAUT4 : MOV P1, A
CALL ATTENTE
JB P4.6 SAUT1
RL A
SJMP SAUT2
SAUT1 : RR A
SAUT2 : JB P4.7, SAUT3
MOV R7, #40H
SJMP SAUT4 Début

ATTENTE :
S2: MOV R6, #00H A← 11111110B
S1: DJNZ R6, S1
DJNZ R7, S2
RET R7← 80H

END
P1← A

ATTENTE

Gauche Droite
P4.6

RL A RR A

R7← 40H Bas P4.7 Haut


Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Résumé des registres du 80x86


Registres généraux : ce sont des registres à usage multiples, ils seront utilisés pour
stocker des résultats intermédiaires
AX : un accumulateur qui sert essentiellement aux opérations arithmétique et aux
entrées/sorties.
BX : est un registre d’indexage, il est utilisé lors de l’accès à une zone mémoire sous
forme de tableau, il représente l’indice de ce tableau
CX : Sert de compteur pour itérations dans les boucles et les opérations sur les
chaînes
DX : est un accumulateur auxiliaire

Registres de segment : servent souvent pour spécifier, lors d’une écriture où lecture,
le segment de mémoire ou il faut effectuer l’opération.
CS (Code Segment) : c’est le bloc de mémoire qui contient le programme ou le code
en cours d’exécution
DS (Data Segment) : la zone mémoire où se trouvent les données du programme
SS (Stack Segment) : Zone de la pile dans la quelle la CPU stocke des données
relatives aux opérations utilisant la pile ; y compris les appels de procédures et les
interruptions
ES (Extra Segment) : un segment supplémentaire pouvant recevoir des données.

Registre d’index : indiquent généralement l’adresse physique que l’on souhaite


atteindre.
DI (Destination Pointer) : il pointe sur la destination dans un segment, Souvent ES,
où le CPU exécute une écriture.
SI (Source Index) : il pointe sur la source dans un segment, souvent DS, où le CPU
exécute une lecture
SP (Stack Pointer) : il contient l’offset de l’adresse dans une zone de pile. C’est un
pointeur pile
BP (Base Pointer) : c’est un registre pointeur de base utilisé généralement avec le
registre SS.
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Registre de travail :
IP (Instruction Pointer) : Ce registre est associé au registre de segment CS pour
indiquer la prochaine instruction à exécuter. Ce registre ne pourra jamais être modifié
directement par les instructions de saut, par les programmes et par les interruptions.

Registre de flags (PSW) : appelé aussi registre condition, constitue des drapeaux
(flags) qui indiquent certains états particuliers. Ces bits indicateurs peuvent être testés
pour déterminer la suite du déroulement du programme.
CF : il sera mis à 1 s’il’ y a eu retenue lors de la dernière instruction arithmétique.
PF : l’indicateur mis à 1 si le résultat d’une opération contient un nombre pair de bits
1.
AF : c’est la retenue de poids 24 utilisée lors d’opérations arithmétiques décimales.
ZF : il sera mis à 1 si le résultat d’une instruction arithmétique à donné zéro.
SF : il sera mis à 1 si le résultat d’une instruction à donné un nombre négatif.
OF : il sera mis à 1 si le résultat d’une addition de 2 nombres positifs donne un
nombre négatif est inversement.
DF : est un indicateur utilisé lors de la manipulation de chaînes de caractère.
IF : autorise ou non la prise en compte des interruptions externes masquables.
TF : assure la visualisation du contenu des registres et le fonctionnement pas à pas.
Le bit est positionné à 1.

X X X X OF DF IF TF SF ZF X AF X PF X CF
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

JEU D'INSTRUCTIONS DU 8086/8088

INSTRUCTIONS ARITHMETIQUES
ADD Addition
ADC Addition avec retenue
INC Incrémentation de 1
AAA Ajustement ASCII pour l'addition
DAA Ajustement BCD pour l'addition

SUB Soustraction
SBB Soustraction avec retenue
DEC Décrémentation de 1
NEG Complément à 2
CMP Comparaison
AAS Ajustement ASCII pour la soustraction
DAS Ajustement BCD pour la soustraction

MUL Multiplication non signée


IMUL Multiplication signée
AAM Ajustement ASCII pour la multiplication

DIV Division non signée


IDIV Division signée
AAD Ajustement ASCII pour la division

CBW Conversion d'un octet en mot


CWD Conversion d'un mot en double mot

INSTRUCTIONS DE TRAITEMENT DES BITS


Fonctions logiques :

CMP Comparaison
NOT Inversion logique
AND ET logique
OR OU inclusif
XOR OU exclusif
TEST ET logique sans résultat (positionne les indicateurs)

Décalages :

SHL Décalage logique à gauche


SAL Décalage arithmétique à gauche
SHR Décalage logique à droite
SAR Décalage arithmétique à droite

Rotations :

ROL Rotation à gauche


ROR Rotation à droite
RCL Rotation à gauche, via le bit de carry
RCR Rotation à droite, via le bit de carry
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

INSTRUCTIONS DE BRANCHEMENT
Branchements conditionnels :

Indicateurs

JE/JZ Si égal / si zéro


JNE/JNZ Si pas égal / si pas zéro
JC Si carry (retenue)
JNC Si pas carry (retenue)
JO Si overflow (débordement)
JNO Si pas overflow (débordement)
JS Si signe (négatif)
JNS Si pas de signe (positif)
JP/JPE Si parité / si parité paire
JNP/JPO Si pas de parité / si parité impaire

Arithmétique non signée

JA/ JNBE Si supérieur / si pas inférieur ni égal


JAE/JNB Si supérieur ou égal / si pas inférieur
JB/JNAE Si inférieur / si pas supérieur ni égal
JBE/JNA Si inférieur ou égal / si pas supérieur

Arithmétique signée

JG/JNLE Si plus grand / si pas plus petit ni égal


JGE/JNL Si plus grand ou égal / si pas plus petit
JL/JNGE Si plus petit / si pas plus grand ni égal
JLE/JNG Si plus petit ou égal / si pas plus grand

Branchements inconditionnels :

JMP Saut inconditionnel


CALL Appel de sous-programme
RET Retour vers le programme principal

Boucles :

LOOP Boucle
LOOPE/LOOPZ Boucle si égal / si zéro
LOOPNE/LOOPNZ Boucle si pas égal / si pas zéro
JCXZ Branchement si CX = 0

Interruptions :

INT Interruption
INTO Interruption si overflow
IRET Retour d'interruption
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

INSTRUCTIONS DE MOUVEMENTS DE DONNEES


Général :

MOV Transfert
PUSH Chargement de la pile
POP Déchargement de la pile
XCHG Echange
XLAT Translation d'octet

Adresses :

LEA Chargement de l'adresse effective


LDS Chargement de pointeur au moyen de DS
LES Chargement de pointeur au moyen de ES

Indicateurs :

LAHF Transfert des indicateurs dans AH


SAHF Rangement de AH dans les indicateurs
PUSHF Chargement des indicateurs dans la pile
POPF Déchargement des indicateurs de la pile

Entrées – sorties :

IN Entrée de mot ou d'octet


OUT Sortie de mot ou d'octet

INSTRUCTIONS DE TRAITEMENT DES CHAINES


MOVSB/MOVSW Déplacement de chaîne
REP Répétition
STOSB /STOSW Rangement de chaîne
LODSB/LODSW Chargement de chaîne
CMPSB/CMPSW Comparaison de chaîne
REPE/REPZ Répétition tant qu'égal à zéro
REPNE/REPNZ Répétition tant que différent de zéro
SCASB/SCASW Balayage d'une chaîne
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

TABLE CODE ASCII


Décimal Hexa Binaire Caractère Décimal Hexa Binaire Caractère
000 00 0000000 NUL 032 20 0100000 ESPACE
001 01 0000001 SOH 033 21 0100001 !
002 02 0000010 STX 034 22 0100010 "
003 03 0000011 ETX 035 23 0100011 #
004 04 0000100 EOT 036 24 0100100 $
005 05 0000101 ENQ 037 25 0100101 %
006 06 0000110 ACK 038 26 0100110 &
007 07 0000111 BEL 039 27 0100111 '
008 08 0001000 BS 040 28 0101000 (
009 09 0001001 HT 041 29 0101001 )
010 0A 0001010 LF 042 2A 0101010 *
011 0B 0001011 VT 043 2B 0101011 +
012 0C 0001100 FF 044 2C 0101100 ,
013 0D 0001101 CR 045 2D 0101101 -
014 0E 0001110 SO 046 2E 0101110 .
015 0F 0001111 SI 047 2F 0101111 /
016 10 0010000 DLE 048 30 0110000 0
017 11 0010001 DC1 049 31 0110001 1
018 12 0010010 DC2 050 32 0110010 2
019 13 0010011 DC3 051 33 0110011 3
020 14 0010100 DC4 052 34 0110100 4
021 15 0010101 NAK 053 35 0110101 5
022 16 0010110 SYN 054 36 0110110 6
023 17 0010111 ETB 055 37 0110111 7
024 18 0011000 CAN 056 38 0111000 8
025 19 0011001 EM 057 39 0111001 9
026 1A 0011010 SUB 058 3A 0111010 :
027 1B 0011011 ESC 059 3B 0111011 ;
028 1C 0011100 FS 060 3C 0111100 <
029 1D 0011101 GS 061 3D 0111101 =
030 1E 0011110 RS 062 3E 0111110 >
031 1F 0011111 US 063 3F 0111111 ?
Décimal Hexa Binaire Caractère Décimal Hexa Binaire Caractère
064 40 1000000 @ 096 60 1100000 `
065 41 1000001 A 097 61 1100001 a
066 42 1000010 B 098 62 1100010 b
067 43 1000011 C 099 63 1100011 c
068 44 1000100 D 100 64 1100100 d
069 45 1000101 E 101 65 1100101 e
070 46 1000110 F 102 66 1100110 f
071 47 1000111 G 103 67 1100111 g
072 48 1001000 H 104 68 1101000 h
073 49 1001001 I 105 69 1101001 i
074 4A 1001010 J 106 6A 1101010 j
075 4B 1001011 K 107 6B 1101011 k
076 4C 1001100 L 108 6C 1101100 l
077 4D 1001101 M 109 6D 1101101 m
078 4E 1001110 N 110 6E 1101110 n
079 4F 1001111 O 111 6F 1101111 o
080 50 1010000 P 112 70 1110000 p
081 51 1010001 Q 113 71 1110001 q
082 52 1010010 R 114 72 1110010 r
083 53 1010011 S 115 73 1110011 s
084 54 1010100 T 116 74 1110100 t
085 55 1010101 U 117 75 1110101 u
086 56 1010110 V 118 76 1110110 v
087 57 1010111 W 119 77 1110111 w
088 58 1011000 X 120 78 1111000 x
089 59 1011001 Y 121 79 1111001 y
090 5A 1011010 Z 122 7A 1111010 z
091 5B 1011011 [ 123 7B 1111011 {
092 5C 1011100 \ 124 7C 1111100 |
093 5D 1011101 ] 125 7D 1111101 }
094 5E 1011110 ^ 126 7E 1111110 ~
095 5F 1011111 _ 127 7F 1111111 DEL
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

JEU D’INSTRUCTIONS DU 8051


Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel
Université Sidi Mohamed Ben Abdellah
Faculté des Sciences et Techniques
Département Génie Industriel

Vous aimerez peut-être aussi