CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

4/2.3.2 - Les mots-clés de l'assembleur Z80 et leur utilisation : Lecture et écriture en mémoireCoding Classeurs Weka
4/2 - Assembleur Z80 : Définitions et rappels de base

4/2.3 - Les mots-clés de l'assembleur Z80 et leur utilisation

II. Lecture et écriture en mémoire

Sur le Z80, la lecture et l'écriture en mémoire sont réalisées par le même code opératoire. Il s'agit de LD (Load) et de ses variantes LDI et LDD.

Reportez-vous à la partie 4 chapitre 2.2 pour être au courant des modes d'adressage utilisés par le Z80, car ce qui suit fait largement appel à ces notions.

Conventions d'écriture :

-----------------------------------------------------------------------
NN    ; représente une donnée ou une adresse sur 16 bits,
-----------------------------------------------------------------------
N    ; représente une donnée sur 8 bits,
-----------------------------------------------------------------------
(VAR)    indique que fa donnée manipulée est le contenu de VAR.
-----------------------------------------------------------------------
d    ; représente un offset sur 8 bits, c'est-à-dire une
    ; valeur qui est ajoutée à une adresse absolue pour
    ; obtenir un adressage dit indexé.
VAL8    ; représente une valeur quelconque sur 8 bits.
-----------------------------------------------------------------------
VAL16    ;représente une valeur quelconque sur 16 bits.
-----------------------------------------------------------------------

* Adressage direct sur 8 bits :

Lecture en mémoire : LD A,(NN)
Les indicateurs ne sont pas affectés

Ecriture en mémoire : LD (NN),A
Les indicateurs ne sont pas affectés

* Adressage indirect sur 8 bits par l'intermédiaire de HL :
Lecture en mémoire : LD X, (HL) où X peut être un des registres suivants : A, B, C, D, E, H, L
Les indicateurs ne sont pas affectés.

Ecriture en mémoire : LD (HL),X où X peut être un des registres suivants : A, B, C, D, E, H,.L
Les indicateurs ne sont pas affectés.

* Adressage indirect sur 8 bits par l'intermédiaire de BC ou DE :
Seul le registre A est utilisable à cet effet.
Lecture en mémoire : LD A, (BC) et LD A,(DE)
Les indicateurs ne sont pas affectés.

Ecriture en mémoire : LD (BC),A et LD (DE),A
Les indicateurs ne sont pas affectés.

* Adressage indirect indexé sur 8 bits :
Lecture en mémoire : LD X, (IX+ d) ou LD X, (lY + d) où X peut être un des registres suivants : A, B, C, D, D, E, H, L
Les indicateurs ne sont pas affectés.

Ecriture en mémoire : LD (IX + d),X ou LD (IY + d),X où X peut être un des registres suivants : A, B, C, D, E, H, L,
Les indicateurs ne sont pas affectés.

* Adressage immédiat indirect sur 8 bits :
Aucun ordre de lecture en mémoire n'est prévu dans ce mode d'adressage.
Ecriture en mémoire : LD (HL), VAL8
Les indicateurs ne sont pas affectés.

* Adressage immédiat indirect indexé sur 8 bits :
Aucun ordre de lecture en mémoire n'est prévu dans ce mode d'adressage.
Ecriture en mémoire : LD (IX+ d), VAL8 et LD (lY + d), VAL8
Les indicateurs ne sont pas affectés.

* Adressage direct sur 16 bits :
Lecture en mémoire : LD XX,(ADR) où XX est un des registres pairs suivants : BC, DE, HL, SP, IX, IY.
Les indicateurs ne sont pas affectés.

Ecriture en mémoire : LD (ADR),XX où XX est un des registres pairs suivants : BC, DE, HL, SP, IX, IY.
Les indicateurs ne sont pas affectés.

* Adressage indirect de mémoire à mémoire : LDI
L'octet pointé par l'adresse HL est chargé à l'adresse pointée par DE,
BC est décrémenté de 1,
HL et DE sont incrémentés de 1.

Utilisation:
Supposons que nous voulions copier 10 octets à partir de l'adresse &7000
en &6000 :

1        ORG   9000H
2       ; LOAD   9000H
3 9000 110065    LD   ;DE,6500H    ;@Destinataire
4 9003 210070    LD   ;HL,7000H    ;@Source
5 9006 010A00    LD   ;BC,10     ;10 Octets
6    ; BOUCLE: EQU   $
7 9009 EDAO    LDI        ;Transfere 1 octet
8 900B 78     LD   ;A,B
9 900C B1    ; OR   ;C      ;BC = 0?
10 900D 20FA    JR   ;NZ.BOUCLE    ;Oui
11       ; END        ;Non

LDD

L'octet pointé par l'adresse HL est chargé à l'adresse pointée par DE,
BC est décrémenté de 1,
HL et DE sont décrémentés de 1.

Page précédente : 4/2.3.1 - Les mots-clés de l'assembleur Z80 et leur utilisation : Usage général et interruptions
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 475 millisecondes et consultée 1784 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.