Professional Documents
Culture Documents
Problme I
crire un programme en assembleur qui effectue les oprations suivantes :
1. Chargement dans la mmoire des donnes suivantes
dernire colonne
4. Retour au DOS
Problme II
Linterfaage entre un afficheur LCD et le port parallle dun PC est ralis comme le montre la
figure ci-dessous :
Port Parallle
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
D7
Afficheur LCD
Vcc
E
R/W
RS
Vcc
strobe
Select
printer
Avec :
E (Enable) marche sur front descendant permettant la saisie de la donne afficher.
RS (Registre Select) travaille au niveau bas validant lafficheur.
a. Faire un organigramme qui permet dafficher la srie 00h FFh. Laffichage de chaque
donne dure 1s. Justifier les diffrentes tapes ainsi que les valeurs dinitialisation des
registres.
b. Traduire lorganigramme en langage C.
Problme I :
DOSSEG
.MODEL SMALL
.STACK
0100H
.DATA
T1 DB 32H, 0AH, 89H, 47H, BCH, FFH, 11H
T2 DB 84H, BAH, 90H, B7H, 6AH, F0H, 00H
.CODE
START:
MOV AX,
@DATA
MOV DS,
AX
MOV AH,
00H
MOV BX,
OFFSET T1
MOV CX,
4C00H
05H
Le code ASCII reprsente chaque caractre sur 8 bits (1 octet). Le chiffre de poids fort
est toujours gal 0. Les codes des lettres alphabtiques minuscules se suivent et
varient de 61h 7Ah. Lorsque le 6me bit passe 0 le caractre 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 caractres minuscules en caractres majuscules en les affichant
un par un.
3. Retourner au DOS.
On mettra la transformation dun caractre et son affichage sous forme de sous
programme.
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
2. Effectuer les oprations suivantes, sur 4 bits, et prciser les valeurs des indicateurs
CF, ZF, SF, OF, et PF :
1010 + 0101
et
0111 + 0001
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. Dtailler les tapes de lexcution des deux instructions suivantes en prcisant
le mode dadressage :
MOV BX, AX
MOV AX, 03h
AND AX, [SI+6]
1. Donner la position des indicateurs CF, ZF, SF, PF et OF { la fin de lexcution des
instructions suivantes :
MOV AX, AAh
ADD AX, 11h
ADC AX, 45h
Prciser le contenu de AX.
2. Quelle est la procdure suivie par le processeur lors de lappel dun sous
programme passage de paramtre par la pile.
Exercice I :
Exercice II :
Exercice II :
DOSSEG
JA S2
.MODEL SMALL
.STACK 0100 H
S2:
.DATA
PUSH AX
VAR1 DB 01H
VAR2 DB 04H
VAR3 DB 03H
.CODE
PUSH AX
START:
MOV CX, 3
MOV DS, AX
S3:
MOV AL,[BX]
PUSH AX
INC BX
JA S1
LOOP S3
S1:
INT 21H
END START
SP
F6h
SP
F8h
SP
FAh
SP
FCh
SP
FEh
SP 100h
0003
0004
0001
0008
0003
Exercice I :
1. Quelle est la diffrence entre une interruption matrielle et une interruption
logicielle ?
2. Donner les tapes de traitement dune interruption matrielle
3. Indiquer le type du mode dadressage des instructions suivantes en expliquant la
mthode de saisie de la donne
ADC AX, 50h
INC BX
MOV DX, [SI+5]
Exercice II :
Faire un programme en assembleur qui affiche les lettres de lalphabet en minuscule et
en majuscule comme le montre lexemple ci-dessous :
aAbBcCzZ
Mettre sous forme de sous programmes
Laffichage dun caractre
La transformation du caractre
DOSSEG
.MODEL SMALL
.MODEL SMALL
.CODE
.CODE
START:
START:
MOV BL, 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
JBE SAUT
JBE SAUT
INT 21H
INT 21H
AFFICHAGE PROC NEAR
INT 21H
INT 21H
RET
RET
AFFICHAGE ENDP
AFFICHAGE ENDP
RET
RET
TRANSFORMATION ENDP
TRANSFORMATION ENDP
END START
END START
Exercice I :
1. Prciser le rle de chacun des registres suivants :
CS, DS, SP et IP
Exercice II :
1. crire un programme en assembleur qui excute les oprations suivantes:
Mettre dans la pile les valeurs ci-dessous dans cet ordre :
18h, 11h, 29h, 04h, 20h
Lire les donnes partir de la pile en les comparants. Ranger la valeur la plus
grande dans le registre DX
PARTIE I :
1. Rappeler brivement tous les registres du 80x86 en prcisant le rle de chacun des
registres.
2. Donner le mode dadressage de linstruction suivante et indiquer les tapes de
lexcution : AND AX, [BX+SI+7]
3. Pourquoi les segments de la mmoire ont une taille de 64 Ko ?
4. Donner larchitecture de lespace mmoire en prcisant les adresses et le mode
dadressage du microcontrleur 80C535.
5. Quelle est la diffrence entre un registre gnral est un SFR ?
6. Citer 3 exemples de registres gnraux et 3 exemples de registres SFR.
PARTIE II :
crire un programme en assembleur qui permet de raliser les oprations suivantes :
1. Saisie de quatre caractres au clavier
2. Comparaison des quatre caractres saisis
3. Affichage du caractre dont le code ASCII et le plus grand
Lopration 1 doit tre ralise par un sous programme.
NB : Le code ASCII du caractre saisi est mis dans AL par le CPU
PARTIE II :
DOSSEG
.MODEL SMALL
.CODE
START:
MOV DL,
00H
MOV CX,
04H
80515
stddef51
bank0
code
0000H
MOV R7, #80H
CPL P1.7
CALL ATTENTE
JB P4.7 START
MOV R7, #40H
SJMP BOUCLE
Dbut
R7 80H
ATTENTE :
SAUT2:
MOV R6, #00H
SAUT1:
DJNZ R6, SAUT1
DJNZ R7, SAUT2
RET
CPL P1.7
ATTENTE
END
R7 40H
Bas
P4.7
Haut
Solution 2:
CPU
INCLUDE
USING
SEGMENT
ORG
START:
HAUT :
BAS :
80515
stddef51
bank0
code
0000H
CPL P1.7
JB P4.7 HAUT
CALL ATTENTE2
SJMP BAS
CALL ATTENTE1
SJMP START
Dbut
ATTENTE1 :
SAUT2:
SAUT1:
CPL P1.7
P4.7
ATTENTE2 :
SAUT2:
SAUT1:
END
ATTENTE1
ATTENTE2
EXERCICE I :
crire le programme assembleur qui excute les oprations suivantes :
Crer 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 microcontrleur 80C535 suivant :
CPU
INCLUDE
USING
SEGMENT
ORG
START :
nbr :
80515
stddef51
bank0
code
0000H
mov R6, #30h
mov 35h, #2Fh
mov P1, #FFh
mov @R0, #50h
orl AR6, #01010101B
cpl P1
cjne R6, #04, nbr
sjmp start
END
1. Donner la signification de chaque instruction.
2. Calculer la dure du programme sachant que le cycle machine est de lordre de 1s.
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
80515
INCLUDE
stddef51
USING
bank0
SEGMENT
code
ORG
0000H
Programme principal
START:
nbr :
SJMP START
END
cpl P1
; Complmenter le port 1
Exercice I :
1. Quelle est la diffrence entre une interruption matrielle et une interruption
logicielle ?
2. Donner les tapes de traitement dune interruption matrielle
3. Pour un microcontrleur 80C535, prciser lemplacement dans la mmoire des
bases (banks) de registres gnraux en donnant leur nombre.
4. Donner quelques exemples de registres SFR.
Exercice II :
Faire un programme en assembleur 80x86 qui affiche les lettres de lalphabet en
minuscule et en majuscule comme le montre cet exemple :
aAbBcCzZ
Laffichage du caractre doit tre trait sous forme dun sous programme.
Exercice III :
On considre une diode LED connecte la sortie 7 du port 1 du
microcontrleur 80C535. On souhaite faire clignoter, sans arrt, la diode selon la
priode suivante :
dure de lallumage est de lordre de 33.55 s
dure de lextinction est de lordre de 32.80 ms
1. donner lordinogramme de commandes du programme principal
2. donner lordinogramme de commandes des sous programmes ralisant
lallumage et lextinction (justifier le choix des valeurs charger dans les
registres)
3. crire le programme en assembleur 80515.
EXERCICE II:
Solution1 :
Solution2 :
DOSSEG
DOSSEG
.MODEL SMALL
.MODEL SMALL
.CODE
.CODE
START:
START:
MOV BL, 61H
SAUT:
SAUT:
MOV DL, BL
MOV DL, AL
CALL AFFICHAGE
CALL AFFICHAGE
CALL AFFICHAGE
CALL AFFICHAGE
INC BL
INC AL
JBE SAUT
JBE SAUT
MOV AX, 4C00H
INT 21H
INT 21H
RET
INT 21H
AFFICHAGE ENDP
RET
END START
AFFICHAGE ENDP
END START
Registre de flags (PSW) : appel aussi registre condition, constitue des drapeaux
(flags) qui indiquent certains tats particuliers. Ces bits indicateurs peuvent tre tests
pour dterminer la suite du droulement du programme.
CF : il sera mis 1 sil y a eu retenue lors de la dernire instruction arithmtique.
PF : lindicateur mis 1 si le rsultat dune opration contient un nombre pair de bits
1.
AF : cest la retenue de poids 24 utilise lors doprations arithmtiques dcimales.
ZF : il sera mis 1 si le rsultat dune instruction arithmtique donn zro.
SF : il sera mis 1 si le rsultat dune instruction donn un nombre ngatif.
OF : il sera mis 1 si le rsultat dune addition de 2 nombres positifs donne un
nombre ngatif est inversement.
DF : est un indicateur utilis lors de la manipulation de chanes de caractre.
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.