Upload
sarah-berrada
View
4
Download
0
Embed Size (px)
Citation preview
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 :
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 :
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.
32h, 0Ah, 89h, 47h, BCh, FFh, 11h 84h, BAh, 90h, B7h, 6Ah, F0h, 00h
1ère colonne dernière colonne
RS R/W E
Port Parallèle
Afficheur LCD
Select printer
strobe
D0 D1 D2 D3 D4 D5 D6 D7
D0 D1 D2 D3 D4 D5 D6 D7
Vcc
Vcc
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
.MODEL SMALL
.STACK 0100 H
.DATA
VAR1 DB 01H
VAR2 DB 04H
VAR3 DB 03H
.CODE
START:
MOV AX, @DATA
MOV DS, AX
MOV AH, 00H
MOV AL, VAR1
CMP AL, VAR2
JA S1
MOV AL, VAR2
S1:
CMP AL, VAR3
JA S2
MOV AL, VAR3
S2:
PUSH AX
MOV AL, VAR1
ADD AL, VAR2
ADD AL, VAR3
PUSH AX
MOV BX, OFFSET VAR1
MOV CX, 3
S3:
MOV AL,[BX]
PUSH AX
INC BX
LOOP S3
MOV AX, 4C00H
INT 21H
END START
0003
0008
0001
0004
0003
SP 100h
SP FEh
SP FCh
SP FAh
SP F8h
SP F6h
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 :
a A b B c C … z Z
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
.MODEL SMALL
.CODE
START:
MOV BL, 61H
SAUT:
MOV DL, BL
CALL AFFICHAGE
CALL TRANSFORMATION
CALL AFFICHAGE
INC BL
CMP BL, 7AH
JBE SAUT
MOV AX, 4C00H
INT 21H
AFFICHAGE PROC NEAR
MOV AH, 02H
INT 21H
RET
AFFICHAGE ENDP
TRANSFORMATION PROC NEAR
AND DL, 0DFH
RET
TRANSFORMATION ENDP
END START
DOSSEG
.MODEL SMALL
.CODE
START:
MOV AL, 61H
SAUT:
MOV DL, AL
CALL AFFICHAGE
CALL TRANSFORMATION
CALL AFFICHAGE
INC AL
CMP AL, 7AH
JBE SAUT
MOV AX, 4C00H
INT 21H
AFFICHAGE PROC NEAR
MOV AH, 02H
INT 21H
RET
AFFICHAGE ENDP
TRANSFORMATION PROC NEAR
AND DL, 0DFH
RET
TRANSFORMATION ENDP
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
JB P4.7 START MOV R7, #40H
SJMP BOUCLE ATTENTE : SAUT2: MOV R6, #00H SAUT1: DJNZ R6, SAUT1
DJNZ R7, SAUT2 RET
END
Bas Haut P4.7
CPL P1.7
R7← 80H
ATTENTE
Début
R7← 40H
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 BAS : SJMP START
ATTENTE1 :
MOV R7, #80H SAUT2: MOV R6, #00H SAUT1: DJNZ R6, SAUT1
DJNZ R7, SAUT2 RET
ATTENTE2 : MOV R7, #40H
SAUT4: MOV R6, #00H SAUT3: DJNZ R6, SAUT3
DJNZ R7, SAUT4 RET
END
P4.7
CPL P1.7
ATTENTE1
Début
ATTENTE2
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 :
a A b B c C … z Z
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 :
DOSSEG
.MODEL SMALL
.CODE
START:
MOV AL, 61H
SAUT:
MOV DL, AL
CALL AFFICHAGE
ADD DL, 20H
CALL AFFICHAGE
INC AL
CMP AL, 7AH
JBE SAUT
MOV AX, 4C00H
INT 21H
AFFICHAGE PROC NEAR
MOV AH, 02H
INT 21H
RET
AFFICHAGE ENDP
END START
Solution2 :
DOSSEG
.MODEL SMALL
.CODE
START:
MOV AL, 61H
SAUT:
MOV DL, AL
CALL AFFICHAGE
AND DL, 0DFH
CALL AFFICHAGE
ADD AL, 20H
INC AL
CMP AL, 7AH
JBE SAUT
MOV AX, 4C00H
INT 21H
AFFICHAGE PROC NEAR
MOV AH, 02H
INT 21H
RET
AFFICHAGE ENDP
END START
Université Sidi Mohamed Ben Abdellah Faculté des Sciences et Techniques
Département Génie Industriel
Exercice III :
1. Programme principal
ATTENTE2
CPL P1.7
P1.7← 0B
Début
ATTENTE1
2.2. Attente2 : 32,80
Non
Oui
Non R6← R6 - 1 R6 = 0
R6← 00H
R7← 40H
Début
R7← R7 - 1 R7 = 0
Oui
Retour au programme
2.1. Attente1 : 33,55 s
Non
Oui
Non R6← R6 - 1 R6 = 0
R6← 00H
R7← 80H
Début
R7← R7 - 1 R7 = 0
Oui
Retour au programme
R5← 00H
Oui
Non R5← R5 - 1 R5 = 0
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 ATTENTE : S2: MOV R6, #00H S1: DJNZ R6, S1
DJNZ R7, S2 RET
END
Gauche Droite
Bas Haut P4.7
P1← A
R7← 80H
ATTENTE
Début
R7← 40H
A← 11111110B
P4.6
RL A
RR A
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 ADC INC AAA DAA
SUB SBB DEC NEG CMP AAS DAS
MUL IMUL AAM
DIV IDIV AAD
CBW CWD
Addition Addition avec retenue Incrémentation de 1 Ajustement ASCII pour l'addition Ajustement BCD pour l'addition Soustraction Soustraction avec retenue Décrémentation de 1 Complément à 2 Comparaison Ajustement ASCII pour la soustraction Ajustement BCD pour la soustraction Multiplication non signée Multiplication signée Ajustement ASCII pour la multiplication Division non signée Division signée Ajustement ASCII pour la division Conversion d'un octet en mot Conversion d'un mot en double mot
INSTRUCTIONS DE TRAITEMENT DES BITS
Fonctions logiques :
CMP NOT AND OR
XOR TEST
Décalages :
SHL SAL SHR SAR
Rotations :
ROL ROR RCL RCR
Comparaison Inversion logique ET logique OU inclusif OU exclusif ET logique sans résultat (positionne les indicateurs) Décalage logique à gauche Décalage arithmétique à gauche Décalage logique à droite Décalage arithmétique à droite Rotation à gauche Rotation à droite Rotation à gauche, via le bit de carry 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 JNE/JNZ
JC JNC JO
JNO JS
JNS JP/JPE
JNP/JPO Arithmétique non signée
JA/ JNBE JAE/JNB JB/JNAE JBE/JNA
Arithmétique signée
JG/JNLE JGE/JNL JL/JNGE JLE/JNG
Branchements inconditionnels :
JMP CALL RET
Boucles :
LOOP LOOPE/LOOPZ
LOOPNE/LOOPNZ JCXZ
Interruptions :
INT INTO IRET
Si égal / si zéro Si pas égal / si pas zéro Si carry (retenue) Si pas carry (retenue) Si overflow (débordement) Si pas overflow (débordement) Si signe (négatif) Si pas de signe (positif) Si parité / si parité paire Si pas de parité / si parité impaire Si supérieur / si pas inférieur ni égal Si supérieur ou égal / si pas inférieur Si inférieur / si pas supérieur ni égal Si inférieur ou égal / si pas supérieur Si plus grand / si pas plus petit ni égal Si plus grand ou égal / si pas plus petit Si plus petit / si pas plus grand ni égal Si plus petit ou égal / si pas plus grand Saut inconditionnel Appel de sous-programme Retour vers le programme principal Boucle Boucle si égal / si zéro Boucle si pas égal / si pas zéro Branchement si CX = 0 Interruption Interruption si overflow 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 PUSH POP
XCHG XLAT
Adresses :
LEA LDS LES
Indicateurs :
LAHF SAHF
PUSHF POPF
Entrées – sorties :
IN OUT
Transfert Chargement de la pile Déchargement de la pile Echange Translation d'octet Chargement de l'adresse effective Chargement de pointeur au moyen de DS Chargement de pointeur au moyen de ES Transfert des indicateurs dans AH Rangement de AH dans les indicateurs Chargement des indicateurs dans la pile Déchargement des indicateurs de la pile Entrée de mot ou d'octet Sortie de mot ou d'octet
INSTRUCTIONS DE TRAITEMENT DES CHAINES
MOVSB/MOVSW REP
STOSB /STOSW LODSB/LODSW CMPSB/CMPSW
REPE/REPZ REPNE/REPNZ SCASB/SCASW
Déplacement de chaîne Répétition Rangement de chaîne Chargement de chaîne Comparaison de chaîne Répétition tant qu'égal à zéro Répétition tant que différent de zéro 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