Amstrad Plus Index du Forum

Amstrad Plus
Découverte de la gamme Old et Plus des Cpc d'Amstrad.

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

*****Les Registres d'Index

 
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation
Sujet précédent :: Sujet suivant  
Auteur Message
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Lun 25 Sep - 12:46 (2017)    Sujet du message: *****Les Registres d'Index Répondre en citant

J'ai décidé aujourd'hui de vous parler des registres d'index sur cpc, à savoir, les registres IX et IY du z80.
Plissken, comme d'habitude, spéciale dédicace à toi qui m'a demandé de t'éclairer sur ce point. J'espère que ce sera le cas.

1. Les Registres d'Index, les instructions.

Pour commencer, vous devez savoir que sur z80, les registres d'index sont au nombre de 2. Ce sont des registres 16 bits qui sont utilisés les plus souvent comme registre pointeur. Elles sont composées par le registre HL puis soit le préfixe #DD, pour l'instruction iX ou par le préfixe #FD pour l'instruction iY.

On ne peut pas coupler les instructions iX/iY avec hl, ce qui signifie qu'il n'existe pas d'instruction du style "add hl,ix"


Afin de comprendre le fonctionnement des registres d'index, voyons un exemple concret.

Code:
        ld ix,data
        ld a,(ix+03)
....
data byte "pliSsken"








La position des registres d'index varient de +127 à -128. Ainsi, l'instruction "ld a,(ix+128)" n'existe pas.
Le registre 16 bits IX pointe sur la zone "data". Le registre 8 bits a contient le "S" de "pliSsken" (ix+3)

Ces instructions, ont un réel intérêt mais consomment beaucoup de temps machine, en gros 1us de plus.




Par exemple :

Code:
ld hl,data ; 3 us
ld ix,data ; 4us
..









2. Les instructions d'index 8 bits cachées du z80

Comme toute instruction 16 bits (pile exclue), les registres d'index peuvent également être scindées en 2 instructions 8 bits, et ainsi sont nées sur nos assembleurs "modernes", Orgams, Rasm, de nouvelles instructions dites "cachées".
On aura donc la possibilités d'utiliser 4 "nouveaux" registres 8 bits, nommées ixl, iyl, ixh, et iyh.
Elles sont composées avec les instructions h et l, préfixées par #DD (pour ix) et #FD (pour iy)

On peut notamment utiliser ces instructions afin de "gagner" un registre. Un exemple ?
Voici un code qui pourrait être utilisé pour composer une boucle.

Code:
        ld ixl,100 ; Repeat 100x
loop
....                  ; my code
        dec ixl
        jr nz,loop
        ret







Rasm utilise des mnémoniques différentes ces registres. Roudoudou vous les communiquera.




 
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Publicité






MessagePosté le: Lun 25 Sep - 12:46 (2017)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
snake_plissken


Hors ligne

Inscrit le: 03 Déc 2014
Messages: 281
Localisation: les pont de cé

MessagePosté le: Lun 25 Sep - 13:15 (2017)    Sujet du message: *****Les Registres d'Index Répondre en citant

Merci !

Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 00:05 (2017)    Sujet du message: *****Les Registres d'Index

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | Panneau d’administration | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com