COURS EXPO Microprocesseur 6809 (2 GIM ) Mr KHATORY

Documents pareils
DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

GPA770 Microélectronique appliquée Exercices série A

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Codage d information. Codage d information : -Définition-

Cours Informatique 1. Monsieur SADOUNI Salheddine

Exécution des instructions machine

ASR1 TD7 : Un microprocesseur RISC 16 bits

Rappels d architecture

Conception de circuits numériques et architecture des ordinateurs

Programmation assembleur : aperçu

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Architecture des ordinateurs

Les opérations binaires

Ordinateurs, Structure et Applications

Jeu d instructions NIOS II

Représentation d un entier en base b

Logiciel de Base. I. Représentation des nombres

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Structure d un programme

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Architecture des ordinateurs Introduction à l informatique

Licence Sciences et Technologies Examen janvier 2010

Compilation (INF 564)

Informatique Générale

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Microprocesseur + Logiciel

Fascicule u7.05 : Impression de résultat pour visualisation

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Tout savoir sur le matériel informatique

ET LO GICIEL D UN S YS T EME IN FORMATIQUE

Conversion d un entier. Méthode par soustraction

Manuel de référence du langage Exemples Les aventures de Docteur R.

CHAPITRE VI ALEAS. 6.1.Généralités.

PIC : COURS ASSEMBLEUR

Initiation à LabView : Les exemples d applications :

Algorithme. Table des matières

PARAGON Disk Wiper. Guide de l utilisateur. Paragon Technology GmbH, System Programmierung. Copyright Paragon Technology GmbH

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Chapitre 4 : Les mémoires

IV- Comment fonctionne un ordinateur?

Représentation des Nombres

Documentation SecurBdF

IFT1215 Introduction aux systèmes informatiques

Jeux de caracte res et encodage (par Michel Michaud 2014)

Cours 3 : L'ordinateur

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits


Architecture de l ordinateur

Chapitre 10 Arithmétique réelle

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

gestion des processus La gestion des processus

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

2.1 Le point mémoire statique Le point mémoire statique est fondé sur le bistable, dessiné de manière différente en Figure 1.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Les liaisons SPI et I2C

Chap III : Les tableaux

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

CONFIGURATION DE L AUTOMATE SIEMENS

Master d'informatique 1ère année. Réseaux et protocoles. Architecture : les bases

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

UE Programmation Impérative Licence 2ème Année

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

V- Manipulations de nombres en binaire

UGVL : HOMOLOGATION PS ZAC du bois Chaland 6 rue des Pyrénées LISES EVRY Cedex FRANCE Tel Fax

Système binaire. Algèbre booléenne

Claude Delannoy. 3 e édition C++

Bases de programmation. Cours 5. Structurer les données

CM2 L architecture MIPS32

Document de formation pour une solution complète d automatisation Totally Integrated Automation (T I A) MODULE A5 Programmation de la CPU 314C-2DP

ELP 304 : Électronique Numérique. Cours 1 Introduction

Cours d initiation à la programmation en C++ Johann Cuenin

Architecture des ordinateurs

TP a Notions de base sur le découpage en sous-réseaux

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

3. Structure des ordinateurs. 3.1 L' Unité Centrale (UC) ou processeur (Central Processing Unit CPU)

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Introduction à MATLAB R

Structure de base d un ordinateur

Initiation au binaire

Manuel d utilisation pour David GD-04

Une version javascript sera disponible directement dans le cours prochainement.

RECOMMANDATION 30 ASSURANCES AUTOMOBILES : CARTE VERTE

Algorithmique et Programmation, IMA

ROYAUME DU MAROC RESUME THEORIQUE & GUIDE DE TRAVAUX PRATIQUES : TERTIAIRE ET NTIC : SYSTÈME ET RÉSEAUX INFORMATIQUES

Chapitre 1 : La gestion dynamique de la mémoire

Organisation des Ordinateurs

Informatique Industrielle Année Architecture des ordinateurs Note de cours T.Dumartin

Présentation du langage et premières fonctions

PIC 16F84. Philippe Hoppenot

Manuel d'installation de GESLAB Client Lourd

Architecture des ordinateurs. Robin FERCOQ

Fonctionnement et performance des processeurs

TARGET SKILLS PlanningPME

Transcription:

COURS EXPO Microprocesseur 6809 (2 GIM ) Mr KHATORY 1

Naissance du microprocesseur Le 15 novembre 1971 est célébré l'acte de naissance du microprocesseur. Dans une publicité de la revue Electronic News, la firme Intel annonce «A microprogrammable computer on a chip» (un ordinateur programmable dans une puce). 2

Organisation matérielle du 6809 Le microprocesseur 6809 est un processeur 8 bits dont l'organisation interne est orientée 16 bits. Il est fabriqué en technologie MOS et se présente sous la forme d'un boîtier 40 broches. 3

Organisation matérielle du 6809 Le microprocesseur 6809 est un processeur 8 bits dont l'organisation interne est orientée 16 bits. Il est fabriqué en technologie MOS et se présente sous la forme d'un boîtier 40 broches. 0V +5V Horloge Bus de commande Signaux mémoire 39 38 35 34 33 5 6 2 3 4 40 37 36 32 XTAL EXTAL Q E DMA/BREQ BS BA NMI IRQ FIRQ HALT RESET MRDY R / W A0 A15 D0 D7 8 23 24 31 Bus des adresses Bus des données BROCHAGE DU MC 6809 4

Organisation matérielle du 6809 0V +5V Horloge Bus de commande Signaux mémoire 39 38 35 34 33 5 6 2 3 4 40 37 36 32 XTAL EXTAL Q E DMA/BREQ BS BA NMI IRQ FIRQ HALT RESET MRDY R / W A0 A15 D0 D7 8 23 24 31 Bus des adresses Bus des données BROCHAGE DU MC 6809 5

Architecture 6809 Le microprocesseur 6809 comporte NEUF registres internes programmables accessibles par l'utilisateur: Accumulateurs. Manipulation des données 8 bits A 16 bits D 8 bits B Registres d'index X Y Pointeurs de pile U S DP Registre page direct PC Compteur programme CCR Registre d état 6

Architecture 6809 Pointeur de Pile U Pointeur de Pile S Registre A Registre B Registre..d'état CCR UAL Compteur Ordinal PC Registre d'index X Registre d'index Y Registre de page DP 7

Architecture 6809 Accumulateurs : A, B et D Les calculs arithmétiques et les manipulations de données se font grâce aux accumulateurs A et B. Ces deux registres sont interchangeables sauf pour quelques instructions (ABX, DAA) et les opérations sur 16 bits. D= A B (Concaténation de A et B) Registre A Registre B UAL 8

Architecture 6809 Pointeur de Pile U Pointeur de Pile S Registre A Registre B UAL Registre d'index Registres pointeurs: S, U, X, Y X Registre d'index Y Registres d'index : X,Y Ces deux pointeurs d'utilisation parfaitement identique sont utilisés dans les modes d'adressage indexé. Le contenu des ces registres (16 bits) permet de pointer des données. 9

Architecture 6809 Pointeur de Pile U Registre A Registre B Pointeur de Pile S UAL Registre d'index X Registre d'index Registres d'index : X,Y Le pointeur de pile S (Système) est utilisée par le microprocesseur pour gérer le sauvegarde de ses registres internes pendant l'exécution de programmes d'interruptions ou de sous programmes. Le pointeur de pile U (Utilisateur) est utilisé uniquement par le programmeur pour réaliser des passages d'arguments de ou vers des sous programmes. 10

Architecture 6809 Registre A Registre B UAL Compteur Ordinal PC Registre compteur programme PC Le contenu de ce registre (16 bits) détermine l'adresse de l'instruction que doit exécuter le processeur. Il pointe en permanence l'adresse de la prochaine instruction à exécuter. Dans certain cas, ce compteur programme peut être utilisé comme un index. 11

Architecture 6809 Pointeur de Pile U Registre A Registre B Pointeur de Pile S UAL Compteur Ordinal PC Registre d'index X Registre d'index Y DP Registre de page: DP Ce registre (8 bits) est prévu pour étendre les possibilités d'adressage direct à tout l'espace mémoire, sous contrôle du logiciel. 12

Architecture 6809 Pointeur de Pile U Registre A Registre B Pointeur de Pile S CCR UAL Compteur Ordinal PC Registre d'index X Registre d'index Y DP Registre de codes condition: CCR Le registre codes condition (8 bits) définit à tout instant l'état des indicateurs du processeur. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 E F H I N Z V C 13

Architecture 6809 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 E F H I N Z V C C Retenue (Carry) Positionné lors d'une opération arithmétique V Dépassement (overflow) Positionné si le résultat( en complément à deux) d'une opération arithmétique déborde Z Zéro Mis à 1 si le résultat de l'opération précédente est nul N Négatif Indique un résultat négatif. I H Masque d'interruptions IRQ Demi-retenue Lorsqu'il est à 1, masque les interruptions IRQ F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions FIRQ E Etat de sauvegarde Si à 1, tout le contexte du processeur est sauvegardé dans la pile 14

Architecture 6809 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 E F H I N Z V C C Retenue (Carry) Positionné lors d'une opération arithmétique V Dépassement (overflow) Positionné si le résultat( en complément à deux) d'une opération arithmétique déborde Z Zéro Mis à 1 si le résultat de l'opération précédente est nul N Négatif Indique un résultat négatif. I H Masque d'interruptions IRQ Demi-retenue Lorsqu'il est à 1, masque les interruptions IRQ F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions FIRQ E Etat de sauvegarde Si à 1, tout le contexte du processeur est sauvegardé dans la pile 15

Architecture 6809 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 E F H I N Z V C C Retenue (Carry) Positionné lors d'une opération arithmétique V Dépassement (overflow) Positionné si le résultat( en complément à deux) d'une opération arithmétique déborde Z Zéro Mis à 1 si le résultat de l'opération précédente est nul N Négatif Indique un résultat négatif. I H Masque d'interruptions IRQ Demi-retenue Lorsqu'il est à 1, masque les interruptions IRQ F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions FIRQ E Etat de sauvegarde Si à 1, tout le contexte du processeur est sauvegardé dans la pile 16

Architecture 6809 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 E F H I N Z V C C Retenue (Carry) Positionné lors d'une opération arithmétique V Dépassement (overflow) Positionné si le résultat( en complément à deux) d'une opération arithmétique déborde Z Zéro Mis à 1 si le résultat de l'opération précédente est nul N Négatif Indique un résultat négatif. I H Masque d'interruptions IRQ Demi-retenue Lorsqu'il est à 1, masque les interruptions IRQ F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions FIRQ E Etat de sauvegarde Si à 1, tout le contexte du processeur est sauvegardé dans la pile 17

Architecture 6809 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 E F H I N Z V C C Retenue (Carry) Positionné lors d'une opération arithmétique V Dépassement (overflow) Positionné si le résultat( en complément à deux) d'une opération arithmétique déborde Z Zéro Mis à 1 si le résultat de l'opération précédente est nul N Négatif Indique un résultat négatif. I H Masque d'interruptions IRQ Demi-retenue Lorsqu'il est à 1, masque les interruptions IRQ F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions FIRQ E Etat de sauvegarde Si à 1, tout le contexte du processeur est sauvegardé dans la pile 18

Architecture 6809 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 E F H I N Z V C C Retenue (Carry) Positionné lors d'une opération arithmétique V Dépassement (overflow) Positionné si le résultat( en complément à deux) d'une opération arithmétique déborde Z Zéro Mis à 1 si le résultat de l'opération précédente est nul N Négatif Indique un résultat négatif. I Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions IRQ H Demi-retenue Lors de la somme sur (4bits) F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions FIRQ E Etat de sauvegarde Si à 1, tout le contexte du processeur est sauvegardé dans la pile 19

Architecture 6809 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 E F H I N Z V C C Retenue (Carry) Positionné lors d'une opération arithmétique V Dépassement (overflow) Positionné si le résultat( en complément à deux) d'une opération arithmétique déborde Z Zéro Mis à 1 si le résultat de l'opération précédente est nul N Négatif Indique un résultat négatif. I H Masque d'interruptions IRQ Demi-retenue Lorsqu'il est à 1, masque les interruptions IRQ F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions FIRQ E Etat de sauvegarde Si à 1, tout le contexte du processeur est sauvegardé dans la pile 20

Architecture 6809 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 E F H I N Z V C C Retenue (Carry) Positionné lors d'une opération arithmétique V Dépassement (overflow) Positionné si le résultat( en complément à deux) d'une opération arithmétique déborde Z Zéro Mis à 1 si le résultat de l'opération précédente est nul N Négatif Indique un résultat négatif. I H Masque d'interruptions IRQ Demi-retenue Lorsqu'il est à 1, masque les interruptions IRQ F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions FIRQ E Etat de sauvegarde Si à 1, tout le contexte du processeur est sauvegardé dans la pile 21

Architecture 6809 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 E F H I N Z V C C Retenue (Carry) Positionné lors d'une opération arithmétique V Dépassement (overflow) Positionné si le résultat( en complément à deux) d'une opération arithmétique déborde Z Zéro Mis à 1 si le résultat de l'opération précédente est nul N Négatif Indique un résultat négatif. I H Masque d'interruptions IRQ Demi-retenue Lorsqu'il est à 1, masque les interruptions IRQ F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions FIRQ E Etat de sauvegarde Si à 1, tout le contexte du processeur est sauvegardé dans la pile 22

Mode d adressage Le MPU possèdent 59 instructions de base mais en conjonction avec les NEUF modes d'adressage disponibles, on parvient à 1 464 possibilités STRUCTURE D'UNE INSTRUCTION Elle comporte de un à 5 octets ( dépend du mode d'adressage). Le premier (parfois le deuxième) octet indique l'action à effectuer correspond au code de l'instruction, Les octets suivants précisent les opérandes ou sur quelques registres cette action agira. Charger (Load ) dans le registre A Instruction (mnémoniques) Opération Opérande LDA $2000 LDA $2000 code en hexadécimal = B6 2000 ( 3 octets) 23

Mode d adressage Le MPU possèdent 59 instructions de base mais en conjonction avec les NEUF modes d'adressage disponibles, on parvient à 1 464 possibilités 1.mode d'adressage inhérent L'adressage inhérent est utilisé par les instructions qui agissent sur les registres internes du MPU et non sur la mémoire. Il existe deux types de mode d'adressage inhérent : Adressage inhérent simple Le code opération contient toute l'information nécessaire à l'exécution de l'instruction. Ces instructions codées sur un octet sont: ABX, INCB,NEGA,.. Exemple: ABX addition de l'accumulateur B à l'index X. 24

Exemple: ABX addition de l'accumulateur B à l'index X. X (B) + (X) Mode d adressage MPU Mémoire PC D ADR A ADR+1 ADR+ 1 Code Opération de ABX B 14 X 201C 2008 2008 + 14 3A ADR Y S U DP 7 6 5 4 3 2 1 0 CCR Adressage inhérent simple 25

Mode d adressage Adressage inhérent paramétré L'instruction comporte un octet supplémentaire permettant de préciser les opérandes intervenant dans l'instruction. La présence de cet octet supplémentaire est indispensable pour les instructions de type: Échange et transfert de registres; Instructions d'accès aux piles; Attente d'interruption. 26

Mode d adressage Échange et transfert de registres: le premier octet détermine le code opération pur, le second les registres source et destination: Ex :TFR U,S transfert de U dans S MPU Mémoire PC ADR ADR +2 ADR+ 2 D A B X Y S U DP 1000 1000 1F ADR 34 ADR+1 ADR+2 7 6 5 4 3 2 1 0 CCR Adressage inhérent paramétré Échange et transfert des données 27

Mode d adressage Post-octet transfert/échange : code Registre 0000 D 0001 X 0010 Y 0011 U 0100 S 0101 PC 1000 A 1001 B 1010 CCR 1011 DP Code Opération 1F TFR U,S transfert de U dans S Post-Octet 34 28

Mode d adressage Post-octet transfert/échange : 3 4 code Registre 0000 D 0001 X 0010 Y 0011 U 0100 S 0101 PC 1000 A 1001 B 1010 CCR 1011 DP Code Opération 1F TFR U,S transfert de U dans S Post-Octet 34 29

Mode d adressage Instructions d'accès aux piles: le premier octet détermine le code opératoire pur, le post-octet: les registres concernés par l'accès à la pile. Ex :PSHS A, B, X sauvegarde dans la pile de A, B, X MPU Mémoire PC ADR+2 A D B aa bb ADR+ 2 34 ADR 16 ADR + 1 ADR + 2 X Y S U xx ss SSS S -4 DP x x s s SSS S - 4 aa bb xx x x SSS S -4 SSS S -3 SSS S -2 SSS S -1 SSS S 7 6 5 4 3 2 1 0 CCR Adressage inhérent paramétré Instructions d accès aux piles 30

EMPILEMENT Mnémoniques : PSHS liste explicite de registres à empiler ou (implicitement) PSHS #$xy (#$xy) = b7 b6 b5 b4 b3 b2 b1 b0 PC U Y X DP B A CCR Ordre d empilement des registres Si bi (0 i 7) = 1, alors le registre correspondant est empilé dans la pile S. Ainsi la donnée immédiate #$xy permet de sélectionner le(s) registre(s) à sauvegarder. Exemple: PSHS A,B,X PSHS #$16 0 0 0 1 0 1 1 0 X B A aa bb xx x x 31

Mode d adressage Attente d'interruption: le premier octet est associé à l'instruction CWAY, le second sert à masquer ou à valider les interruptions. EX :CWAY # $ FF attente d'interruption MPU Mémoire PC ADR+2 ADR+ 2 3C ADR FF ADR + 1 ADR + 2 D A B aa bb CCR SSS S -C aa SSS S -B X xx x x bb SSS S -A pp SSS S -9 Y S yy ss SSSS -C y y s s SSS S - C xx x x SSS S -8 SSS S -7 U uu Masque INT IRQ DP pp u u yy SSS S -6 y y SSS S -5 uu SSS S -4 CCR CCR 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 x 1 x 1 x x x 1 x x x x x x x x u u SSS S -3 ADR +2 SSS S -2 SSS S -1 Sauvegarde Masque INT FIRQ SSS S Adressage inhérent paramétré Attente d interruption 32

Mode d adressage (RECAP) Mode adressage I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG II. Mode adressage immédiat III. Mode adressage Direct IV. Mode adressage étendu V. Mode adressage étendu indirect VI. Mode adressage relatif court VII. Mode adressage relatif long VIII. Mode adressage indexé IX. Mode adressage indexé indirect Exemple 2. inhérent paramétré a. Echange, transfert registre a.trf U,S b. Accès aux piles b. PSHS A,B,X c. attente interruptions c. CWAI #$FF

Mode d adressage 2. Mode d'adressage immédiat Dans ce mode d'adressage, le code opératoire 8 bit est suivi d'une valeur qui est l'opérande de l'instruction. Ce type d'adressage permet de charger les registres internes du microprocesseur avec la valeur de l'opérande. Le symbole «#» signifie immédiat dans la syntaxe assembleur. Il existe trois types d instructions dans ce mode d adressage : Instructions sur deux octets Le premier octet contient le code opératoire, le second la constante 8 bits. Ce type d instruction est réservé pour travailler sur les registres 8 bits du microprocesseur. 34

Ex : LDA #$15 charger la valeur $15 dans l accumulateur A. Le premier octet contient le code opératoire MPU Mémoire PC D ADR A B ADR+2 15 ADR + 2 Code Opération LDA X Y S $15 86 ADR 15 ADR+1 ADR+2 U DP CCR 7 6 5 4 3 2 1 0 Adressage immédiat Instructions sur deux octets 35

Instructions sur trois octets Le premier octet contient le code opératoire, le second et le troisième contiennent la constante 16 bits. Ce type d instructions est réservé pour travailler sur les registres 16 bits du microprocesseur. Ex : ADDD #$2005 addition du contenu de l accumulateur D et de $2005, le résultat se trouve dans D. 36

Ex : ADDD #$2005 addition du contenu de l accumulateur D et de $2005, le résultat se trouve dans D. MPU Mémoire PC ADR ADR + 3 ADR + 3 Code Opération ADDD D A 3111 B 22 27 $1122+$2005 C3 ADR X Y S 20 05 ADR+1 ADR+2 ADR+3 U DP E F H I N Z V C CCR Adressage immédiat Instructions sur trois octets 37

Instructions sur quatre octets Dans ce type d instruction, le code opératoire utilise deux octets mémoire, la constante également. Le premier octet ($10) est nécessaire pour les instructions : CMPD, CMPS, CMPU, CMPY, LDS, LDY, STY, STS. Ex :LDY #$2008 charger l index Y avec la valeur $2008 38

Ex :LDY # $2008 charger l index Y avec la valeur $2008 MPU Mémoire PC ADR ADR + 4 ADR + 4 Octet supplémentaire D A B $10 10 ADR X Y S U 2008 $2008 8E 20 08 ADR+1 ADR+2 ADR+3 ADR+4 DP E F H I N Z V C CCR Adressage immédiat Instructions sur quatre octets 39

Mode adressage I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG Exemple 2. inhérent paramétré a. Echange, transfert registre a.trf U,S b. Accès aux piles b. PSHS A,B,X c. attente interruptions c. CWAI #$FF II. Mode adressage immédiat 1. sur deux octets 1. LDA #$A0 2. sur trois octets 2. ADDD #$2009 3. sur quatre octets 3. LDY #$10B4 III. Mode adressage Direct IV. Mode adressage étendu V. Mode adressage étendu indirect VI. Mode adressage relatif court VII. Mode adressage relatif long VIII. Mode adressage indexé IX. Mode adressage indexé indirect

Mode d adressage 3. Mode d'adressage direct Le code opératoire (un ou 2 octet) L'opérande ( 1 octet ) : Poids Faible (8 bits) de l Adresse Effective DP PF Le symbole «<» est une directive assembleur qui force l adressage direct. Il existe deux types d instructions dans ce mode d adressage : Instructions sur deux octets Instructions sur trois octets 41

Instructions sur deux octets Le premier octet définit le code opératoire, le second le poids faible de l adresse effective. Ex :LDA $08 ou LDA < $08 chargement de l accumulateur A avec le contenu de $ 2008 ( DP= $20) 42

Instructions sur deux octets Le premier octet définit le code opératoire, le second les poids faible de l adresse effective. Ex :LDA $08 ou LDA < $08 chargement de l accumulateur A avec le contenu de $ 2008 ( DP= $20) MPU Mémoire PC ADR ADR +2 ADR + 2 96 ADR D A B 11 08 ADR+1 ADR+2 X Y S U 11 20 08 DP 20 E F H I N Z V C CCR Adressage direct Instructions sur deux octets 43

Instructions sur trois octets Le code opératoire (sur 2 octet) L'opérande ( 1 octet ) : Poids Faible (8 bits) de l Adresse Effective Ex : LDY $05 ou LDY < $05 chargement du registre Y avec le contenu de $2005/06 (DP=$20) 44

Ex : LDY $05 ou LDY < $05 chargement du registre Y avec le contenu de $2005/06 (DP=$20) MPU Mémoire PC ADR ADR+3 ADR + 3 10 ADR D A B 9E 05 ADR+1 ADR+2 X Y S U DP 1122 20 1122 11 22 20 05 20 06 CCR E F H I N Z V C Adressage direct Instructions sur trois octets 45

Mode adressage I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG Exemple 2. inhérent paramétré a. Echange, transfert registre a.trf U,S b. Accès aux piles b. PSHS A,B,X c. attente interruptions c. CWAI #$FF II. Mode adressage immédiat 1. sur deux octets 1. LDA #$A0 2. sur trois octets 2. ADDD #$2009 3. sur quatre octets 3. LDY #$10B4 III. Mode adressage Direct 1.LDA $40 ou 1. sur deux octets LDA <$40 adresse = $2040 : (DP)=$20 2. sur trois octets 2. LDY $50 Adresse=$3050/51 (DP=30) IV. Mode adressage étendu V. Mode adressage étendu indirect VI. Mode adressage relatif court VII. Mode adressage relatif long VIII. Mode adressage indexé IX. Mode adressage indexé indirect

Mode d adressage 4. Mode d'adressage étendu Le code opératoire (sur 1 ou 2 octet) L'opérande ( 2 octet ) : Adresse Effective Le symbole «>» est une directive assembleur qui force l adressage étendu. Il existe deux types d instructions dans ce mode d adressage Instructions sur trois octets Le premier octet (code opératoire) est suivi de l adresse 16 bits spécifiant l emplacement de l opérande (8 ou 16 bits). Le code opératoire (sur 1 octet) L'opérande ( 2 octet ) : Adresse Effective 47

Ex : LDA $21A5 ou LDA > $ 21A5 chargement de l accumulateur A avec le contenu de l adresse $21A5 MPU Mémoire PC ADR ADR+3 ADR + 3 B6 ADR D A B 11 21 A5 ADR+1 ADR+2 X Y $11 S U 11 21 A5 DP CCR E F H I N Z V C Adressage étendu Instructions sur trois octets 48

Instructions sur quatre octets Mode d'adressage étendu Le code opératoire (sur 2 octet) L'opérande ( 2 octet ) : Adresse Effective Le premier octet est seulement nécessaire pour les instructions qui opèrent sur les pointeurs S et Y et sur les instructions de comparaison CMPU, CMPD. Ex :LDY $2CB5 ou LDY > $2CB5 chargement du registre Y Avec le contenu de $2CB5 49

Ex :LDY $2CB5 ou LDY > $2CB5 chargement du registre Y Avec le contenu de $2CB5/B6 PC X Y S U CCR D A B DP MPU ADR ADR+4 1122 E F H I N Z V C Mémoire Pré-octet ADR + 4 10 ADR BE ADR+1 2C ADR+2 B5 ADR+3 $1122 ADR+4 11 2C B5 22 2C B6 Adressage étendu Instructions sur quatre octets 50

Mode adressage I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG 2. inhérent paramétré Exemple II. Mode adressage immédiat 1. sur deux octets 1. LDA #$A0 2. sur trois octets 2. ADDD #$2009 3. sur quatre octets 3. LDY #$10B4 III. Mode adressage Direct 1.LDA $40 ou 1. sur deux octets LDA <$40 adresse = $2040 : (DP)=$20 2. sur trois octets 2. LDY $50 Adresse=$3050/51 (DP=30) IV. Mode adressage étendu 1. sur trois octets 1. LDB $2145 2. sur quatre octets 2. CMPU $2009 V. Mode adressage étendu indirect VI. Mode adressage relatif court VII. Mode adressage relatif long VIII. Mode adressage indexé IX. Mode adressage indexé indirect

5. Mode d'adressage étendu indirect Ce mode d adressage est identique au mode d adressage étendu mais il possède en plus une indirection. La notation assembleur " [ ]" force l'adressage étendu indirect. Le code opératoire (sur 2 ou 3 octets) L'opérande ( 2 octet ) : Adresse Effective Instructions sur quatre octets Les deux premiers octets déterminent le code opératoire ; code opératoire de l adressage étendu simple suivi d un post-octet déterminant l indirection. Les 3ème et 4ème octets représentent l adresse de transit. 52

Ex :LDA [$2000] chargement de l accumulateur avec le contenu dont l adresse se trouve en $2000 et $2001. MPU Mémoire Post Octet PC D ADR A B ADR+4 11 ADR + 4 A6 9F 20 00 ADR ADR+1 ADR+2 ADR+3 X Y S U $11 30 00 ADR+4 2000 2001 DP E F H I N Z V C 11 3000 CCR Adressage étendu Indirect Instructions sur quatre octets 53

Mode d adressage Instructions sur cinq octets Pour certaines instructions, il est nécessaire d ajouter un pré-octet Cela est nécessaire pour les instructions opérant sur les pointeurs S et Y ($10) et pour les instructions de comparaison CMPU et CMPD ($11). Le reste de la codification est identique au cas précédent. Ex:LDY [$2004] chargement du registre d index Y avec le contenu dont l adresse se trouve en $2004 et $2005. 54

Ex:LDY [$2004] chargement du registre d index Y avec le contenu dont l adresse se trouve en $2004 et $2005. PC D MPU ADR A B ADR+5 Pré Octet ADR + 5 Mémoire 10 AE 9F 20 04 Post Octet ADR ADR+1 ADR+2 ADR+3 ADR+4 X Y S U 1122 $11 22 30 00 2004 2005 DP CCR E F H I N Z V C 11 22 3000 3001 Adressage étendu Indirect Instructions sur cinq octets 55

Mode adressage I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG 2. inhérent paramétré Exemple II. Mode adressage immédiat 1. sur deux octets 1. LDA #$A0 2. sur trois octets 2. ADDD #$2009 3. sur quatre octets 3. LDY #$10B4 III. Mode adressage Direct 1.LDA $40 ou 1. sur deux octets adresse = $2040 : (DP)=$20 2. sur trois octets 2. LDY $50 Adresse=$3050/51 (DP=30) IV. Mode adressage étendu 1. sur trois octets 1. LDB $2145 2. sur quatre octets 2. CMPU $2009 V. Mode adressage étendu indirect 1. sur quatre octets LDA [$2009] 2. sur cinq octets LDY [$2009] VI. Mode adressage relatif court VII. Mode adressage relatif long VIII. Mode adressage indexé IX. Mode adressage indexé indirect

Mode d adressage 6. Mode d'adressage relatif court Ce mode d'adressage est réservé pour les instructions de branchement Ex: Arret EQU $3000 BPL Arret Dans ce cas,bpl fait un test sur le bit N du registre CCR, le branchement a lieu si N=0 ( Résultat de l opération précédente positif) 57

Ex: Arret EQU $3000 BPL ARRET PC MPU ARRET = ADR + 2 + Depl Mémoire ADR ARRET ADR+2 ADR +2 ADR + 2 +Depl 2A ADR D A Depl ADR+1 B ADR+2 X ADR +2 +Depl Y S U ARRET $3000 DP E F H I N Z V C Si N=0 alors il y a branchement CCR 0 Adressage relatif court Le déplacement (Depl) est calculé en fonction de la valeur de ADR par rapport à l étiquette ARRET ($3000). 58

Mode adressage I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG 2. inhérent paramétré Exemple II. Mode adressage immédiat 1. sur deux octets 1. LDA #$A0 2. sur trois octets 2. ADDD #$2009 3. sur quatre octets 3. LDY #$10B4 III. Mode adressage Direct 1.LDA $40 ou 1. sur deux octets adresse = $2040 : (DP)=$20 2. sur trois octets 2. LDY $50 Adresse=$3050/51 (DP=30) IV. Mode adressage étendu 1. sur trois octets 1. LDB $2145 2. sur quatre octets 2. CMPU $2009 V. Mode adressage étendu indirect 1. sur quatre octets LDA [$2009] 2. sur cinq octets LDY [$2009] VI. Mode adressage relatif court VII. Mode adressage relatif long mode d'adressage est réservé pour les instructions de branchement ( (déplacement ± 7 bits) BHS FIN VIII. Mode adressage indexé IX. Mode adressage indexé indirect

7. Mode d'adressage relatif long Ce mode est identique au précédent, il est toujours réservé aux branchements. Les instructions sont codées sur quatre octets, les deux premiers déterminent le code opération, les 3è et 4è octets donnent la valeur signée du déplacement. Le déplacement est codé sur 16 bits. Exemple : ARRET EQU $4000 LBPL ARRET 60

Exemple : ARRET EQU $4000 LBPL ARRET ARRET = ADR + 4 + Depl MPU Mémoire PC X Y S U CCR ADR D A B DP ADR ARRET +4 E F H I N Z V C 0 ADR + +4 4 + Depl ADR + 4 + Depl Si N=0 alors il y a branchement ARRET 10 2A ADR ADR+1 Depl PFO ADR+2 Depl PFA ADR+3 ADR+4 $4000 Adressage relatif long La présence d un pré-octet ($10) permet de différencier l adressage relatif long de l adressage relatif court. 61

Mode adressage I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG 2. inhérent paramétré Exemple II. Mode adressage immédiat 1. sur deux octets 1. LDA #$A0 2. sur trois octets 2. ADDD #$2009 3. sur quatre octets 3. LDY #$10B4 III. Mode adressage Direct 1.LDA $40 ou 1. sur deux octets adresse = $2040 : (DP)=$20 2. sur trois octets 2. LDY $50 Adresse=$3050/51 (DP=30) IV. Mode adressage étendu 1. sur trois octets 1. LDB $2145 2. sur quatre octets 2. CMPU $2009 V. Mode adressage étendu indirect 1. sur quatre octets LDA [$2009] 2. sur cinq octets LDY [$2009] VI. Mode adressage relatif court VII. Mode adressage relatif long VIII. Mode adressage indexé mode d'adressage est réservé pour les instructions de branchement ( (déplacement ± 7 bits) mode d'adressage est réservé pour les instructions de branchement ( (déplacement ± 15 bits) BHS LBPL FIN ARRET IX. Mode adressage indexé indirect

8. Mode d'adressage indexé Le mode d adressage indexé présente l avantage de pouvoir travailler en indirection. Dans ce cas on accède à l adresse effective en transitant par une adresse intermédiaire Registre ADRESSE EFFECTIVE = BASE + DEPLACEMENT La puissance d un mode d adressage indexé est déterminée par l éventail des bases dont on dispose et par toutes les possibilités que l on a. la base peut être soit un des deux registres d index (X ou Y) ( ce qui est normale), mais aussi un des deux pointeurs de pile (U ou S) Ou ce qui est très intéressant, le compteur programme PC lui-même (l adressage est alors, un cas particulier de l adressage relatif). 63

Pour ce qui est du déplacement, il y a de multiples possibilités: celui-ci peut être nul, codé sur cinq, huit ou seize bits, ou variable dans le cas de l utilisation d un accumulateur A, B ou D. LDB $20, X Instruction déplacement Base : X ou Y ou U ou S ou PC Enfin, l adressage indexé offre des possibilités d auto-incrémentation ou décrémentation de 1 ou de 2. LDA, Y+ Toutes ces options sont sélectionnées par le post-octet qui suit le code opératoire. 64

Bit du registre post octet Mode d adressage indexé 7 6 5 4 3 2 1 0 AE=, Base + Déplacement 0 R Déplacement AE=, R 4 bits 1 R 0 0 0 0 0 AE=, R + 1 R 0/1 0 0 0 1 AE=, R ++ 1 R 0 0 0 1 0 AE=, - R 1 R 0/1 0 0 1 1 AE=, - -R 1 R 0/1 0 1 0 0 AE=, R 0 1 R 0/1 0 1 0 1 AE=, R Acc B 1 R 0/1 0 1 1 0 AE=, R Acc A 1 R 0/1 1 0 0 0 AE=, R 7 bits 1 R 0/1 1 0 0 1 AE=, R 15 bits 1 R 0/1 1 0 1 1 AE=, R D (ACC A +Acc B) 1 0/1 1 1 0 0 AE=, PC 7 bits 1 0/1 1 1 0 1 AE=, PC 15 bits post-octet qui suit le code opératoire. 65

Bit du registre post octet Mode d adressage indexé 7 6 5 4 3 2 1 0 AE=, Base + Déplacement 0 R Déplacement AE=, R 4 bits 1 R 0 0 0 0 0 AE=, R + 1 R 0/1 0 0 0 1 AE=, R ++ 1 R 0 0 0 1 0 AE=, - R 1 R 0/1 0 0 1 1 AE=, - -R 1 R 0/1 0 1 0 0 AE=, R 0 1 R 0/1 0 1 0 1 AE=, R Acc B 1 R 0/1 0 1 1 0 AE=, R Acc A 1 R 0/1 1 0 0 0 AE=, R 7 bits 1 R 0/1 1 0 0 1 AE=, R 15 bits 1 R 0/1 1 0 1 1 AE=, R D (ACC A +Acc B) 1 0/1 1 1 0 0 AE=, PC 7 bits 1 0/1 1 1 0 1 AE=, PC 15 bits Les bits 5 et 6 du post octet permettent de définir la base : BASE R b6 b5 Index X 0 0 Index Y 0 1 Pointeur U 1 0 Pointeur S 1 1 Compteur Programme Indifférent, la sélection de la base PC se fait à laide des bits 2 et 3 (1,1) 66

Bit du registre post octet Mode d adressage indexé 7 6 5 4 3 2 1 0 AE=, Base + Déplacement 0 R Déplacement AE=, R 4 bits 1 R 0 0 0 0 0 AE=, R + 1 R 0/1 0 0 0 1 AE=, R ++ 1 R 0 0 0 1 0 AE=, - R 1 R 0/1 0 0 1 1 AE=, - -R 1 R 0/1 0 1 0 0 AE=, R 0 1 R 0/1 0 1 0 1 AE=, R Acc B 1 R 0/1 0 1 1 0 AE=, R Acc A 1 R 0/1 1 0 0 0 AE=, R 7 bits 1 R 0/1 1 0 0 1 AE=, R 15 bits 1 R 0/1 1 0 1 1 AE=, R D (ACC A +Acc B) 1 0/1 1 1 0 0 AE=, PC 7 bits 1 0/1 1 1 0 1 AE=, PC 15 bits le bit 7 définit le rôle du bit4 : b7=0 b4 = bit de signe. b7=1 b4= choix du mode direct (b4=0) ou indirect (b4=1 ); 67

Bit du registre post octet Mode d adressage indexé 7 6 5 4 3 2 1 0 AE=, Base + Déplacement 0 R Déplacement AE=, R 4 bits 1 R 0 0 0 0 0 AE=, R + 1 R 0/1 0 0 0 1 AE=, R ++ 1 R 0 0 0 1 0 AE=, - R 1 R 0/1 0 0 1 1 AE=, - -R 1 R 0/1 0 1 0 0 AE=, R 0 1 R 0/1 0 1 0 1 AE=, R Acc B 1 R 0/1 0 1 1 0 AE=, R Acc A 1 R 0/1 1 0 0 0 AE=, R 7 bits 1 R 0/1 1 0 0 1 AE=, R 15 bits 1 R 0/1 1 0 1 1 AE=, R D (ACC A +Acc B) 1 0/1 1 1 0 0 AE=, PC 7 bits 1 0/1 1 1 0 1 AE=, PC 15 bits 1 R 0/1 1 1 1 1 AE=, Adresse Les bits 0 à 3 définissent le champ du mode d adressage. Nous allons voir toutes les combinaisons possibles. 68

Bit du registre post octet Mode d adressage indexé 7 6 5 4 3 2 1 0 AE=, Base + Déplacement 0 R Déplacement AE=, R 4 bits 1 R 0 0 0 0 0 AE=, R + 1 R 0/1 0 0 0 1 AE=, R ++ 1 R 0 0 0 1 0 AE=, - R 1 R 0/1 0 0 1 1 AE=, - -R 1 R 0/1 0 1 0 0 AE=, R 0 1 R 0/1 0 1 0 1 AE=, R Acc B 1 R 0/1 0 1 1 0 AE=, R Acc A 1 R 0/1 1 0 0 0 AE=, R 7 bits 1 R 0/1 1 0 0 1 AE=, R 15 bits 1 R 0/1 1 0 1 1 AE=, R D (ACC A +Acc B) 1 0/1 1 1 0 0 AE=, PC 7 bits 1 0/1 1 1 0 1 AE=, PC 15 bits Déplacement const Auto Increm/Décrem Déplacement nul Dépl accumul Déplacement const Dépl accumul Dépl PC Les combinaisons possibles pour les modes d adressage: 1 :Déplacement nul 2 :Auto Incrémentation/décrémentation 3 :Déplacement constant 4 :Déplacement accumulateur 5 :Base= compteur Programme PC 69

Bit du registre post octet Mode d adressage indexé 7 6 5 4 3 2 1 0 AE=, Base + Déplacement 0 R Déplacement AE=, R 4 bits 1 R 0 0 0 0 0 AE=, R + 1 R 0/1 0 0 0 1 AE=, R ++ 1 R 0 0 0 1 0 AE=, - R 1 R 0/1 0 0 1 1 AE=, - -R 1 R 0/1 0 1 0 0 AE=, R 0 1 R 0/1 0 1 0 1 AE=, R Acc B 1 R 0/1 0 1 1 0 AE=, R Acc A 1 R 0/1 1 0 0 0 AE=, R 7 bits 1 R 0/1 1 0 0 1 AE=, R 15 bits 1 R 0/1 1 0 1 1 AE=, R D (ACC A +Acc B) 1 0/1 1 1 0 0 AE=, PC 7 bits 1 0/1 1 1 0 1 AE=, PC 15 bits Déplacement const Auto Increm/ Décrem Déplacement nul Dépl accumul Déplacement const Dépl accumul Dépl PC Les combinaisons possibles pour les modes d adressage: 1 :Déplacement nul 2 :Auto Incrémentation/décrémentation 3 :Déplacement constant 4 :Déplacement accumulateur 5 :Base= compteur Programme PC 70

8.1 Mode d'adressage indexé. Déplacement nul. Dans ce mode, le registre pointeur sélectionné contient l adresse effective des données devant être utilisées par l instruction. Ce mode est le mode indexé le plus rapide. Il existe deux types d instructions : Instructions sur deux octets : Le code opératoire est suivi du post-octet précisant les options choisies pour l instruction en cours. Exemple : LDA,X chargement de A avec la valeur dont l adresse est le contenu de l index X. 71

LDA,X chargement de A avec la valeur dont l adresse est le contenu de l index X. MPU Mémoire Postoctet PC ADR ADR +2 ADR + 2 A6 ADR D A B 11 84 ADR+1 ADR+2 X Y S xxxx 11 U DP 11 xxxx E F H I N Z V C CCR Adressage indexé Déplacement nul Dans ce cas le post-octet est égale $84 : b7=1 b4=0 signifie que l adressage est indexé direct b6.b5=0.0 l index est X b3.b2.b1.b0=0.1.0.0 le déplacement est nul. 1 0 0 0 0 1 0 0 X Déplacement nul Adressage indexé direct 72

Instructions sur trois octets pour certains registres du microprocesseur il est nécessaire d ajouter un pré-octet, aux deux octets opératoires proprement dit. Cela mis à part, ce mode est identique au précédent. Exemple : LDY,X chargement de l index Y avec la valeur dont l adresse de base est le contenu de X. 73

VIII. Mode adressage indexé 1. Déplacement NUL : a. Sur deux octets LDB,X a. Sur trois octets LDY, U IX. Mode adressage indexé indirect 2. Auto Incrémentation/décrémentation : a. Sur deux octets LDA,Y+ a. Sur trois octets LDY,--X 3. Déplacement constant : a. Sur ± 4 bits ADDB -14,X a. Sur ± 7 bits LDA $30,X a. Sur ± 15 bits LDB $8000,Y 4.Déplacement accumulateur : a. Déplacement sur 7 bits. Acc A ou B LDA B,X a. Déplacement sur 15 bits. Acc D LEAY D,X 5. Base=Compteur Programme PC a. Déplacement sur 7 bits. LDB $20,PC a. Déplacement sur 15 bits. ADDA $2000,PC a. Etiquette localisée LEAX ETIQ,PC 1. Déplacement nul LDA [,X] 2. Auto Incrémentation/décrémentation ADDB [,U++] 3. Déplacement constant LDA [$2000,X] 4.Déplacement accumulateur LDU [D,PC] 5. Base=Compteur Programme PC LDA [$F000,PC] LDA [TABLE,PC] 74

8.2 Mode d'adressage indexé. Auto-incrémentation/décrémentation On peut obtenir des pré-décrémentations de un ou deux et des postincrémentations de un ou deux. Ces possibilités permettent de gérer facilement une table. Le registre pointeur sélectionné contient l adresse effective des données utilisées par l instruction. 75

Instructions sur deux octets Exemple : LDA,X+ chargement de A avec la valeur dont l adresse est le contenu de X, post-incrémentation par un de X. 76

LDA,X+ chargement de A avec la valeur dont l adresse est le contenu de l index X.post incrémentation par un de X MPU Mémoire Postoctet PC ADR ADR +2 ADR + 2 A6 ADR D A 11 80 ADR+1 B ADR+2 11 X xxxx xxxx+1 Y S U xxxx+1 11 xxxx DP E F H I N Z V C CCR Adressage indexé Auto-incrémentation/Décrémentation(2 octets) Post Octet Dans ce cas le post-octet est égale $80 : b7=1 b4=0 signifie que l adressage est indexé direct b6.b5=0.0 l index est X b3.b2.b1.b0=0.0.0.0 mode post_incrémentation. 1 0 0 0 0 0 0 0 X post_incrémentation Adressage indexé direct NB: Le mode auto-incrémentation/décrémentation par un est utilisé pour gérer des tables de données 77

Instructions sur trois octets : Exemple : LDY, --X chargement de Y avec la valeur dont l adresse de base est le contenu de X 2. MPU Mémoire Postoctet PC ADR ADR+3 ADR + 3 10 ADR D A B AE 83 ADR+1 ADR+2 X xxxx xxxx-2 xxxx -2 ADR+3 Y 1122 S U DP E F H I N Z V C 1122 11 22 xxxx- 2 xxxx - 1 xxxx CCR Adressage indexé Auto-incrémentation/Décrémentaion(3 octets) Dans ce cas le post-octet est égale $83 : b7=1 b4=0 signifie que l adressage est indexé direct b6.b5=0.0 l index est X b3.b2.b1.b0=0.0.1.1 double pré décrémentation. 1 0 0 0 0 0 1 1 Adressage indexé direct NB: Le mode auto-incrémentation/décrémentation par deux est utilisé pour gérer des tables d adresses X Double pré_décrémentation 78

VIII. Mode adressage indexé 1. Déplacement NUL : a. Sur deux octets LDB,X a. Sur trois octets LDY, U IX. Mode adressage indexé indirect 2. Auto Incrémentation/décrémentation : a. Sur deux octets LDA,Y+ a. Sur trois octets LDY,--X 3. Déplacement constant : a. Sur ± 4 bits ADDB -14,X a. Sur ± 7 bits LDA $30,X a. Sur ± 15 bits LDB $8000,Y 4.Déplacement accumulateur : a. Déplacement sur 7 bits. Acc A ou B LDA B,X a. Déplacement sur 15 bits. Acc D LEAY D,X 5. Base=Compteur Programme PC a. Déplacement sur 7 bits. LDB $20,PC a. Déplacement sur 15 bits. ADDA $2000,PC a. Etiquette localisée LEAX ETIQ,PC 1. Déplacement nul LDA [,X] 2. Auto Incrémentation/décrémentation ADDB [,U++] 3. Déplacement constant LDA [$2000,X] 4.Déplacement accumulateur LDU [D,PC] 5. Base=Compteur Programme PC LDA [$F000,PC] LDA [TABLE,PC] 79

8.3 Mode d'adressage indexé. Déplacement constant Dans ce mode d adressage, l adresse effective de l opérande est la somme du déplacement (en complément à deux) et du contenu du registre constituant la base. Le registre de base n est pas modifié. Il existe trois formes d adressage indexé à déplacement constant, suivant la valeur de cette constante. Déplacement sur 4 bits Ce déplacement codé sur 5 bits (en complément à deux) présente l avantage d être contenu dans le post-octet d indexation. Ce qui permet un gain de place mémoire et une exécution plus rapide de cette instruction. Les bits 0 à 4 du post-octet déterminent donc la valeur du déplacement qui peut être de -16 octets en arrière (1 0000) et de + 15 octets en avant (0 1111). Dans ce cas le bit constamment à zéro initialise le bit 4 comme bit de signe. 80

Exemple : ADDB -3,Y addition du contenu d adresse mémoire Y-3 au contenu de l accumulateur B, le résultat est dans B. MPU Mémoire PC ADR ADR+2 ADR + 2 EB ADR D A 3D ADR+1 B bb bb+11 ADR+2 bb+11 X Y yyyy -3 S U DP -3 + yyyy 11 yyyy - 3 yyyy - 2 yyyy - 1 E F H I N Z V C yyyy Post Octet CCR Adressage indexé Déplacement sur 4 bits Le post-octet prend la valeur $3D : Y b7=0 le bit b4 est le bit de signe de déplacement. b6.b5=0.1 index Y. b4.b3.b2.b1.b0=1.1.1.0.1 le déplacement est -3 en complément à deux. 0 0 1 1 1 1 0 1 Déplacement (en compl à 2) = -3 81

Déplacement sur 7 bits Ce déplacement codé sur 8 bits (en complément à deux) est contenu dans un seul octet, placé à la suite du code opératoire proprement dit et du post-octet. Les déplacements possibles sont donc compris entre 128 et + 127 octets. Exemple : LDY $30, U chargement du pointeur Y avec le contenu mémoire dont l adresse de base est le contenu de U + $30 82

Exemple : LDY $30, U chargement du pointeur Y avec le contenu mémoire dont l adresse de base est le contenu de U + $30 MPU Mémoire Postoctet PC ADR ADR+4 ADR + 4 10 ADR D A AE ADR+1 B uuuu+$30 C8 ADR+2 30 ADR+3 X ADR+4 Y 1122 S U uuuu 1122 11 uuuu+$30 DP 22 uuuu+$31 E F H I N Z V C Post Octet CCR Adressage indexé Déplacement sur 7 bits Le post-octet prend la valeur C8 en hexa (1100 1000) : b7=1 b4=0 adressage indexé direct. b6.b5=1.0. index U. b3.b2.b1.b0=1.0.0.0 le déplacement est codé sur 8 bits en compléments à deux. 1 1 0 0 1 0 0 0 U Déplacement ±7 bits Adressage indexé direct 83

Déplacement sur 15 bits Ce déplacement codé sur 16bits (en complément à deux) est contenu dans deux octets placés à la suite de ceux de l instruction (code opératoire + post octet).les déplacements possibles sont donc compris entre 32768 et + 32767 octets. Exemple : LDA $3000, X chargement de l accumulateur A avec le contenu mémoire d adresse X + $3000 84

Exemple : LDA $3000, X chargement de l accumulateur A avec le contenu mémoire d adresse X + $3000 MPU Mémoire Postoctet PC ADR ADR+4 ADR + 4 A6 ADR D A 11 89 ADR+1 B xxxx + $3000 30 00 ADR+2 ADR+3 X xxxx ADR+4 Y S $11 U 11 xxxx +$3000 DP E F H I N Z V C Post Octet CCR Adressage indexé Déplacement sur 15 bits Le post-octet prend la valeur 89 en hexa (1000 1001) : b7=1 b4=0 adressage indexé direct. b6.b5=0.0. index X. b3.b2.b1.b0=1.0.0.1 le déplacement est codé sur 16 bits en compléments à deux. 1 0 0 0 1 0 0 1 X Déplacement ±15 bits Adressage indexé direct 85

VIII. Mode adressage indexé 1. Déplacement NUL : a. Sur deux octets LDB,X a. Sur trois octets LDY, U IX. Mode adressage indexé indirect 2. Auto Incrémentation/décrémentation : a. Sur deux octets LDA,Y+ a. Sur trois octets LDY,--X 3. Déplacement constant : a. Sur ± 4 bits ADDB -14,X a. Sur ± 7 bits LDA $30,X a. Sur ± 15 bits LDB $8000,Y 4.Déplacement accumulateur : a. Déplacement sur 7 bits. Acc A ou B LDA B,X a. Déplacement sur 15 bits. Acc D LEAY D,X 5. Base=Compteur Programme PC a. Déplacement sur 7 bits. LDB $20,PC a. Déplacement sur 15 bits. ADDA $2000,PC a. Etiquette localisée LEAX ETIQ,PC 1. Déplacement nul LDA [,X] 2. Auto Incrémentation/décrémentation ADDB [,U++] 3. Déplacement constant LDA [$2000,X] 4.Déplacement accumulateur LDU [D,PC] 5. Base=Compteur Programme PC LDA [$F000,PC] LDA [TABLE,PC] 86

8.4 Mode d'adressage indexé. Déplacement accumulateur Ce mode d adressage est semblable au précédent à l exception du déplacement qui n est plus codé sur des octets spécifiques mais contenu dans les accumulateurs A,B ou D du microprocesseur.. L adresse effective est donc la somme des registres pointeur et accumulateur spécifiés dans le mnémonique de l instruction Déplacement sur 7 bits. Accumulateurs A ou B Exemple : LDA B, X chargement de l accumulateur A avec le contenu mémoire d adresse X + B 87

Exemple : LDA B, X chargement de l accumulateur A avec le contenu mémoire d adresse X + B MPU Mémoire Postoctet PC ADR ADR+2 ADR + 2 A6 ADR D A 11 85 ADR+1 B bb ADR+2 $11 X xxxx Y S U DP xxxx+bb 11 xxxx+bb Post Octet E F H I N Z V C CCR Adressage indexé Déplacement sur 7 bits. Accu A ou B Le post-octet prend la valeur 85 en hexa (1000 0101) : b7=1 b4=0 adressage indexé direct. b6.b5=0.0. index X. b3.b2.b1.b0=0.1.0.1 le déplacement est égale au contenu de l Acc B (en complément à 2) 1 0 0 0 0 1 0 1 X Déplacement = contenu de B (Compl à2) Adressage indexé direct 88

Déplacement sur 15 bits. Accumulateur D Exemple : LEAY D, X chargement dans l index Y de l adresse effective donnée par la somme D + X PC D A B MPU ADR ADR+2 aa bb ADR + 2 Mémoire 31 8B Postoctet ADR ADR+1 ADR+2 X Y S U DP xxxx aabb + xxxx aabb + xxxx Post Octet CCR E F H I N Z V C Adressage indexé Déplacement sur 15 bits. Accumulateur D Le post-octet prend la valeur 8B en hexa (1000 1011) : b7=1 b4=0 adressage indexé direct. b6.b5=0.0. index X. b3.b2.b1.b0=1.0.1.1 le déplacement = contenu de l Acc D=(A :B )en complément à 2) 1 0 0 0 1 0 1 1 X Déplacement = Contenu D (En compl 2) Adressage indexé direct 89

VIII. Mode adressage indexé 1. Déplacement NUL : a. Sur deux octets LDB,X a. Sur trois octets LDY, U IX. Mode adressage indexé indirect 2. Auto Incrémentation/décrémentation : a. Sur deux octets LDA,Y+ a. Sur trois octets LDY,--X 3. Déplacement constant : a. Sur ± 4 bits ADDB -14,X a. Sur ± 7 bits LDA $30,X a. Sur ± 15 bits LDB $8000,Y 4.Déplacement accumulateur : a. Déplacement sur 7 bits. Acc A ou B LDA B,X a. Déplacement sur 15 bits. Acc D LEAY D,X 5. Base=Compteur Programme PC a. Déplacement sur 7 bits. LDB $20,PC a. Déplacement sur 15 bits. ADDA $2000,PC a. Etiquette localisée LEAX ETIQ,PC 1. Déplacement nul LDA [,X] 2. Auto Incrémentation/décrémentation ADDB [,U++] 3. Déplacement constant LDA [$2000,X] 4.Déplacement accumulateur LDU [D,PC] 5. Base=Compteur Programme PC LDA [$F000,PC] LDA [TABLE,PC] 90

8.5 Mode d'adressage indexé. Base=compteur programme Les paragraphes précédents nous ont permis d aborder les différents modes d adressage indexé utilisant les pointeurs X, Y,S et U comme base. L utilisation du compteur ordinal comme base d indexation impose des restrictions sur les types de déplacements. Seuls les déplacements constants codés sur 8 ou 16 bits (en complément à 2) peuvent être utilisés. 91

Déplacement sur 7 bits. L adresse effective est égale au compteur programme courant plus un déplacement codé sur 8 bits. L instruction est codée sur 3 octets ( code opératoire + post-octet+ déplacement). Exemple : LDA $20, PC chargement de l accumulateur A avec le contenu mémoire dont d adresse est la valeur de PC + $20 92

Exemple : LDA $20, PC chargement de l accumulateur A avec le contenu mémoire dont d adresse est la valeur de PC + $20 PC MPU ADR ADR+ 3 ADR + 3 Mémoire A6 ADR Postoctet D A B 11 $11 8C 20 ADR+1 ADR+2 ADR+3 X Y S U DP ADR + 3+$20 11 ADR + 3+$20 Post Octet CCR E F H I N Z V C Adressage indexé Base=PC Le post-octet prend la valeur 8C en hexa (1000 1100) : b7=1 b4=0 adressage indexé direct. b6.b5 indifferent b3.b2.b1.b0=1.1.0.0 le déplacement sur 8 bits (en complément à 2) 1 0 0 0 1 1 0 0 Indiférent Déplacement sur 8 bits ( en Compl à 2) Adressage indexé direct 93

Déplacement sur 15 bits. L adresse effective est égale au compteur courant plus un déplacement codé sur deux octets. Ce mode d adressage présente l avantage de permettre des déplacements sur tout l espace mémoire du processeur Exemple : ADDA $2000, PC addition du contenu mémoire dont l adresse est la valeur courante du PC+ $2000 et de l accumulateur A, le résultat est dans A. 94

Exemple : ADDA $2000, PC addition du contenu mémoire dont l adresse est la valeur courante du PC+ $2000 et de l accumulateur A, le résultat est dans A. MPU Mémoire Postoctet PC D A ADR ADR+ 4 aa aa + 11 ADR + 4 AB 8D ADR ADR+1 B aa+11 20 00 ADR+2 ADR+3 X ADR+4 Y S U DP ADR + 4+$2000 11 ADR + 4+$2000 Post Octet E F H I N Z V C CCR Le post-octet prend la valeur 8D en hexa (1000 1101) : b7=1 b4=0 adressage indexé direct. b6.b5 indifferent b3.b2.b1.b0=1.1.0.1 le déplacement sur 16 bits (en complément à 2) Adressage indexé Déplacement const sur 15 bits 1 0 0 0 1 1 0 1 Indiférent Déplacement sur 16 bits ( en Compl à 2) Adressage indexé direct 95

Étiquette localisée. Dans ce cas, la syntaxe assembleur n utilise pas directement un déplacement mais une étiquette localisée située à 128 octets de l instruction suivante (déplacement sur 8 bits) ou n importe où sur l espace mémoire du microprocesseur (déplacement sur 16 bits). Comme précédemment l adresse effective est égale au compteur programme courant plus un déplacement codé sur 8 ou 16 bits. L instruction est codée sur trois ou quatre octets. La syntaxe assembleur contient le mnémonique de l instruction, le nom de l étiquette localisée plus la base. L assembleur calcule la valeur du déplacement en fonction de la position de l étiquette. 96

Exemple : LEAX ETIQ, PC chargement du registre d index X avec l adresse effective qui est donnée par la position de l étiquette par rapport au compteur programme courant. Dans cet exemple on prend : ADR=$2000 ETIQ=$2015 xxxx=0011 PC MPU ADR ADR+4 ADR + 4 Mémoire 30 ADR Postoctet D A 8D ADR+1 B 00 ADR+2 11 ADR+2 X Y xxxx= 0011 xxxx= ETIQ (ADR+4) ADR+2 S U ETIQ DP E F H I N Z V C CCR Adressage indexé Etiquette localisée Le post-octet prend la valeur 8D en hexa (1000 1101) : b7=1 b4=0 adressage indexé direct. b6.b5 indifferent b3.b2.b1.b0=1.1.0.1 le déplacement sur 16 bits (en complément à 2) 1 0 0 0 1 1 0 1 Indiférent Déplacement sur 16 bits ( en Compl à 2) Adressage indexé direct 97

Mode adressage VIII. Mode adressage indexé 1. Déplacement NUL : a. Sur deux octets LDB,X a. Sur trois octets LDY, U IX. Mode adressage indexé indirect 2. Auto Incrémentation/décrémentation : Exemple a. Sur deux octets LDA,Y+ a. Sur trois octets LDY,--X 3. Déplacement constant : a. Sur ± 4 bits ADDB -14,X a. Sur ± 7 bits LDA $30,X a. Sur ± 15 bits LDB $8000,Y 4.Déplacement accumulateur : a. Déplacement sur 7 bits. Acc A ou B LDA B,X a. Déplacement sur 15 bits. Acc D LEAY D,X 5. Base=Compteur Programme PC a. Déplacement sur 7 bits. LDB $20,PC a. Déplacement sur 15 bits. ADDA $2000,PC a. Etiquette localisée LEAX ETIQ,PC 1. Déplacement nul LDA [,X] 2. Auto Incrémentation/décrémentation ADDB [,U++] 3. Déplacement constant LDA [$2000,X] 4.Déplacement accumulateur LDU [D,PC] 5. Base=Compteur Programme PC LDA [$F000,PC] LDA [TABLE,PC]

9. Mode d'adressage indexé indirect Le mode d adressage indexé présente l avantage de pouvoir travailler en indirection. Dans ce cas on accède à l adresse effective en transitant par une adresse intermédiaire. On peut donc écrire : Adresse effective = contenu mémoire dont l adresse de base est la somme de l index + le déplacement. La syntaxe assembleur utilisée pour définir l indirection est la même que celle de l adressage étendu : «[ ]» Les instructions sont codés sur deux octets, le premier définit le code opératoire (identique à l indexé simple), le second le type de déplacement, le type de base et l indirection. 99

9.1 Mode d'adressage indexé indirect. Déplacement nul Exemple : LDA [, X] chargement de A avec le contenu mémoire dont l adresse est le contenu de (X,X+1). MPU Mémoire Post Octet PC ADR ADR+2 ADR + 2 A6 94 ADR D A B 11 ADR+1 ADR+2 X xxxx Y S U DP 11 20 08 xxxx xxxx+1 E F H I N Z V C 11 2008 CCR Adressage indexé Indirect Déplacement nul Le post-octet prend la valeur 94 en hexa (1001 0100) : b7=1 b4=1 adressage indexé indirect. b6.b5 =0.0 index X b3.b2.b1.b0=0.1.0.0 déplacement nul 1 0 0 1 0 1 0 0 X Déplacement nul 100 Adressage indexé indirect

9.2 Mode d'adressage indexé indirect. Auto-incrémentation/décrémentation Le mode indexé travaille seulement en auto-incrémentation/décrémentation par deux, ce qui est normal car ce mode permet de gérer des adresses Exemple : ADDA [, U++] addition de l accumulateur A et du contenu mémoire dont l adresse se trouve pointée par U,U+1, le résultat est dans A. 101

Exemple : ADDA [, U++] addition de l accumulateur A et du contenu mémoire dont l adresse se trouve pointée par U,U+1, le résultat est dans A. MPU Mémoire Post Octet PC D A ADR ADR+2 aa+11 ADR + 2 AB D1 ADR ADR+1 ADR+2 B aa+11 X Y S U uuuu 20 08 uuuu uuuu+1 DP E F H I N Z V C uuuu+2 11 2008 CCR Adressage indexé Indirect Auto-incrémentation/décrémentation Le post-octet prend la valeur D1 en hexa (1101 0001) : b7=1 b4=1 adressage indexé indirect. b6.b5 =1.0 index U b3.b2.b1.b0=0.0.0.1 post auto-incrémentation de 2 1 1 0 1 0 0 0 1 U Post auto_incrémentation de 2 102 Adressage indexé indirect

9.3 Mode d'adressage indexé indirect. Déplacement constant Les déplacements constants sont codés sur 8 ou 16 bits (en complément à deux). L indirection n est pas possible pour un déplacement codé sur 5 bits. Exemple : LDA [$2000, X] chargement de l accumulateur A avec le contenu mémoire dont l adresse est pointée par X+ $2000. 103

Exemple : LDA [$2000, X] chargement de l accumulateur A avec le contenu mémoire dont l adresse est pointée par X+ $2000. MPU Mémoire Post Octet PC ADR ADR+4 ADR + 4 A6 99 ADR ADR+1 X D A B xxxx 11 $11 20 00 ADR+2 ADR+3 ADR+4 Y S U xxxx +$2000 30 00 xxxx+2000 xxxx+2001 DP E F H I N Z V C 11 3000 CCR Adressage indexé Indirect Déplacement constant Le post-octet prend la valeur 99 en hexa (1001 1001) : b7=1 b4=1 adressage indexé indirect. b6.b5 =0.0 index X b3.b2.b1.b0=1.0.0.1 déplacement constant sur 15 bits 1 0 0 1 1 0 0 1 X Dépl constant sur ±15 bits Adressage indexé indirect 104

9.4 Mode d'adressage indexé indirect. Déplacement accumulateur Comme dans l adressage indexé simple, le déplacement est contenu dans les accumulateurs A, B ou D( en complément à deux) Exemple : LDU [D, Y] chargement de U avec le contenu dont l adresse mémoire est pointée par le contenu de Y + celui de D. 105

Exemple : LDU [D, Y] chargement de U avec le contenu dont l adresse mémoire est pointée par le contenu de Y + celui de D. MPU Mémoire Post Octet PC D A B ADR ADR+2 aa bb ADR + 2 EE BB ADR ADR+1 ADR+2 X Y S U CCR yyyy 1122 DP E F H I N Z V C yyyy + aabb 1122 30 yyyy+aabb 00 yyyy+aabb+1 11 3000 22 3000+1 Adressage indexé Indirect Déplacement accumulateur Le post-octet prend la valeur BB en hexa (1011 1011) : b7=1 b4=1 adressage indexé indirect. b6.b5 =0.1 index Y b3.b2.b1.b0=1.0.1.1 déplacement accumulateur D (en complément à deux) 1 0 1 1 1 0 1 1 Y Adressage indexé indirect Dépl accumulateur D En compl à 2 106

9.5 Mode d'adressage indexé indirect. Base= compteur programme Si la base est le compteur programme lui-même, les déplacements sont codés sur 8 ou 16 bits en complément à deux, l indirection est possible dans ces deux cas. Exemple : LDA [$F000, PC] chargement de A avec la valeur dont l adresse est pointée par la valeur courante du PC + $F000. 107

Exemple : LDA [$F000, PC] chargement de A avec la valeur dont l adresse est pointée par la valeur courante du PC + $F000. PC D A B MPU ADR ADR+4 11 ADR + 4 Mémoire A6 9D F0 00 ADR Post Octet ADR+1 ADR+2 ADR+3 ADR+4 X Y S U CCR DP E F H I N Z V C ADR+4+$F000= MMmm 11 PP MMmm pp MMmm+1 11 PPpp Adressage indexé Indirect Base= compteur programme Le post-octet prend la valeur 9D en hexa (1001 1101) : b7=1 b4=1 adressage indexé indirect. b6.b5 =indifferent b3.b2.b1.b0=1.1.0.1 déplacement codé sur 15 bits. 1 0 0 1 1 1 0 1 indiférent Dépl codé sur ± 15 bits Adressage indexé indirect 108

Comme pour l adressage indexé direct, on peut utiliser dans ce mode non pas un déplacement mais une étiquette localisée, pour ce qui est de la syntaxe assembleur. Exemple : LDA [TABLE, PC] chargement de A avec la valeur dont l adresse est pointée par TABLE. 109

Exemple : LDA [TABLE, PC] chargement de A avec la valeur dont l adresse est pointée par TABLE. MPU Mémoire Post Octet PC ADR ADR+4 ADR + 4 A6 9D ADR ADR+1 D A B 11 DD dd ADR+2 ADR+3 ADR+4 X TABLE-(ADR+4) =DDdd Y S U PP pp TABLE DP E F H I N Z V C 11 11 PPpp CCR Adressage indexé Indirect PC & (étiquette localisée) Le post-octet prend la valeur 9D en hexa (1001 1101) : b7=1 b4=1 adressage indexé indirect. b6.b5 =indifferent b3.b2.b1.b0=1.1.0.1 déplacement codé sur 15 bits. 1 0 0 1 1 1 0 1 indiférent Dépl codé sur ± 15 bits Adressage indexé indirect 110

Conclusion Le microprocesseur 6809 offre de nombreuses possibilités d adressage indexé (simple ou indirect) suivant le type de base et de déplacement choisi. Le tableau suivant résume toutes ces possibilités : LDB $20, X Instruction déplacement Base : X ou Y ou U ou S ou PC Déplacement Nul 4 bits 7 bits 15 bits Acc A Acc B Acc D Pré- auto décrémentation de un : de deux : de un : Post_auto décrémentation de deux : «,-» «,--» «, +» «,-- ++» Index X Index Y Pointeur S Pointeur U PC X X X X X X X X X Tableau : combinaisons des adressages indexé : indexé avec indirection possible X : indexé avec indirection impossible : pas d adressage indexé 111

Conclusion Le microprocesseur 6809 offre de nombreuses possibilités d adressage indexé (simple ou indirect) suivant le type de base et de déplacement choisi. Le tableau suivant résume toutes ces possibilités : LDB $20, X Instruction déplacement Base : X ou Y ou U ou S ou PC Déplacement Nul 4 bits 7 bits 15 bits Acc A Acc B Acc D Pré- auto décrémentation de un : de deux : de un : Post_auto décrémentation de deux : «,-» «,--» «, +» «,-- ++» Index X Index Y Pointeur S Pointeur U PC X X X X X X X X X Tableau : combinaisons des adressages indexé : indexé avec indirection possible X : indexé avec indirection impossible : pas d adressage indexé 112

Conclusion Le microprocesseur 6809 offre de nombreuses possibilités d adressage indexé (simple ou indirect) suivant le type de base et de déplacement choisi. Le tableau suivant résume toutes ces possibilités : LDB $20, X Instruction déplacement Base : PC Déplacement Nul 4 bits 7 bits 15 bits Acc A Acc B Acc D Pré- auto décrémentation de un : de deux : de un : Post_auto décrémentation de deux : «,-» «,--» «, +» «,-- ++» Index X Index Y Pointeur S Pointeur U PC X X X X X X X X X Tableau : combinaisons des adressages indexé : indexé avec indirection possible X : indexé avec indirection impossible : pas d adressage indexé 113

FIN DE LA 1 ère Partie Merci de votre attention 114

Classification des instructions 115

Classification des instructions Les instructions du 6809 sont classées par groupe (5) : I. Instructions de traitement des données II. Instructions de transfert III. Instructions de test et de branchements IV. Instruction opérant sur les pointeurs V. Traitement des interruptions 116

Classification des instructions I. Instructions de traitement des données Les instructions de traitement des données se répartissent en Quatre catégories: 1. Les instructions arithmétiques 2. Les instructions de rotation et décalage 3. Les instructions logiques 4. Les instructions d'incrémentation-décrémentation, mise à 0, complémentation 117

I. Instructions de traitement des données 1. Les instructions arithmétiques Instruction ADD ADC ABX DAA MUL SUB SBC SEX Fonction Addition du contenu mémoire à un accumulateur Addition du contenu mémoire à un accumulateur avec retenue Addition de l'accumulateur B à X(Non signé) Ajustement décimal de l'accumulateur A Multiplication de A par B (Non signé) Soustraction du contenu mémoire à l'accumulateur Soustraction du contenu mémoire à l'accumulateur avec retenue Extension de signe de l'accumulateur B à l'accumulateur A 118

I. Instructions de traitement des données 2. Les instructions de rotation et décalage Instruction ASR LSL ou ASL LSR ROL ROR Fonction Décalage arithmétique à droite Décalage logique ou arithmétique à gauche Décalage logique à droite Rotation à gauche Rotation à droite N.B: Ces instructions opèrent sur des déplacements de 1 bit seulement 119

I. Instructions de traitement des données 3.les instructions logiques Ces instructions portent toutes sur des données de 8 bits Instruction AND EOR OR Fonction «ET logique» entre mémoire et registre interne «OU Exclusif» entre mémoire et registre interne «OU logique» entre mémoire et registre interne 120

I. Instructions de traitement des données 4 Instructions d incrémentation-décrémentation, mise à 0, complémentation Ces instructions (Sauf NOP) agissent sur une seule opérande. Instruction CLR DEC INC NOP COM NEG Fonction Remise à zéro du contenu mémoire ou de l accumulateur Décrémentation du contenu mémoire ou de l accumulateur Incrémentation du contenu mémoire ou de l accumulateur Pas d opération. Incrémentation du compteur programme Complément à un du contenu mémoire ou de l accumulateur Complément à deux du contenu mémoire ou de l accumulateur 121

II Instructions de transfert des données On peut classer les instructions de transfert des données en TROIS catégories : 1. Instructions opérant sur les registres internes et la mémoire 2. Instructions de transfert opérant sur les pointeurs 3. Instructions opérant seulement sur les registres internes du microprocesseur 1. Instructions opérant sur les registres internes et la mémoire Ce type d instructions est très employé. Les transferts mémoire, registre interne du microprocesseur se font su 8 (A, B) ou sur 16 bits(d, X, Y, S, U). Seuls les registres PC et DP ne sont pas accessibles directement. Instruction LD ST Fonction Chargement des registres internes du MPU Mise en mémoire des registres internes du MPU 122

II Instructions de transfert des données On peut classer les instructions de transfert des données en TROIS catégories : 1. Instructions opérant sur les registres internes et la mémoire 2. Instructions de transfert opérant sur les pointeurs 3. Instructions opérant seulement sur les registres internes du microprocesseur 2. Instructions de transfert opérant sur les pointeurs Pour accéder aux piles du 6809, il existe deux instructions «d empilage» et de «dépilage». Ces instructions transfèrent n importe quel registre interne du microprocesseur. Instruction PSH PUL Fonction Empilement de(s) registre(s) sur la pile Dépilement de(s) registre(s) 123

II Instructions de transfert des données On peut classer les instructions de transfert des données en TROIS catégories : 1. Instructions opérant sur les registres internes et la mémoire 2. Instructions de transfert opérant sur les pointeurs 3. Instructions opérant seulement sur les registres internes du microprocesseur 3.Instructions opérant seulement sur les registres internes du microprocesseur Ces instructions permettent tous les transferts possibles entre les registres internes du microprocesseur. Instruction EXB TRF Fonction Echange du contenu de deux registres Transfert de registre à registre 124

III Instructions de tests et branchements Ces instructions peuvent se répartir en trois catégories distinctes : 1. Instructions de test et de comparaison 2. Instructions de test et de branchement ; 3. Instructions de saut et branchement 1. Instructions de test et de comparaison Ces instructions sont utilisées pour réaliser des tests de bits et des comparaisons. Les contenus mémoire et accumulateur ne sont pas modifiés. Le résultat de ces instructions agit uniquement sur les indicateurs du registre d état, il n entraîne pas de rupture de séquence( aucun branchement n est effectué). Instruction BIT Fonction Test de bits entre accumulateur et contenu mémoire CMP Comparaison du contenu mémoire (1 ou 2 octets) avec un registre interne (8 ou 16 bits) du microprocesseur TST Test du contenu mémoire ou d un accumulateur 125

III Instructions de tests et branchements 2. Instructions de test et de branchement Ces instructions permettent de réaliser des branchements conditionnels. Les tests s effectuent sur 4 indicateurs du registre d état : - N : Bit de signe ou bit «négatif» (bit 3 du CCR) ; - Z : indique si le résultat des opérations est égal ou différent de zéro (bit 2 du CCR) ; - V : indicateur de débordement (bit 1 du CCR) ; - C : bit de retenue (bit 0 du CCR) Instruction Fonction (L)BCC ou (L)BHS Branchement si pas de retenue (L)BCS ou (L)BLO Branchement si retenue (L) BEQ Branchement si égale à zéro (L)BNE Branchement si différent de zéro (L)BGE Branchement si supérieur ou égal à zéro (L)BLT Branchement si inférieur (signé) (L)BGT Branchement si supérieur (signé) (L)BLE Branchement si inférieur ou égal (signé) (L)BHI Branchement si supérieur (non signé) (L)BLS Branchement si inférieur ou égal (non signé) (L)BMI Branchement si négatif (L)BPL Branchement si positif (L)BVC Branchement si pas de débordement (L)BVS Branchement si débordement N.B : La lettre (L) précédant le mnémonique précise qu il s agit d un déplacement long (16 bits). 126

III Instructions de tests et branchements 3. Instructions de saut et branchement Ces instructions entraînent des ruptures de séquence, sans conditions préalables. Il faut toutefois différencier les instructions de branchement qui sont suivies d un déplacement long ou court, des instructions de saut qui sont, elles, suivies de l adresse effective. Instruction (L)BRA (L)BRN (L) BSR JMP JSR RTS Fonction Branchement inconditionnel Non branchement (non opération) Branchement à un sous programme Saut inconditionnel à une adresse effective Saut à un sous programme Retour de sous programme 127

IV Instructions opérant sur les pointeurs Le processeur calcule une adresse effective en fonction du mode d adressage spécifique(toujours indexé) puis charge cette valeur dans le pointeur (X, Y, S ou U). Instruction LEA Fonction Chargement d un registre pointeur avec une adresse effective V. Traitement des interruptions Il existe sur le 6809, trois interruptions logicielles et trois interruptions matérielles. Instruction CWAY SYNC RTI SW1/SW2/SW3 Fonction Validation puis attente d une interruption Synchronisation du logiciel avec une ligne d interruption Retour du sous programme d interruption Interruption logicielle 128

FIN Merci de votre attention 129