Tp2 : les modes d’adressage en 6800 - informatique industrie

Informatique Industrielle : TP2 : Les modes d’adressage en 6800

Télécharger PDF

TP2 : Les modes d’adressage en 6800

I / Préparation théorique

I-A / Donner le mode d’adressage dans chaque cas :

Instruction Mode d’adressage
ADD A#$17Immédiat
LDX#$CD12Immédiat étendu
LDA BA21FDirect
LDA B07, XIndexé X
BRAétiquetteRelatif
ADD B#$00Immédiat

I-B / Instructions et modes d’adressage

Instruction Mode d’adressage Registre modifié Nature de l’opérande
LDAA#$25AImmédiat
LDAB#$25BImmédiat
LDX#$0025XImmédiat étendu
LDS#$0025SPImmédiat étendu
LDAA$25ADirect
LDAA$1125ADirect étendu
LDAB$25BDirect
LDAB$1125BDirect étendu
LDAA$25Direct
LDX$0025Direct étendu
LDX$1125XDirect étendu
LDS$1125SPDirect étendu
LDAB$02, XBIndexé X

Commentaire :

  • Les modes immédiat et immédiat étendu chargent directement une valeur en mémoire ou dans un registre.
  • Les modes direct et direct étendu lisent une valeur depuis une adresse mémoire.
  • Les modes indexés permettent d’accéder à une adresse calculée à partir d’un registre d’index (X ou SP).
  • Les instructions BRA et JSR utilisent un mode relatif pour les sauts.

II / Programmation

II-A / Découverte des modes d’adressage

1. Code à exécuter sur l’émulateur Moto6800 :

LDAA #$25
STAA $0000
END

Remarques sur les registres et la mémoire :

  • Le registre A contient la valeur $25 après l’instruction LDAA.
  • L’instruction STAA écrit la valeur $25 à l’adresse mémoire $0000.

2. Modes d’adressage pour chaque instruction :

Instruction Mode d’adressage
LDAA #$25Immédiat
STAA $0000Direct

3. Code pour le registre B :

LDAB #$25
STAB $0000
END

II-A / Code corrigé et exécuté

LDX #$0040
LDAA $25
STAA #$0000
LDAA #$15
STAA $0042
LDAB #$02, X
END

4. Remarques sur le code :

  • L’instruction STAA #$0000 est incorrecte : le mode immédiat ne peut pas être utilisé pour écrire en mémoire.
  • L’instruction STAA $0042 est valide : mode direct pour écrire en mémoire.
  • L’instruction LDAB #$02, X est incorrecte : le mode immédiat ne peut pas inclure un registre.

5. Code corrigé :

LDX #$0040
LDAA $25
STAA $0000
LDAA #$15
STAA $0042
LDAB $02, X
END

6. Tableau des instructions exécutées

Instruction Mode d’adressage Explication
ENDFin du programme, arrêt de l’exécution.

7. Instructions ajoutées

CLR $0000
CLRA

8. Tableau des instructions CLR

Instruction Mode d’adressage Explication
CLR $0000DirectMise à zéro de la mémoire à l’adresse $0000.
CLRAAccumulateurMise à zéro du registre A.

Commentaire :

  • L’instruction CLR agit sur une adresse mémoire ou un registre.
  • L’instruction CLRA agit uniquement sur le registre A.

II-B / Registres et modes d’adressage

1. Registres de données (A et B)

Situation de départ :

  • A : $00
  • B : $00

Instructions et résultats :

LDAA #$25
LDAB $25
LDAA $1125
Instruction Mode d’adressage
LDAA #$25Immédiat
LDAB $25Direct
LDAA $1125Direct étendu

Remarques sur la taille des registres et des données :

  • Les registres A et B sont des registres à 8 bits, capables de stocker des valeurs de $00 à $FF.
  • Les modes direct et direct étendu lisent des valeurs sur 8 bits ou 16 bits selon l’adresse.
  • Les modes immédiat et immédiat étendu permettent de charger des valeurs sur 8 bits ou 16 bits.

2. Registre d’index (X)

Situation de départ :

  • X : $0000

Instructions et résultats :

LDX #$0025
LDX $1125
Instruction Mode d’adressage
LDX #$0025Immédiat étendu
LDX $1125Direct étendu

Remarques sur la taille des registres et des données :

  • Le registre X est un registre à 16 bits, pouvant stocker des valeurs de $0000 à $FFFF.
  • Les modes immédiat étendu et direct étendu permettent de manipuler des adresses sur 16 bits.

3. Registre SP (pointeur de pile)

Situation de départ :

  • SP : $0000

Instructions et résultats :

LDS #$0025
LDS $1125
Instruction Mode d’adressage
LDS #$0025Immédiat étendu
LDS $1125Direct étendu

Remarques sur la taille des registres et des données :

  • Le registre SP est un registre à 16 bits, pouvant stocker des valeurs de $0000 à $FFFF.
  • Les modes immédiat étendu et direct étendu permettent de manipuler des adresses sur 16 bits.

II-C / Application

Code à exécuter et tableau à compléter :

$0EA0 db $AB
$0EA1 db $BC
$0EA2 db $CD
$0EA4 db $DE

SEI
LDAA $0EA1
LDA B $0EA2
INC A
SUB B #$05
LDX $0EA3
JSR $00, X
TAP
CLI
CLC
CLV
SWI
Instruction Mode d’adressage Description de l’opération Contenu modifié
$0EA0 db $ABDéfinition d’une valeur en mémoire à l’adresse $0EA0.Mémoire $0EA0 : $AB
$0EA1 db $BCDéfinition d’une valeur en mémoire à l’adresse $0EA1.Mémoire $0EA1 : $BC
$0EA2 db $CDDéfinition d’une valeur en mémoire à l’adresse $0EA2.Mémoire $0EA2 : $CD
$0EA4 db $DEDéfinition d’une valeur en mémoire à l’adresse $0EA4.Mémoire $0EA4 : $DE
SEIDésactive les interruptions.Flags : I = 1
LDAA $0EA1Direct étenduCharge la valeur $BC depuis l’adresse $0EA1 dans le registre A.Registre A : $BC
LDA B $0EA2Direct étenduCharge la valeur $CD depuis l’adresse $0EA2 dans le registre B.Registre B : $CD
INC AAccumulateurIncrémente le registre A de 1.Registre A : $BD
SUB B #$05ImmédiatSoustrait $05 du registre B et stocke le résultat dans le registre A.Registre A : $BD - $05 = $B8, Registre B inchangé
LDX $0EA3Direct étenduCharge la valeur de l’adresse $0EA3 dans le registre X.Registre X : $0EA3 (valeur non définie dans le code)
JSR $00, XIndexé XAppelle la sous-routine à l’adresse pointée par X + $00.Pile : sauvegarde du PC, X modifié
TAPTransfère le contenu du registre T vers le registre A.Registre A : valeur de T (non définie)
CLIActive les interruptions.Flags : I = 0
CLCMise à zéro du flag C (carry).Flags : C = 0
CLVMise à zéro du flag V (overflow).Flags : V = 0
SWIAppel d’interruption logicielle.Pile : sauvegarde du PC, passage à la sous-routine d’interruption

FAQ

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne