CODING ★ INITIATION A L'ASSEMBLEUR ★

Assembleur ACPC n°10 - Initiation : Les decalages

AS: PIRATEUR

Salut à tous les petits programmeurs qui veulent devenir grands. Comme vous êtes très nombreux à vous impatienter à cause de . coûts assembleur, sachez, bonnes gens, que pour apprendre à parler le chinois, il faut en connaître quelques mots. C'est ce que nous sommes en train défaire, oui, nous apprenons actuellement les quelques mots indispensables, et nous nous en servirons dans deux ou trois cours. Allez, c'est parti.

Avant tout, je veux vous parler d'une petite soirée que j'ai passée avec Septh, le lundi 31 octobre au soir.Quelques personnes bien informées se diront que ce jour leur rappelle quelque chose. En effet, c'était ce soir mémorable où le grand groupe de Power Métal, Metalcaca turbo y croûtons (Metalica pour les novices), donnait une représentation au Zénith.

Je peux vous assurer que c'était génial, grandiose, fantasmagorique, fabuleux, d'enfer, merveilleux, à faire caca partout, à en pleurer, géant, bien sous tous rapports, impeccable, prodigieux, BCBG, y'a que les funky qui ne changent pas d'avis, un dessert, non; bref, j'en suis resté à moitié sourd pendant deux jours. Alors au début, il y avait plein de monde, et un zoli décor. A un moment, le décor a été détruit par un feu d'artifice couplé avec des explosions â faire péter des tympans normalement constitués.

Ensuite, un des immenses projecteurs qui étaient accrochés au-dessus de la scène s'est désolidarisé d'avec un de ses côtés. Je vous explique pas la panique des mecs qui se trouvaient dans la fosse quand ils ont vu ce petit objet de quelques centaines de kilogrammes se balancer plus ou moins au-dessus de leurs têtes. M'enfin, je ne vais pas répéter tous les adjectifs employés ci-dessus, et le seul mot de la fin est que je suis encore sur les fesses, au demeurant fort douloureuses, cause que j'étais debout sur ma chaise et que j'ai glissé.

L'ESCALE DECALAGES : FAUT PAS CALER

Pour les décalages, il faut avant tout savoir qu'il en existe deux types : les décalages logiques et les décalages arithmétiques. Arithmétiques ne veut pas dire qu'il faut cesser de se trémousser nerveusement dans tous les sens, mais simplement qu'une opération mathématique flotte dans l'air. Qu'est-ce qu'un décalage ? C'est simplement un glissement des bits, dans un sens ou dans un autre. La valeur 0010 simplement décalée à gauche donne 0100. Nous allons avant tout parler du décalage logique, puisqu'il est tout seul. Ce décalage logique effectue bêtement une division par deux de l'opérande, mais attention, le résultat obtenu est modulo deux. C'est-à-dire que, si le bit le plus à droite du nombre sur lequel on travaille (bit zéro) est à un, la division par deux sera fausse, et il faudra tenir compte de la retenue qui sera témoin de l'erreur. Plus simplement, lors d'un décalage logique à droite (puisque je vous dis que c'est le seul), le bit zéro tombe dans la retenue et prend la valeur du bit un, qui prend la valeur du bit deux, qui prend la valeur du bit trois, cela jusqu'au bit sept qui, lui, est mis à zéro. Ainsi, si la valeur de l'opérande est deux (&X10), elle deviendra un après un décalage logique. Comme vous pouvez encore le constater, si la valeur de départ est 5 (&X101), elle deviendra deux (&X10) et la division par deux sera fausse si on ne tient pas compte de la retenue. La mnémonique utilisée pour cette opération est SRL (shift right logical, soit décalage logique à droite) et tes modes d'adressages utilisables sont les suivants.

SRL (HL)
SRL (IX+d) ; destion déplacement huit bits.
SRL (IY+d) ; d est toujours un déplacement huit bits.
SRL r ; r est un des registres A, B, C, D, E, H ou L

Voilà que nous en avons fini avec le décalage logique, pour passer aux arithmétiques (à tes souhaits). Il en existe deux qui agissent dans les deux sens. Le premier, qui ressemble beaucoup au logique à droite, est le décalage arithmétique à gauche (SLA, soit shift left arithmetical). En fait, il fait exactement la même chose que le logique à droite, mais le fait dans l'autre sens, c'est-à-dire qu'il décale des bits les plus faibles vers les plus forts, que le bit zéro est annulé et que le bit sept tombe dans la retenue. C'est simple non ? Mais je vois Zombi, le petit futé du fond de la classe qui dit que cela provoque une multiplication par deux de l'opérande. Eh bien, un bon point pour Zombi qui a eu raison de signaler ce fait. En effet, si le bit sept est à zéro, l'opérande se trouvera multipliée par deux, dans le cas contraire, il faudra tenir compte de la retenue, qui sera là, encore, le juda, de cette infâme erreur. Les modes d'adressage de cette instruction sont :

SLA (HL)
SLA (IX+d) ; destion déplacement huit bits.
SLA (IY+d) ; c'est toujours un déplacement huit bits.
SLA r ; r est un des registres A, B, C, D, E, H ou L.

Ce qui montre que les deux instructions sont bien de la même famille, sans pour autant porter le même nom. Le second décalage arithmétique (purée, que c'est dur à taper ce mot) est le décalage arithmétique à droite noté SRA (shift right aritg... et zut). Il fait lui aussi la même chose que te décalage logique, mais le bit sept ne change pas. Dans le logique, ce bit sept est forcé à zéro alors qu'ici il reste dans son état, tout en étant copié dans le six, qui est copié dans le cinq... et c'est terra de Johnson. Je dois avouer que je n'ai jamais utilisé cette instruction, et qu'elle restera toujours un peu vague pour mon petit cerveau marécageux. iWenfin, elle existe et cela n'est déjà pas maj. SRA est comme la cinquième roue d'une voiture, on ne voit vraiment son intérêt que lorsqu'on en a effectivement besoin. Voici ses modes d'adressages, qui devraient vous rappeler vaguement quelque chose.

SRA (HL)
SRA (IX+d) ; d est un déplacement huit bits.
SRA (IY+d) ; d est toujours un déplacement huit bits.
SRA r ; r est un des registres A,. B, C, D, E, H ou L.

Comme vous pouvez le voir pour la xième fois, c'est encore et toujours les mêmes modes d'adressages. Passons donc maintenant aux rotations.

ROTATIONS DU BOIS

Pour la mère à Nicolas... Je parie que vous ne la connaissez pas cette petite chanson. Ma maman à moi, elle me la chantait souvent pour me bercer, avant de m'endormir, lorsque je n'étais encore qu'un tout petit barbare. C'est pour cela qu'il m'est maintenant impossible de m'endormir avant cinq heures du matin. Ce truc m'a donné des cauchemars. M'enfin, passons, c'est ma vie et vous ne devez pas en avoir grand-chose à faire. Si vous aimez les rotations, vous allez être servis. Il y en a des tonnes. Avant tout, il y a deux rotations simples : RRC et RLC. Rotate left circulary, rotate right circulary, I don't want you, you don't want me, da, da, da !!! (faites appel à votre culture musicale, que diable).
Rotationnationner veut dire tournicoter. Lors d'un décalage, un truc tombe. Si c'est une rotation, cela part d'un bout pour arriver dans l'autre. En clair, dans le cas d'une rotation à gauche, le bit zéro va dans le un, qui va dans le deux, qui va dans le trois, cela jusqu'au six, qui va dans le sept, qui va dans le zéro. On les fait simplement tourner. Quand c'est à droite que cela tourne, c'est le sept qui va dans le six qui va dans le cinq et le zéro se retrouve catapulté dans le sept. Simple comme principe non ? Il faut savoir que le bit qui va d'un bout de l'octet dans l'autre affecte la retenue, ce qui laisse une trace de la rotation opérée. Comme d'habitude, petite liste des modes d'adressages utilisables.

RLC (HL)
RLC (IX+d) ; dest un déplacement huit bits.
RLC (IY+d) ; d est toujours un déplacement huit bits.
RLC r ; r est un des registres A, B, C, D, E, H ou L.
RLCA ; est identique mais plus rapide que RLC A-

Ah, je suis désolé, mais cette petite leçon finit ici et le mois prochain, nous allons nous attaquer à nos premières routines. C'est là que la fête va réellement commencer.

VENI,VIDI,VICI,SI, SI, CHTILDI

Comme je viens de le dire, mais j'aime bien me répéter, c'est le mois prochain que nous allons commencer à nous amuser réellement, avec notre première routine. Alors, si vous avez des préférences pour un petit programme, il faut nous le dire en nous écrivant une petite bafouille. Donc au mois prochain, et bon CPC.

Sined le Banni , A100% n°10 p52-53

Page précédente : Assembleur ACPC n°09 - Initiation : Les ADD / ADC / SUB / SBC

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Assembleur ACPC n°43
» Coding » Assembleur ACPC n°18
» Coding » Assembleur ACPC n°17
» Coding » Assembleur ACPC n°30 - L'homme du scroll mignon
» Coding » Assembleur ACPC n°37 - Les transferts
» Coding » Assembleur ACPC n°38 - Assembleur
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.7-desktop/c
Page créée en 577 millisecondes et consultée 2130 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.