Vous êtes sur la page 1sur 7

POPULAIRE ET DÉMOCRATIQUE ALGÉRIENNE

RÉPUBLIQUE
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE
LA RECHERCHE SCIENTIFIQUE
UNIVERSITÉ BADJI MOKHTAR-ANNABA
FACULTÉ DES SCIENCES ET TECHNOLOGIE
DÉPARTEMENT D’ÉLECTRONIQUE
SPÉCIALITÉ : AUTOMATIQUE

T HÈME :
TP N°1 : Prise en Main de MOTO6809

RÉALISÉ PAR :
ANNÉE UNIVERSITAIRE :
2023/2024
INTRODUCTION :
LA PRISE EN MAIN DE MOTO6809 SE RÉFÈRE À LA FAMILIARISATION ET À
L'APPRENTISSAGE DES FONCTIONNALITÉS DE CE MICROPROCESSEUR, NOTAMMENT
UTILISÉ DANS LES ORDINATEURS ET SYSTÈMES EMBARQUÉS. CELA IMPLIQUE LA
COMPRÉHENSION DE SON ARCHITECTURE, DE SES INSTRUCTIONS ET DE SON
FONCTIONNEMENT POUR POUVOIR DÉVELOPPER DES PROGRAMMES EFFICACES.

LE BUTE DE TP :
UTILISER LES FONCTIONS DE BASE DU SIMULATEUR MOTO6809 EDITION D’UN
PROGRAMME COMPILATION, DÉBOGAGE ET SIMULATION D’UN PROGRAMME. ETUDE
DE QUELQUES MODES D’ADRESSAGE DU 6809 COMPRENDRE LES BITS C V N Z H DU
REGISTRE D’ÉTAT RCC FAIRE CORRESPONDRE LES INSTRUCTIONS À LEUR OP CODES.
DÉDUIRE LA TAILLE RÉELLE DU
PROGRAMME ET LE TEMPS D’EXÉCUTION D’UN PROGRAMME EN NOMBRE DE CYCLES.

LA MANIPULATION:

1 ADRESSAGE IMMEDIAT (PROG1_IMMEDIAT.AS9) :


ORG $FD00
LDA #%00110100
ADDA # $7F
STA $0101
END
1. **COMPILER, EXÉCUTER ET VÉRIFIER LE RÉSULTAT :**
- UTILISEZ UN ASSEMBLEUR MOTOROLA 6809 POUR ASSEMBLER LE CODE ET UN
ÉMULATEUR 6809 POUR EXÉCUTER LE PROGRAMME. VÉRIFIEZ LE CONTENU DE LA
MÉMOIRE RAM APRÈS L'EXÉCUTION POUR CONFIRMER LES RÉSULTATS.
2. **OP CODE ET TAILLE EN OCTET :**
- LES OP CODES POUR L'ARCHITECTURE 6809 DÉPENDENT DU JEU
D'INSTRUCTIONS SPÉCIFIQUE. VOUS DEVREZ CONSULTER LA DOCUMENTATION DE
L'ASSEMBLEUR 6809 QUE VOUS UTILISEZ. LA TAILLE EN OCTETS DÉPENDRA DU
NOMBRE D'INSTRUCTIONS ET DE LA TAILLE DES DONNÉES IMMÉDIATES.

3. **ASSEMBLER ET VÉRIFIER LE FICHIER .S19 :**


- UTILISEZ UN ASSEMBLEUR MOTOROLA 6809 POUR ASSEMBLER LE CODE. OUVREZ
LE FICHIER GÉNÉRÉ (.S19) AVEC UN ÉDITEUR DE TEXTE POUR VÉRIFIER LE CONTENU.

4. **EXÉCUTER PAS À PAS ET DÉTERMINER LES VALEURS DES BITS D'ÉTAT :**
- UTILISEZ UN ÉMULATEUR 6809 AVEC UN DÉBOGUEUR POUR EXÉCUTER PAS À PAS.
VÉRIFIEZ LES VALEURS DES BITS D'ÉTAT (C, Z, N, V, H) DANS LE REGISTRE D'ÉTAT
APRÈS L'EXÉCUTION DE L'INSTRUCTION `ADDA # $7F`. NOTEZ QUE LES DÉTAILS
SPÉCIFIQUES PEUVENT VARIER EN FONCTION DE L'ÉMULATEUR QUE VOUS UTILISEZ.

2 ADRESSAGE INDIRECT ETENDU (PROG4_INDIRECT.as9) :


;$0102 DB $82
;$0103 DB $81
ORG $FC00
LDA $0102 ETENDU
ADDA $0103
STA $0106
END

1. **VALEURS DES BITS C Z N V H :**


- POUR DÉTERMINER LES VALEURS DES BITS C, Z, N, V, H, NOUS DEVONS
EXÉCUTER LES INSTRUCTIONS ET EXAMINER LE RÉSULTAT.
- SUPPOSONS QUE $0102 CONTIENT LE NOMBRE A ET $0103 CONTIENT LE
NOMBRE B.

2. **EXPLICATION DES VALEURS DES BITS C, N, V POUR LES DEUX CAS POSSIBLES :**
A) **CAS OÙ L'ON CONSIDÈRE QUE LES NOMBRES SONT POSITIFS (NON SIGNÉS) :**

- POUR DES NOMBRES NON SIGNÉS, LE BIT N (NÉGATIF) N'A PAS DE SENS CAR
TOUS LES NOMBRES SONT CONSIDÉRÉS COMME POSITIFS.

- LE BIT C (RETENUE) SERA DÉFINI SI L'ADDITION DÉPASSE LA CAPACITÉ D'UN


OCTET.

- LE BIT V (DÉBORDEMENT) SERA DÉFINI SI L'ADDITION PRODUIT UN RÉSULTAT


INCORRECT DÛ AU DÉPASSEMENT DE CAPACITÉ.

B) **CAS OÙ L'ON CONSIDÈRE QUE LES NOMBRES SONT SIGNÉS (COMPLÉMENT À 2)

- LE BIT N (NÉGATIF) INDIQUE LE SIGNE DU RÉSULTAT (N=1 POUR NÉGATIF).


- LE BIT C (RETENUE) ET LE BIT V (DÉBORDEMENT) PEUVENT ÊTRE UTILISÉS
DIFFÉREMMENT POUR LES NOMBRES SIGNÉS. LE BIT C PEUT INDIQUER UN EMPRUNT
ET LE BIT V UN DÉBORDEMENT.

3. **MODIFIER LES VALEURS $F3 ET $F1 ET RÉPONDRE AUX MÊMES QUESTIONS :**
- ACTUELLEMENT, VOUS AVEZ SPÉCIFIÉ LES VALEURS $82 ET $81. MODIFIEZ-LES
POUR $F3 ET $F1.

3 ADRESSAGE DIRECT UTILISANT LE REGISTRE DP (PROG3_DIRECT_DP.AS9) :


;$0102 DB $22

;$0103 DB $33

ORG $FC00

LDA #$01

TFR A,DP

LDA $02

ADDA $03
STA $06

END

Pour déduire l'adresse du résultat de l'addition, observez l'instruction `STA $06`.


Cela indique que le résultat sera stocké à l'adresse $06. Ainsi, l'adresse du résultat
de l'addition est $06.

4 ADRESSAGE INDIRECT ETENDU (PROG4_INDIRECT.as9) :


;$0102 db $02
;$0103 db $13
;$0213 db $33
;$0106 db $02
;$0107 db $14
;$0214 db $22
;$0109 db $02
;$010A db $15
ORG $FC00
LDA [$0102 ]
ADDA [$0106]
STA [$0109]
END

Maintenant, détaillons les adresses et les valeurs :


- Adresse et valeur du premier nombre à additionner :
- Adresse : $0102
- Valeur : $02
- Adresse et valeur du deuxième nombre à additionner :
- Adresse : $0106
- Valeur : $14 (indirectement à l'adresse $0106)
- Adresse de la variable résultat :
- Adresse : $0109
Après l'exécution du programme, le résultat de l'addition sera stocké à l'adresse
contenue dans $0109. Cependant, dans le code fourni, l'adresse $0109 ne
contient pas une valeur directe, mais plutôt l'adresse où le résultat sera stocké.
Par conséquent, pour obtenir le résultat final, vous devez regarder la valeur
stockée à l'adresse indiquée par $0109 après l'exécution du programme.
Supposons que l'adresse contenue dans $0109 soit $0215. Alors, le résultat final
serait à l'adresse $0215, et la valeur à cette adresse serait $35 (addition de $02 et
$14).

5 ADRESSAGE INDEXE :
;$0102 db $22
;$0103 db $33
ORG $FC00
LDA #$77
LDX #$0100
boucle:
STA,X+
CMPX #$0026
BNE boucle
END

1. **PLAGE MÉMOIRE AFFECTÉE PAR CE PROGRAMME :**


- LA PLAGE MÉMOIRE AFFECTÉE PAR CE PROGRAMME EST DE L'ADRESSE $0100 À
L'ADRESSE $0025. CELA SIGNIFIE QUE LES VALEURS DE LA PLAGE MÉMOIRE $0100 À
$0025 SERONT ÉCRASÉES AVEC LA VALEUR $77.
2. **MODIFIER LE PROGRAMME POUR CHARGER LA MÊME ZONE MÉMOIRE AVEC 1 2
3 ... :**
POUR CHARGER LA ZONE MÉMOIRE AVEC LES VALEURS DE 1 À 36, VOUS POUVEZ
MODIFIER LE PROGRAMME COMME SUIT :

```ASSEMBLY
ORG $FC00
LDX #$0100 ; Charger l'adresse de départ dans le registre X
LDAA #$01 ; Charger la première valeur (1) dans le registre A
boucle:
STAA,X+ ; Stocker la valeur dans le registre A à l'adresse contenue
dans X, puis incrémenter X
CMPX #$0026 ; Comparer la valeur dans le registre X avec $0026
BNE boucle ; Si les valeurs ne sont pas égales, sauter à l'étiquette
boucle
END
Ce programme modifié chargera la zone mémoire de l'adresse $0100 à
l'adresse $0025 avec les valeurs de 1 à 36. Notez que vous pouvez
ajuster la plage ou les valeurs selon vos besoins.
Conclusion :
La prise en main de MOTO6809 implique la compréhension
approfondie de son architecture, de ses instructions et de ses
modes d'adressage. Cela permet de développer des
programmes efficaces pour les ordinateurs et systèmes
embarqués utilisant ce microprocesseur. La manipulation des
registres, la gestion des modes d'adressage et la maîtrise des
instructions sont des éléments clés pour exploiter pleinement
les fonctionnalités du MOTO6809. La pratique avec des
programmes simples, tels que ceux impliquant des opérations
arithmétiques et des boucles, est essentielle pour renforcer la
compréhension et la compétence dans l'utilisation de ce
microprocesseur.

Vous aimerez peut-être aussi