Le microprocesseur Motorola 6809 est un processeur 8 bits très puissant pour son époque, offrant des instructions avancées, notamment la prise en charge d’adressage indirect et une architecture optimisée pour la programmation en langage assembleur. Ce guide présente des exercices corrigés pour comprendre la programmation de base du microprocesseur 6809.
Nous allons passer en revue la manipulation des registres, les instructions de branchement, les interruptions et la gestion des entrées/sorties (E/S).
Écrire un programme en assembleur pour le microprocesseur 6809 qui additionne deux nombres 8 bits stockés en mémoire aux adresses $1000
et $1001
, puis place le résultat à l’adresse $1002
.
ORG $1000 ; Début du programme
LDA $1000 ; Charger le premier nombre depuis l'adresse $1000 dans A
ADDA $1001 ; Ajouter le contenu de l'adresse $1001 au registre A
STA $1002 ; Stocker le résultat à l'adresse $1002
SWI ; Arrêt du programme
$1000
.$1000
dans le registre A.$1001
à la valeur du registre A.$1002
.Écrire un programme qui compare deux nombres stockés à $2000
et $2001
. Si le premier nombre est plus grand, le programme stocke 1
à l’adresse $2002
. Si le deuxième est plus grand ou égal, il stocke 0
.
ORG $2000 ; Début du programme
LDA $2000 ; Charger le premier nombre dans A
CMPA $2001 ; Comparer avec le nombre à l'adresse $2001
BHI STORE_ONE ; Si A est plus grand, sauter à STORE_ONE
LDA #0 ; Sinon, charger 0 dans A
BRA STORE_RESULT ; Aller à la partie où on stocke le résultat
STORE_ONE:
LDA #1 ; Charger 1 dans A
STORE_RESULT:
STA $2002 ; Stocker le résultat à l'adresse $2002
SWI ; Fin du programme
$2001
.$2001
.1
ou 0
) dans la mémoire.Écrire un programme qui compte de 1 à 10 et affiche chaque nombre dans la mémoire à l’adresse $3000
. Le programme utilise une boucle pour incrémenter un compteur et s’arrête lorsque la valeur 10 est atteinte.
ORG $3000 ; Début du programme
LDX #1 ; Initialiser X à 1 (début du comptage)
LOOP:
STX $3000 ; Stocker la valeur de X dans $3000
INX ; Incrémenter X
CPX #11 ; Comparer X avec 11 (fin de la boucle)
BNE LOOP ; Si X n'est pas égal à 11, continuer la boucle
SWI ; Fin du programme
$3000
.Un bouton est connecté au port A du PIA (Peripheral Interface Adapter) à l’adresse $4000
. Un voyant est connecté au port B à l’adresse $4001
. Si le bouton est enfoncé (valeur logique 1
), le programme doit allumer le voyant en écrivant 1
à l’adresse $4001
. Si le bouton est relâché (valeur logique 0
), le programme doit éteindre le voyant.
ORG $4000 ; Début du programme
LDA $4000 ; Lire l'état du bouton sur le port A du PIA
CMPA #1 ; Comparer l'état du bouton avec 1 (bouton enfoncé)
BEQ TURN_ON ; Si égal, aller à TURN_ON pour allumer le voyant
LDA #0 ; Sinon, éteindre le voyant
STA $4001 ; Écrire 0 au port B pour éteindre le voyant
BRA END ; Aller à la fin du programme
TURN_ON:
LDA #1 ; Charger 1 pour allumer le voyant
STA $4001 ; Écrire 1 au port B pour allumer le voyant
END:
SWI ; Fin du programme
1
pour vérifier si le bouton est enfoncé.0
dans le registre A pour éteindre le voyant.Programmer une interruption qui se déclenche lorsqu’un bouton connecté au port A du PIA est pressé. Lorsque l’interruption se produit, un voyant connecté au port B du PIA doit s’allumer.
ORG $5000 ; Début du programme principal
CLI ; Activer les interruptions
LDX #ISR ; Charger l'adresse de la routine d'interruption
STX $FFF2 ; Stocker l'adresse de l'interruption à l'adresse du vecteur d'IRQ
SWI ; Fin du programme principal
ISR:
LDA $4000 ; Lire l'état du bouton
CMPA #1 ; Comparer avec 1 (si le bouton est enfoncé)
BEQ TURN_ON_ISR ; Si égal, allumer le voyant
BRA END_ISR ; Sinon, sortir
TURN_ON_ISR:
LDA #1 ; Charger 1 pour allumer le voyant
STA $4001 ; Écrire 1 au port B pour allumer le voyant
END_ISR:
RTI ; Retour de l'interruption
Le microprocesseur 6809 offre une architecture puissante pour la programmation en assembleur, particulièrement utile dans les systèmes embarqués. Les exercices présentés permettent de se familiariser avec les bases de la manipulation des registres, les instructions de branchement conditionnel, les boucles, et l’interfaçage avec des périphériques via le PIA. Ces concepts sont fondamentaux pour comprendre et maîtriser la programmation à bas niveau sur des microprocesseurs anciens mais encore utilisés dans certaines applications critiques.
💡
La programmation sur le microprocesseur 6809 présente plusieurs avantages qui le distinguent des autres processeurs 8 bits de son époque. Bien que développé dans les années 1970-1980, le 6809 était en avance sur son temps avec plusieurs caractéristiques innovantes qui facilitaient la programmation en langage assembleur et amélioraient les performances du système. Voici quelques-uns des principaux avantages de la programmation sur le 6809 :
Le 6809 dispose d’un jeu d’instructions plus avancé et plus orthogonal par rapport à d’autres processeurs 8 bits comme le 6502 ou le Z80. Cela signifie que la plupart des instructions peuvent s’appliquer à un plus grand nombre de modes d’adressage et de registres. Voici quelques avantages spécifiques liés au jeu d’instructions du 6809 :
Le 6809 offre une grande variété de modes d’adressage, incluant des modes rarement disponibles sur d’autres processeurs 8 bits de l’époque :
Contrairement à d’autres processeurs 8 bits plus limités en termes de registres (comme le 6502 avec ses trois principaux registres : A, X, Y), le 6809 dispose d’une variété de registres 8 bits et 16 bits, offrant plus de flexibilité pour la gestion des données.
Le 6809 introduit un système d’interruption sophistiqué, avec la gestion des priorités et des types d’interruption distincts :
Le 6809 est l’un des rares processeurs 8 bits à inclure une instruction de multiplication (MUL). Cette instruction effectue une multiplication rapide entre deux registres 8 bits et stocke le résultat dans un registre 16 bits. Cela permet de gagner du temps par rapport à des implémentations logicielles plus lentes sur d’autres processeurs.
De plus, le 6809 dispose d’instructions spécifiques à la gestion de la pile, des sauts conditionnels, et des appels de sous-programmes, ce qui rend le développement en assembleur plus facile et plus rapide.
Le 6809 supporte des adresses 16 bits, ce qui permet de gérer jusqu’à 64 Ko d’adresses mémoire, typique des systèmes 8 bits de l’époque. Cependant, l’implémentation de modes d’adressage indirects et indexés permet une utilisation plus efficace de la mémoire. De plus, le processeur prend en charge des pages de mémoire pour faciliter l’accès à des blocs mémoires séparés.
Le 6809 a été conçu pour faciliter la programmation en langage de haut niveau comme le C ou le Pascal, contrairement à d’autres processeurs 8 bits principalement orientés vers l’assembleur. Sa conception simplifie la génération de code efficace en compilant des langages de haut niveau.
Les avantages pour la programmation en C incluent :
En comparaison avec les microprocesseurs 16 bits de l’époque, comme le 8086, le 6809 offre un bon compromis entre performances et simplicité. Sa consommation d’énergie relativement faible le rend idéal pour des applications embarquées et industrielles, où l’efficacité énergétique est primordiale.
Le 6809 offre des avantages significatifs par rapport à d’autres microprocesseurs 8 bits de son époque. Ses instructions avancées, ses modes d’adressage sophistiqués, ses registres polyvalents et son support des interruptions en font un processeur puissant et flexible, particulièrement adapté aux systèmes embarqués et aux projets nécessitant une gestion précise des ressources matérielles. Sa conception facilitant l’utilisation de langages de haut niveau en fait également un bon choix pour des applications plus complexes où l’assembleur seul serait trop contraignant.
La méthode Thèse, Antithèse, Synthèse (TAS) est un outil incontournable pour structurer une dissertation, particulièrement…
1. Informations Générales Nom complet : Émile Édouard Charles Antoine Zola Date de naissance :…
1. Informations Générales Nom complet : Victor-Marie Hugo Date de naissance : 26 février 1802…
1. Informations Générales Nom complet : François Rabelais Date de naissance : Vers 1483 ou…
La modélisation financière est une pratique clé dans le domaine des finances et de la…
Un tableau de suivi des indicateurs est un outil essentiel pour mesurer la performance, suivre…
This website uses cookies.