Vous êtes sur la page 1sur 2

Licence Electronique (L3) Université de Mostaganem

Janvier 2024 FST – Dpt GE

Solution type de l’Examen de la matière : Systèmes à Microprocesseurs (SAM)


Exercice 1 : ( 3 pts)
1. Les nombres suivants sont des nombres signés codés en complément à 2 sur 16 bits. Donnez leur valeur
en décimal (base 10) :
(142C)16 = (0001 0100 0010 1100)2 = (+ 5164)10 (0,5pt)

(FFF3)16 = (1111 1111 1111 0011)2 ➔ C/2 : (0000 0000 0000 1101)2 = (+13)10
➔ Alors on a : (FFF3)16 = (- 13)10 (1pt)

2. Que peuvent représenter les codes binaires suivants : (10000011)2 ; (00101010)2 ;

(10000011)2 ➔ Nombre non signé : (131)10 (0,75pt)


 Nombre signé : (-125)10
 Ce n’est pas un code ASCII
 Code BCD : (83)10
(00101010)2 ➔ Nombre non signé : (42)10 (0,75pt)
 Nombre signé : (+42)10
 Code ASCII : ‘*’ = $2A
 Ce n’est pas un code BCD

Exercice 2 : ( 5 pts)

On considère un système à base d’un microprocesseur comprenant les éléments suivants :


- Un microprocesseur possédant un bus d’adresse de 16 lignes ;
- Une mémoire ROM de capacité de 8Ko;
- Une mémoire RAM ayant un bus d’adresse de 12 lignes ;
- Un circuit d’interface entrée/sortie le PIA6821 ;
a. Quelle est la taille de l’espace mémoire vu par le microprocesseur ?
Cap. Mem. = 2nb lignes ➔ C.M. = 216 = 26 x 210 = 64 Ko ; (1pt)
b. Si l'adresse haute de la ROM est $FFFF, quelle est son adresse basse ?
C.MROM = 8Ko = 8192 = $2000 ; (0,5pt)
C.MROM = A.H - A.B + 1 ➔ A.B = A.H – C.MROM + 1 = $FFFF - $2000 +1 = $E000 (0,75pt)
c. Si l’adresse basse de la RAM est $1000, quelle est son adresse haute ?
C.MRAM = 2nb lignes = 212 = 4Ko = 4096 = $1000 ; (0,5pt)
C.MRAM = A.H - A.B + 1 ➔ A.H = A.B + C.MRAM - 1 = $1000 + $1000 -1 = $1FFF (0,75pt)
d. Donner la séquence d’instructions en assembleur MC6809 qui permet la configuration suivante du
circuit d’entrée/sortie PIA6821 : (1,5pt)
Le PortA : « PA0 PA2 PA4 PA6 » configurées en entrée, « PA1 PA3 PA5 PA7 » configurées en sortie ;
Le PortB : « PB0 PB1 » configurées en sortie et le reste des lignes doivent être configurés en entrée.

CLR CRA (ou CLR $8001) CLR CRB (ou CLR $8003)
LDA #%10101010 LDA #%00000011
STA DDRA (ou STA $8000) STA DDRB (ou STA $8002)
LDB #$04 STB CRB (ou STB $8003)
STB CRA (ou STB $8001)

1
Exercice 3 : (5 pts)
Ecrire un programme en assembleur qui effectue la recopie du contenu d’une table de N octets se trouvant à l’adresse
adz1 vers une autre zone mémoire se trouvant à l’adresse adz2.
Application : N =150 ; adz1 = $9000, adz2 = $A000.
adz1 EQU $ 9000
adz2 EQU $A000
Nb EQU $96 (0,5pt)
ORG $FC00 (0,25pt)
LDX #adz1 (0,5pt)
LDY #adz2 (0,5pt)
LDA #Nb (0,5pt)
Loop:
LDB ,X+ (0,75pt)
STB ,Y+ (0,75pt)
DECA (0,5pt)
BNE loop (0,5pt)
END (0,25pt)
Exercice 4 : (7 pts)
On considère une table de N données signées  xi  et codés sur 8 bits. La table est rangée en mémoire à l'adresse
adtab. Ecrire un programme en assembleur qui effectue le calcul suivant :
N
Le résultat R doit être stocké à partir de l’adresse adrR
Application : N =25 ; adtab = $0100, adrR = $0020.
x i
R= i =1

adtab EQU $0100


memN EQU $0002
adrR EQU $0020 (0,5pt)
ORG $FC00
LDY #adtab (0,5pt)
LDB #$19 *N=25=$19 (0,25pt)
STB memN (0,25pt)
CLRA (0,25pt)
CLRB (0,25pt)
boucle:
STD adrR (0,5pt)
LDB ,Y+ (0,75pt)
SEX *extension de format signée : 8bits → 16 bits (0,75pt)
ADDD adrR (0,5pt)
DEC memN (0,5pt)
BNE boucle (0,5pt)
ASRA
RORB * division /2 (0,5pt)
ASRA
RORB * division /2 (0,5pt)
STD adrR (0,5pt)

END

Vous aimerez peut-être aussi