Vous êtes sur la page 1sur 23
DEPARTEMENT DE Physique Guide d’utilisation du Logiciel MOTO6809 Pr. KARIM Mohammed
DEPARTEMENT DE
Physique
Guide d’utilisation du
Logiciel MOTO6809
Pr. KARIM Mohammed

Année Universitaire : 2014-2015 Master ISAI Master MME

I. Présentation du Logiciel MOTO6809

MOTO6809 permet de simuler le fonctionnement du microprocesseur 6809 de Motorola et de déboguer des programmes écrits en assembleur 6809. Il est particulièrement destiné aux étudiants en électronique et micro-informatique, aux enseignants mais aussi aux petits laboratoires d'électroniques souhaitant implanter des programmes en assembleur sur des cartes à microprocesseur 6809.

Ce logiciel permet également de simuler l’interface d'entrée/sortie parallèle PIA6821 dans tous ses modes de fonctionnement.

Caractéristiques

Utilisation de l'environnement Windows.

Configuration de la taille de la mémoire morte jusqu'à 8Koctets

Configuration de la taille de la mémoire vive jusqu'à 32Koctets (selon les ressources mémoires de l'ordinateur hôte)

Définition des adresses de base de la RAM et du PIA

Visualisation simultanée du contenu de tous les registres internes

Fenêtres flottantes pour la RAM et la ROM

Fenêtre flottante présentant 20 lignes de programme

Modes Pas-à-pas, Exécution complète

Simulation arrière sur 10 pas

Point d'arrêt

Possibilité de simulation des interruptions RESET, NMI, IRQ, FIRQ

Impression paramétrable

Editeur intégré

Fonction Define Byte (DB) de pré-affectation des cases mémoires

Assemblage au format S19

Définition de l'origine du programme et des sous-programmes par la commande ORG

Modification du contenu des registres et des cases mémoires en cours d'exécution

Fenêtre Information

Simulation de toutes les fonctionnalités du PIA 6821

Gestion d'une carte d'entrée/sortie

2

II. Le simulateur MOTO6809

L'environnement de développement de MOTO6809 est riche en fenêtres et éléments de tous types. Chaque élément dispose d'une InfoBulle qui apparaît lorsque le pointeur de la souris est placé pendant 2 secondes sur l'élément. Par ailleurs une ligne d'aide est affichée à la base de la fenêtre principale.

Lorsque toutes les fenêtres sont ouvertes, le programme se présente de la façon suivante :

ouvertes, le programme se présente de la façon suivante : 1) La fenêtre principale : La

1) La fenêtre principale :

La fenêtre principale du logiciel comporte plusieurs éléments distincts:

La barre des menus :

principale : La fenêtre principale du logiciel comporte plusieurs éléments distincts:  La barre des menus

3

Le menu Fichier :

Nouveau : Permet de créer un nouveau fichier assembleur (commande disponible par bouton également)

Ouvrir : Ouvre un fichier assembleur déjà existant (commande disponible par bouton également)

Enregistrer : Enregistre le programme assembleur actuellement ouvert (commande disponible par bouton également)

Enregistrer sous sous un autre nom

:

Enregistre le programme assembleur actuellement ouvert

Assembler : Créé un fichier binaire au format MOTOROLA S19 du programme assembleur courant. Ce fichier permet de programmer une EPROM (commande disponible par bouton également)

Imprimer : Imprime le programme assembleur courant selon les paramètres définis dans Options/configuration (commande disponible par bouton également)

Quitter : Quitte MOTO6809 (commande disponible par bouton également)

Le menu Simulation :

Pas à pas : Fait avancer le programme assembleur d'une instruction (commande disponible par bouton également)

Exécuter : Exécute le programme assembleur de la position courante du compteur de programme jusqu'à la fin ou jusqu'au point d'arrêt s'il est défini (commande disponible par bouton également)

Défaire : Permet de faire une simulation arrière de une instruction (commande disponible par bouton également)

RESET: Permet de réinitialiser le programme. Le compteur de programme prend l'adresse de la première instruction du programme (commande disponible par bouton également). Le menu Outils

Editeur : Ouvre la fenêtre d'édition grâce à laquelle il est possible de modifier le programme (commande disponible par bouton également)

Calculatrice : Charge la calculatrice CALC.EXE de Microsoft

Information : Donne des informations sur le programme et les ressources de votre système (Voir les fenêtres information).

4

Le menu Fenêtres :

Programme : Permet d'afficher ou de cacher la fenêtre programme

RAM : Permet d'afficher ou de cacher la fenêtre RAM

ROM : Permet d'afficher ou de cacher la fenêtre ROM

PIA : Permet d'afficher ou de cacher la fenêtre PIA

Ces commandes apparaissent comme cochées dans le menu dans le cas où

la fenêtre correspondante est visible.

Arranger: Repositionne les différentes fenêtres sur l'écran de manière à ce qu'ils ne se chevauchent pas (commande disponible par bouton également). Le menu Options

Police : Ouvre une fenêtre de dialogue dans laquelle il est possible de choisir

la police et la couleur des caractères affichés dans la fenêtre Architecture

Configuration : Ouvre une fenêtre de dialogue permettant de configurer les paramètres de simulation et d'utilisation du logiciel. Configuration

Sauver : Commande la sauvegarde de la position des fenêtres ainsi que de l'état de celles-ci(visible ou non). Lors d'une nouvelle utilisation du logiciel ces paramètres seront pris en compte pour l'affichage des fenêtres. Le menu Aide

A

propos : Ouvre la fenêtre de version du logiciel Celle-ci contient également

le

nom de l'utilisateur enregistré ainsi que de son numéro de licence.

Aide : Ouvre ce fichier d'aide

Instructions : Ouvre le fichier d'aide à la page de la liste des instructions.

La barre des icônes :

La barre d'icônes située sous la barre de menus permet d'accéder aux fonctions principales du simulateur. En positionnant le pointeur de souris sur un bouton de cette barre, une bulle info indique le nom sommaire du bouton tandis que la barre d'état affiche une aide sommaire de la fonction réalisée.

5

 Barre d'état : Date courante : Date du jour Heure : Heure courante Nom
 Barre d'état : Date courante : Date du jour Heure : Heure courante Nom

Barre d'état :

 Barre d'état : Date courante : Date du jour Heure : Heure courante Nom du

Date courante : Date du jour

Heure : Heure courante

Nom du fichier : Nom du fichier actuellement ouvert. Le chemin n'est pas indiqué

6

Indicateur d'état : Si le programme courant a été modifié dans l'éditeur et n'a pas encore été sauvé, cette case comporte l'indication "Modifié"

Ligne d'aide : Cette ligne associée à la position du pointeur de souris donne la fonction de l'élément sous le pointeur.

Barre d'état du programme :

Cette première barre d'état donne l'état général du programme assembleur

courant et de la simulation:

du programme assembleur courant et de la simulation: Barre de progression: Elle indique la progression de

Barre de progression: Elle indique la progression de différentes opérations lors de l'initialisation du programme assembleur (correction syntaxique, initialisation de la mémoire, etc )

LED de syntaxe :Cet indique figure en rouge lorsque le programme assembleur comporte une erreur de syntaxe et en vert dans le cas contraire. L'erreur de syntaxe est mise en évidence dans la fenêtre PROGRAMME.

Taille : Le chiffre indiqué correspond à la taille du programme en octets.

Cycles : Le nombre indiqué correspond au nombre de cycles processeurs passés à ce stade de la simulation. Ce nombre peut être remis à zéro par un simple double clic sur sa valeur.

Point d'arrêt : L'information figurant dans cette case indique qu'un point d'arrêt a été placé dans le programme et que l'adresse de celui-ci est celle figurant dans la case.

2) La fenêtre Architecture :

7

Cette fenêtre présente non seulement l'architecture interne du 6809, mais aussi le contenu des différents

Cette fenêtre présente non seulement l'architecture interne du 6809, mais aussi le contenu des différents registres internes lors de la simulation. Elle permet en outre une modification temporaire du contenu des registres A, B, DP, S, U, X et Y. Un double clic sur la valeur actuelle d'un des registres (A, B, DP, U, S, X, Y) permet l'édition et la modification de sa valeur. Pour prendre en compte la nouvelle valeur hexadécimale, il suffit d'appuyer sur la touche ENTREE ou de cliquer sur le bouton en haut à droite de cette fenêtre.

La fenêtre ARCHITECTURE avec la FENETRE PRINCIPALE est la seule à ne pas pouvoir être cachée.

3) La fenêtre PROGRAMME :

à ne pas pouvoir être cachée. 3) La fenêtre PROGRAMME : Comme son nom l'indique, cette

Comme son nom l'indique, cette fenêtre affiche le programme assembleur courant.

8

Par ailleurs elle dispose de quelques caractéristiques supplémentaires:

Point d'arrêt:

En double cliquant sur une ligne de cette fenêtre comportant une instruction, on place le point d'arrêt sur la ligne. Celui est visble grâce au caractère ">>" en

début de ligne, mais aussi par l'affichage de son adresse dans la barre d'état de

la fenêtre principale.

Ici le point d'arrêt est placé à l'adresse $FC0C. On retire le point d'arrêt par un double clic sur cette même ligne.

Suivi de simulation :

A chaque pas de simulation, la ligne de la prochaine instruction à exécuter est

mise en surbrillance dans cette fenêtre.

Affichage de l'erreur de syntaxe :

Si au terme de l'analyse syntaxique, une erreur a été trouvée, celle-ci est mise en évidence dans la fenêtre Programme par une flèche précédent l'instruction.

La fenêtre Programme peut Fenêtres/Programme

être cachée

ou

affichée

avec

la

commande

4) La fenêtre RAM :

Comme son nom l'indique la fenêtre RAM affiche l'espace de mémoire vive ainsi que le contenu des différentes cases de cette mémoire.

que le contenu des différentes cases de cette mémoire. Chaque ligne comporte: -à gauche l'adresse sur

Chaque ligne comporte:

-à gauche l'adresse sur 16 bits -au milieu, la donnée placée dans la case mémoire -à droite le caractère ASCII correspondant à la donnée Un double clic sur une ligne provoque l'ouverture d'une boite de dialogue qui permet de saisir temporairement une nouvelle valeur pour la case correspondante.

Voir cette boite de dialogue

Si dans la fenêtre de configuration l'option "Suivi des modifications en RAM" est

cochée, Chaque écriture d'une case mémoire, en phase de simulation, provoque

la mise en surbrillance de la case mémoire modifiée.

Voir cette fenêtre de configuration

9

Il est possible grâce à la commande Define Byte (DB) de préaffecter à une case mémoire une donnée qui sera prise en compte dès l'initialisation du programme assembleur.

La fenêtre RAM peut être cachée ou affichée par la commande Fenêtre/RAM

5) La fenêtre ROM :

La fenêtre ROM affiche l'espace de mémoire morte ainsi que le contenu des différentes cases de cette mémoire.

que le contenu des différentes cases de cette mémoire. Chaque ligne comporte: -à gauche l'adresse sur

Chaque ligne comporte:

-à gauche l'adresse sur 16 bits -au milieu, la donnée placée dans la case mémoire -à droite le caractère ASCII correspondant à la donnée Il est possible grâce à la commande Define Byte (DB) de préaffecter à une case mémoire une donnée qui sera prise en compte dès l'initialisation du progr amme assembleur.

Cet espace mémoire comporte les codes hexadécimaux correspondants aux instructions du programme. Par ailleurs, il doit renfermer dans les adresses prévues (entre $FFF6 et $FFFF) à cet effet les vecteurs d'interruption.

La fenêtre ROM peut être cachée ou affichée par la commande fenêtre/ROM.

6) La fenêtre PIA :

affichée par la commande fenêtre/ROM. 6) La fenêtre PIA : Cette fenêtre permet de simuler le

Cette fenêtre permet de simuler le fonctionnement du circuit PIA6821 de MOTOROLA.

10

La fenêtre dispose de trois sous-fenêtres détachable de la fenêtre PIA par un simple glisser déplacer (drag and drop) ou par un double clic.

La première de ces fenêtres présente le port parallèle A. Chaque bouton-led correspond à une ligne d'entrée/sortie de ce port. Les lignes CA1 et CA2 sont également disponibles. Le contenu du registre ORA est affiché également.

La deuxième fenêtre présente le port B disposant des mêmes fonctionnalités que le port A. L'utilisation de celui-ci est donc identique au précédent.

La troisième fenêtre enfin présente le contenu des six registres internes du PIA.

Dans le cas ou l'interface matérielle est utilisée, les deux premières fenêtres sont invisibles laissant apparaître une image.

Le menu système de cette fenêtre possède une commande supplémentaire qui permet d'appeler la fenêtre de configuration du PIA.

Vers la fenêtre de configuration du PIA

La fenêtre PIA peut être cachée ou affichée par la commande Fenêtres/PIA

7) La fenêtre d'édition :

la commande Fenêtres/PIA 7) La fenêtre d'édition : La fenêtre d'édition permet de modifier et

La fenêtre d'édition permet de modifier et d'éditer le programme assembleur courant. Dès son ouverture, les lignes de programme déjà écrites sont visibles dans la fenêtre.

Afin de faciliter la lecture à l'utilisateur, les commentaires sont affichés en bleu, les étiquettes en gras et les instructions en écriture normale.

11

La fenêtre dispose d'une petite barre de menu qui permet de lancer l'analyse syntaxique ou encore de faire des opérations de recherche/Remplacement. Deux icônes permettent également de réaliser ces opérations.

La troisième icône permet, si un mnémonique est en surbrillance, d'afficher la page d'aide relative à cette instruction.

Au bas de l'écran, la barre d'état indique :

-si le texte d'origine a été modifié, -le mode d'édition (Insertion ou Remplacement) -l'état de la touche NumLock -le numéro de la ligne dans laquelle se trouve le curseur

Si dans la fenêtre de configuration l'option "Indentation automatique" est cochée, chaque retour à la ligne positionnera le curseur à la position du premier caractère de la ligne précédente. Si l'option "Fermer l'éditeur après la mise à jour" est cochée, c haque commande d'analyse syntaxique provoque la fermeture automatique de l'éditeur (Voir la fenêtre de configuration).

12

III. Configuration MOTO6809

Pour accéder aux fenêtres de configuration de MOTO6809 il faut actionner la commande du menu Options/Configuration.

1) Configuration de l'environnement de simulation :

1) Configuration de l'environnement de simulation :  Suivi des modifications en RAM : Lorsque cette

Suivi des modifications en RAM : Lorsque cette case est cochée, chaque case de mémoire vive modifiée est mise en surbrillance.

Initialisation automatique du pointeur S : Le fait de cocher cette case évite de réécrire au début de chaque programme une instruction de type LDS #$AAAA. S est automatiquement initialisé à une valeur correspondant à l'adresse du sommet de la RAM moins 64. Attention en cas d'assemblage, il faudra tout de même assurer manuellement l'initialisation.

Indentation automatique : Avec cette option, chaque retour de chariot dans l'éditeur place le curseur au même niveau que le premier caractère de la ligne précédente.

Fermer l'éditeur après la mise à jour : Provoque la fermeture automatique de l'éditeur lorsque la touche Mise à jour est actionnée.

Affiche la fenêtre "Astuce" au lancement : Permet d'éviter l'ouverture à chaque lancement du logiciel de la fenêtre Astuce du jour

Analyse rapide de la syntaxe : Lorsque cette case est cochée, l'analyse syntaxique s'arrête dès qu'une erreur de syntaxe à été décelée. Dans le cas contraire, le programme assembleur est analysé intégralement. Les erreurs de syntaxe sont alors visibles dans la fenêtre Programme.

13

2) Configuration de l'espace mémoire

2) Configuration de l'espace mémoire  Curseur Mémoire vive : Permet de choisir la taille de

Curseur Mémoire vive : Permet de choisir la taille de la mémoire vive:1, 2, 4 ou 8 Koctets. Plus la taille mémoire est important et plus l'initialisation du programme sera longue. La donnée choisi est enregistrée est prise comme taille par défaut jusqu'à nouvelle modification de celle-ci.

Adresse de base : On modifie l'adresse de base de la RAM grâce au curseur se trouvant à gauche du graphique représentant la mémoire. La valeur précise est affichée dans la fenêtre du même nom. La modification n'est possible que par pas de 1K octet.

Valeur par défaut : Permet d'indiquer la valeur affectée à une case mémoire RAM par défaut

Curseur mémoire morte : Fonctionnement identique au curseur de la mémoire vive, mais la mémoire peut aller jusqu'à 32Koctets, si votre ordinateur dispose d'assez de mémoire.

Adresse de base de la ROM : Cette valeur n'est donnée qu'à titre indicatif. Elle ne peut être modifiée étant donné que dans MOTO6809 la ROM est forcément en haut de l'espace mémoire en raison de la présence des vecteurs d'interruption. La taille de votre ROM va donc définir l'origine de la ROM.

Valeur par défaut : Permet d'indiquer la valeur affectée à une case mémoire RAM par défaut.

Représentation graphique :

Elle représente l'espace mémoire :

-En blanc : espace non occupé -En bleu : espace occupé par la mémoire morte

14

-En vert : espace occupé par la mémoire vive -Trait rouge : position du PIA (4 cases mémoires) Cette fenêtre permet :

-de vérifier qu'il n'y a pas de conflit dans l'occupation de la mémoire (une même adresse pour deux périphériques) -de positionner l'adresse de base de la RAM grâce au curseur

3) Configuration de l'impression

RAM grâce au curseur 3) Configuration de l'impression  Numéro de ligne : Permet d'imprimer devant

Numéro de ligne : Permet d'imprimer devant chaque ligne d'instruction le numéro de ligne de la page.

Adresse des instructions : Place avant la ligne d'instruction et après le numéro de ligne l'adresse dans laquelle est stockée l'instruction.

Codes hexadécimaux : Imprime avant l'instruction et après l'adresse le ou les codes hexadécimaux de l'instruction. Une ligne comportant toutes ces indication serait imprimée de la manière suivante:

37:

FC1E 1F 8A TFR A,CC

Imprimer la date : Si cette case est cochée, la date est imprimée dans le bas de page.

Imprimer l'heure : Permet d'imprimer l'heure d'impression.

Entête/Nom de fichier :Permet d'imprimer un entête comportant le texte donné ci-après ainsi que le nom du fichier.

Espace mémoire : Autorise l'impression, à la fin du listing de la configuration mémoire (Taille de la RAM et de la ROM ainsi que les adresses spécifiques de la RAM, de la ROM et du PIA).

Entête : Permet de saisir le texte devant figurer dans l'entête du listing.

15

Orientation : Choix de l'orientation d'impression.

Police de caractère : Choix de la police utilisée pour l'impression.

Ouvrir cette fenêtre avant chaque impression : Si cette case est cochée, chaque demande d'impression se traduit dans un premier temps par l'ouverture de cette fenêtre de configuration. Dans le cas contraire, l'impression est lancée immédiatement en tenant compte des paramètres d'impression déjà définis.

4) Configuration du PIA :

d'impression déjà définis. 4) Configuration du PIA :  Adresse de base du PIA : Pour

Adresse de base du PIA : Pour modifier l'adresse de base du PIA (registres ORA ou DDRA) il faut agir sur le curseur se trouvant à gauche du graphique présentant l'espace mémoire. La valeur exacte de l'adresse est quant à elle affichée en haut de la fenêtre.

Représentation graphique : Elle présente l'espace mémoire et les zones occupées par la RAM, la ROM ou le PIA:

-en blanc l'espace inoccupé.

-en vert l'espace de mémoire vive -en bleu, la mémoire morte -en rouge le PIA Cette figure évite une configuration pouvant conduire à un conflit (une même adresse pour deux périphériques).

IRQA relié à : La sortie IRQA permet de déclencher des interruptions si elle est reliée à une entrée d'interruption du 6809. Avec cette zone de configuration, on peut définir le branchement de la sortie IRQA.

IRQB relié à : Identique à IRQA mais relatif au port B du PIA.

16

Adresse de la carte d'interface : Cette partie n'est accessible qu'après la saisie du code d'accès.

17

III. Le Microprocesseur 6809 de Motorola Le 6809 est un microprocesseur 8 bits à architecture interne 16 bits.

Il dispose de:

- 2 accumulateurs A et B de taille 8 bits et pouvant être concaténés pour former le registre D de 16 bits (D=AB).

-2 registres d'index X et Y qui en tant que pointeurs d'adresses ont une taille identique à celle du bus d'adresse soit 16 bits.

-2 pointeurs de pile S et U. Leur taille est de 16 bits. Elles permettent l'implantation de deux piles parfaitement distinctes. L'une est utilisée par défaut par les instructions de branchement à sous-programme, l'autre est géré par l'utilisateur pour des passages de paramètres par exemple.

-1 pointeur de page DP : sa taille est de 8 bits. il permet de découper l'espace mémoire en 256 pages de 256 octets. Ce registre est utilisé pour l'adressage direct.

-1 registre d'état CC : il permet à l'utilisateur de juger de la validité des traitements effectués par l'utilisateur.

Les interruptions Lorsque la patte RESET du microprocesseur est activée, celui-ci cherche le contenu des adresses $FFFE et $FFFF. Ce contenu forme une adresse 16 bits qui doit correspondre à l'adresse de la première instruction à exécuter.

Remarque MOTO6809 place automatique l'adresse de la première instruction dans ces cases mémoires. Il est toutefois possible de changer cette adresse par une commande DB. RESET correspond à l'interruption la plus prioritaire. Ormis celle-ci le microprocesseur 6809 dispose de 3 autres interruptions matérielles qui sont par ordre de priorité:

-NMI: on ne peut la masquer (l'interdire). L'adresse du sous programme NMI doit se trouver en $FFFC-$FFFD. Lors de l'appel au sous programme, tous les registres sont empilés.

-FIRQ : Elle peut être maquée par le bit F du CC. Un appel au sous programme FIRQ ne provoque qu'une sauvegarde partielle des registres. Le vecteur d'interruption se trouve en $FFF6-$FFF7

-IRQ : Masqué par le bit I du CC. Tous les registres sont sauvés et le vecteur se trouve en $FFF8-$FFF9

Le 6809 dispose également de 3 interruptions logicielle SWI, SWI2, SWI3. Pour ce simulateur seule SWI est reconnue et elle se traduit uniquement par l'équivalent de la pseudo-commande END (voir le jeu d'instruction).

18

IV. Description sommaire du PIA6821 Le PIA (Peripheral Interface Adapter) 6821 est un circuit d'interfaçage parallèle de 2 fois 8 lignes bidirectionnelles. Il dispose de 6 registres internes adressables par 4 adresses différentes :

CRA et CRB : Control Register A et B. Ils sont situés respectivement à Base +1 et Base +3 (où Base est l'adresse de base du PIA) ORA et ORB : Output Register A et B. Situés à Base et Base +2 lorsque les bits 2 de CRA ou CRB sont à 1 DDRA et DDRB :Data Direction Register. Base et Base +2 si les bits 2 de CRA ou CRB sont à 0

Exemple:

Si l'adresse de base du PIA est $8000, le CRA est accessible en $8001 et le CRB en

$8003

En $8000 on accède au ORA si le bit 2 du CRA est à 1 et au DDRA s'il est à 0 En $8002 on accède au ORB si le bit 2 du CRB est à 1 et au DDRB s'il est à 0

DDRA ou DDRB : Il s'agit de deux registres de 8 bits respectivement affectés au port A et au port d'entrée/sortie B. Chaque bit de ces registres défini le sens de transfert des données. Si le bit est à 1 le bit correspondant en ORA ou ORB sera positionné en sortie, s'il est à 0 le bit correspondant de l'ORA est en entrée. Exemple : si DDRA contient la donnée $F0, les 4 bits de poids faible du port A seront des entrées et les 4 bits de poids fort seront des sorties.

ORA ou ORB : Les registres d'entrée/sorties permettent d'affecter des états logiques en sortie du PIA ou de lire les états logiques présents sur les lignes du PIA. Cela se faisant évidemment en cohérence avec le contenu du DDRA ou du DDRB. Exemple : Si le DDRB contient la valeur $F0, le fait de mettre $FF dans le ORB aura pour effet de positionner les 4 lignes de poids fort du port B au niveau logique "1" (les autres lignes restent inchangées). Le fait de lire le contenu de ORB reviendra à avoir les 4 bits de poids fort à 1(en raison de ce qui s'est fait précédemment) tandis que les 4 bits de poids faible possèderont l'état logique affectés sur ces lignes.

CRA ou CRB : Ces deux registres ont un fonctionnement plus complexe.

Exemple pour CRA :

Les bits CRA0 et CRA1 permettent de configurer le signal d'entrée CA1 utilisé pour déclencher une interruption:

Si CRA1=0 le déclenchement se fera sur front descendant sinon sur front montant Si CRA0=0 l'interruption est masqué et seul le bit CRA7 est mis à 1 sinon l'interruption est demandée au µP et le bit CRA7 est mis à 1

CRA2 détermine le registre accédé : ORA si CRA2=1 DDRA si CRA2=0

CRA3, CRA4 et CRA5 sont utilisés pour la configuration de l'entrée/sortie CA2:

Si CRA5=0, CA2 est utilisé comme CA1 avec CRA4 identique à CRA1 et CRA3

19

identique à CRA0 Par contre le bit CRA6 est positionné et non CRA7.

Si CRA5=1, la ligne CA2 est utilisée comme une sortie -CRA4=CRA3=0 : CA2 mise à 0 après une lecture de ORA, mis à 1 lors d'un transition active de CA1 -CRA4=0, CRA3=1 : CA2 mise à 0 après une lecture de ORA, mis à 1 lors du premier front descendant du signal d'horloge après remise à zéro de CA2 (mode impulsionnel) -CRA4=1 : CA2 recopie CRA3

20

V. Jeu d’instruction

Syntaxe :

-une seule instruction (mnémonique+opérande)par ligne, ou une étiquette suivie de ":", ou un commentaire.

-un commentaire peut suivre une instruction à conditions qu'il est précédé du caractère ";" ou "*" et qu'il ne comporte pas le caractère ":"

-les adresses-opérandes auront obligatoirement 4 caractères précédés de "$"

-les données-opérandes auront obligatoirement 2 caractères précédés de "$"

-dans le cas d'un adressage immédiat, il est possible de spécifier l'opérande en binaire : ANDA #%01101001 au lieu de ANDA #$69

-la pseudo-instruction DB sera placée de préférence en début de programme

-la dernière ligne du programme doit comporter la pseudo-instruction END.

Liste des instructions :

ABX : Addition de l'accumulateur B à X ADCA : Addition du contenue mémoire à l'accumulateur A avec la retenue ADCB : Addition du contenue mémoire à l'accumulateur B avec la retenue ADDA : Addition du contenu mémoire à l'accumulateur A ADDB : Addition du contenu mémoire à l'accumulateur B ADDD : Addition du contenu mémoire au registre D ANDA : ET logique entre A et le contenu mémoire ANDB : ET logique entre B et le contenu mémoire ANDCC : ET logique entre CC et le contenu mémoire ASLA : Décalage arithmétique à gauche de A ASLB : Décalage arithmétique à gauche de B ASL : Décalage arithmétique à gauche du contenu mémoire ASRA: Décalage arithmétique à droite de A ASRB: Décalage arithmétique à droite de B ASR: Décalage arithmétique à droite du contenu mémoire BCC : branchement si pas de retenue BCS : branchement si retenue BEQ : branchement si égal à zéro BGE : branchement si supérieur ou égal BGT : branchement si supérieur (signé) BHI : : branchement si supérieur (non signé) BHS : branchement si supérieur ou égal (non signé) BITA : test de bit mémoire avec A BITB : test de bit mémoire avec B BLE : branchement si inférieur ou égal (signé) BLO : branchement si inférieur (non signé) BLS : branchement si inférieur ou égal (non signé) BLT : branchement si inférieur (signé) BMI : branchement si négatif

21

BNE : branchement si différent de zéro BPL : branchement si positif BRA : branchement inconditionnel BRN : non branchement BSR : branchement au sous programme BVC : branchement si pas de débordement BVS : branchement si débordement CLRA : mise à zéro de A CLRB : mise à zéro de B CLR : mise à zéro d'une case mémoire CMPA : comparer A avec le contenu mémoire CMPB : comparer B avec le contenu mémoire CMPD : comparer D avec le contenu mémoire CMPS : comparer S avec le contenu mémoire CMPU : comparer U avec le contenu mémoire CMPX : comparer X avec le contenu mémoire CMPY : comparer Y avec le contenu mémoire COMA : complément à un de A COMB : complément à un de B COM : complément à un du contenu mémoire CWAI : ET logique avec le registre CC puis attente d'interruption DAA : ajustement décimal de A DECA : décrémentation de A DECB : décrémentation de B DEC : décrémentation du contenu mémoire EQU : Equivallence EORA : OU exclusif de A avec le contenu mémoire EORB : OU exclusif de B avec le contenu mémoire EXG : échange de registres INCA : incrémentation de A INCB : incrémentation de B INC : incrémentation du contenu mémoire JMP : saut inconditionnel JSR : saut au sous programme LDA : chargement de A avec le contenu mémoire LDB : chargement de B avec le contenu mémoire LDD : chargement de D avec le contenu mémoire LDS : chargement de S avec le contenu mémoire LDU : chargement de U avec le contenu mémoire LDX : chargement de X avec le contenu mémoire LDY : chargement de Y avec le contenu mémoire LEAS : chargement de l'adresse effective dans S LEAU : chargement de l'adresse effective dans U LEAX : chargement de l'adresse effective dans X LEAY : chargement de l'adresse effective dans Y LSLA : Décalage logique à gauche de A LSLB : Décalage logique à gauche de B LSL : Décalage logique à gauche du contenu mémoire LSRA : Décalage logique à droite de A LSRB : Décalage logique à droite de B

22

LSR : Décalage logique à droite du contenu mémoire MUL : multiplication non signée NEGA : complément à deux de A NEGB : complément à deux de B NEG : complément à deux du contenu mémoire NOP : aucune opération ORA : OU logique entre A et le contenu mémoire ORB : OU logique entre B et le contenu mémoire ORCC : OU logique entre CC et le contenu mémoire PSHS : Empilement de registres sur S PSHU : Empilement de registres sur U PULS : dépilement de registres de S PULU : dépilement de registres de U ROLA : Décalage circulaire à gauche de A ROLB : Décalage circulaire à gauche de B ROL : Décalage circulaire à gauche du contenu mémoire RORA : Décalage circulaire à droite de A RORB : Décalage circulaire à droite de B ROR : Décalage circulaire à droite du contenu mémoire RTI : retour d'interruption RTS : retour de sous programme SBCA : soustraction du contenu mémoire de A avec retenue SBCB : soustraction du contenu mémoire de B avec retenue SEX : Extension de signe de l'accumulateur B à A STA : stockage de A dans la cellule mémoire STB : stockage de B dans la cellule mémoire STD : stockage de D dans la cellule mémoire STS : stockage de S dans la cellule mémoire STU : stockage de U dans la cellule mémoire STX : stockage de X dans la cellule mémoire STY : stockage de Y dans la cellule mémoire SUBA : soustraction du contenu mémoire de l'accumulateur A SUBB : soustraction du contenu mémoire de l'accumulateur B SUBD : soustraction du contenu mémoire de l'accumulateur D SWI : interruption logicielle TFR : transfert de registres TSTA : test de l'accumulateur A TSTB : test de l'accumulateur B TST : test de la case mémoire

Pseudo-Instructions DB : Affectation de données à une case mémoire END : Fin du programme ORG : définition de l'origine d'un segment de programme

23