Vous êtes sur la page 1sur 5

ENSA Fès

Microprocesseurs et Microcontrôleurs

Exercice n°1 :
1) Etudiez les modes d’adressage utilisés et donnez les contenus des registres ou de la
mémoire après chaque instruction.

ORG $FC00
loop2:
CLRB
LDA #$0C
STA $0100

LDA #$01
TFR A,DP

LDA #$A7
STA $01

LDX #$0100
Loop1:
LDA ,X
incb
ADDA B,X
STA ,X+
CMPX #$0001
Beq loop1
Bra loop2
END

2) En déduire le code machine

Le Programme résidera à l’adresse $FC00 en mémoire.


Exercice n°2 : Addition arithmétique sur 8 bits (S=N+M)
1) Ecrire un programme source en langage assembleur du 6809 qui sert à additionner deux
nombres binaires ‘N’ et ‘M’ situés respectivement aux adresses mémoires (1000)H et
(1001)H. Le résultat de l’addition (sur deux octets) sera rangé en mémoire à l’adresse
(1002)H. On suppose qu’il peut y avoir une retenue finale ‘C’.
a) en mode d’adressage étendu
b) en mode d’adressage direct
c) en mode d’adressage indexé (X : registre d’index)

2) Donner pour chaque mode d’adressage le code objet (listage en code machine).
Le Programme résidera à l’adresse $FC00 en mémoire.

$1000 N
$1001 M

$1002 C
$1003 S

Exercice n°3 : Multiplication arithmétique (P=N*M)


2) Ecrire un programme source en langage assembleur du 6809 qui sert d’effectuer le
produit arithmétique de deux nombres binaires ‘N’ et ‘M’ situés respectivement aux
adresses mémoires (1000)H et (1001)H. Le produit sera rangé en mémoire à l’adresse
(1002)H.
a) en mode d’adressage étendu
b) en mode d’adressage direct
c) en mode d’adressage indexé (X : registre d’index)

2) Donner pour chaque mode d’adressage le code objet (listage en code machine).
Le Programme résidera à l’adresse $FC00 en mémoire.
$1000 N
$1001 M

$1002 P_H
$1003 P_L

Exercice n°4 : addition arithmétique sur 16 bits (S=N+M)


3) Ecrire un programme source en langage assembleur du 6809 qui sert d’effectuer l’addition
arithmétique de deux nombres binaires ‘N’ et ‘M’ codés sur 16 bits chacun et situés
respectivement aux adresses mémoires (1000)H et (1002)H. Le résultat sera stocké en
mémoire à l’adresse (1004)H. (On suppose qu’il peut y avoir une retenue).
a) en mode d’adressage étendu
b) en mode d’adressage direct
c) en mode d’adressage indexé (X : registre d’index)

2) Donner pour chaque mode d’adressage le code objet (listage en code machine).
Le Programme résidera à l’adresse $FC00 en mémoire.

Exercice n°5 :
1) Mettre au point un programme source effectuant le transfert d’une table de 30 octets
dont l’adresse de base est $1000 à l’adresse $1020.
2) En déduire le code objet (listage en code machine).

Le Programme résidera à l’adresse $FC00 en mémoire.

Exercice n°6 :
1) Mettre au point un programme source effectuant le transfert d’une table de 30 données
codées sur 16 bits chacune dont l’adresse de base est $1040 à l’adresse $1000.

2) En déduire le code objet (listage en code machine).

Le Programme résidera à l’adresse $FC00 en mémoire.


Exercice n°7 :
1) Une table de données de taille 8 bits est localisée entre $1000 et $10FF.
Mettre au point un programme comptant le nombre d’octets pairs de cette table (le résultat
étant placé en $0100) et le nombre d’octets impaires (le résultat étant placé en $0101).
2) En déduire le code objet (listage en code machine).

Le Programme résidera à l’adresse $FC00 en mémoire.

Exercice n°8 :
1) Une table de données signées de taille 8 bits est localisée entre $1000 et $10FF.
Mettre au point un programme comptant le nombre de données positives de cette table
(Supérieur ou égal à 0) et le nombre de données négatives (< 0).
2) En déduire le code objet (listage en code machine).

Le Programme résidera à l’adresse $0000 en mémoire.

Exercice n°9 :
1) Mettre au point un programme en code source qui permet d’effectuer la multiplication
arithmétique de deux tables TAB1 et TAB2 dont les éléments sont des données de 8 bits
chacun et de stocker le résultat dans une troisième table TAB3.
TAB1 : $1000
TAB2 : $1040
TAB3 : $1080

2) En déduire le code objet (listage en code machine).

Le Programme résidera à l’adresse $0000 en mémoire.

Exercice n°10 :
1) Mettre au point un programme en code source qui permet de dénombrer les données
dont le bit b4 est égal à 1 d’une table dont le nombre d’octets est égal à 40.
TAB : $1000
2) En déduire le code objet (listage en code machine).

Le Programme résidera à l’adresse $0000 en mémoire.


Exercice n°11 :
1) Mettre au point un programme en code source qui permet de remplir une table par des
données allant de 0 à 255.
TAB : $1000
2) En déduire le code objet (listage en code machine).

Le Programme résidera à l’adresse $0000 en mémoire.

Exercice n°12 :
1) Mettre au point un programme en code source qui permet de remplir une table par toutes
les données de 8 bits par pas de 2 en allant de 0.
TAB : $1000
2) En déduire le code objet (listage en code machine).

Le Programme résidera à l’adresse $0000 en mémoire.

Exercice n°13 :
1) Mettre au point un programme en code source qui permet de remplir une table par toutes
les données de 8 bits par pas de 4 en allant de 1.
TAB : $1000
2) En déduire le code objet (listage en code machine).

Le Programme résidera à l’adresse $0000 en mémoire.