Amstrad Plus Forum Index

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

 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

*****Les Registres d'Index

 
Post new topic   Reply to topic    Amstrad Plus Forum Index -> Programmation Cpc -> Divers
Previous topic :: Next topic  
Author Message
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Mon 25 Sep - 13:46 (2017)    Post subject: *****Les Registres d'Index Reply with quote

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...."


Back to top
Publicité






PostPosted: Mon 25 Sep - 13:46 (2017)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
snake_plissken


Offline

Joined: 03 Dec 2014
Posts: 358
Localisation: les pont de cé
Masculin Gémeaux (21mai-20juin)
Point(s): 26
Moyenne de points: 0.07

PostPosted: Mon 25 Sep - 14:15 (2017)    Post subject: *****Les Registres d'Index Reply with quote

Merci !

Back to top
Display posts from previous:   
Post new topic   Reply to topic    Amstrad Plus Forum Index -> Programmation Cpc -> Divers All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  

Index | Administration Panel | Create a forum | Free support forum | Free forums directory | Report a violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group