CODINGHEBDOGICIEL ★ FORMATION A L'ASSEMBLEUR PRATIQUE ★

La page pédagogique d'hebdogiciel 117 - Registres et AdressageCoding Hebdogiciel

Langage machine Z80

ASSEMBLEUR MSX

Bon, il paraît évident que l'action de programmer consiste à remplir intelligemment les octets de notre chère RAM. Des lors, le microprocesseur peut, sous votre ordre et â partir de l'adresse que vous lut indiquez, lire la RAM en s'effbrçant de comprendre et d'exécuter les ordres que vous avez tenté de lui transmettre par cet intermédiaire. C'est la raison d'être de la fonction USR du Basic. Vous avez certainement constaté que le lancement d'un programme en LM ( Langage Machine ) a partir de l'adresse &Hxxxx, s'effectue sur votre MSX par : DEFUSRx = &Hxxxx : X - USRx(X) (Cf. Manuel de référence, on est pas là pour vous donner des cours de Basic). Mais qu'est-ce qu'un programme en "langage machine" ?

C'est un programme qui contient une suite d'instructions élémentaires, directement compréhensibles par le microprocesseur. Ces instructions codées sous forme Hexadécimale, puis implantées en mémoire, sont appelées les "codes machina". Justement, vous avez entendu dire qu'un programme nommé "assembleur' est censé simplifier la création et l'écriture d'un programme en LM. De quelle manière 7 Par l'emploi d'instructions symboliques compréhensibles, formées d'abréviations de mots anglais et appelés MNEMONIQUES. Exemple : DEC pour décrément, INC pour Incrément, LD pour LOAD etc. Ces mnémoniques composent le fameux langage "assembleur"' Au fait, il ne faut pas confondre "assembleur du 280" désignant le langage de programmation, avec "un assembleur 280", désignant un programme destiné à permettre la programmation dans ce langage. Un programme composé de mnémoniques est appelé "programme source" et l'action qui consiste â transformer les mnémoniques d'un programme source, en valeurs compréhensibles par le 280, est appelée ASSEMBLAGE (et l'action Inverse DESASSEMBLAGE). Un programme ainsi généré, est appelé "programme objet". Un "assembleur" est un programme qui permet à l'aide d un éditeur, la saisie de votre programme source, pour ensuite en effectuer l'assemblage et l'implantation. Bien qu'il soit possible de réaliser soi-même le boulot d'un assembleur (en utilisant une table de correspondance mnémoniques/codes machine), il est quand même souhaitable d'en acquérir un au plus lot : son emploi facilité considérablement l'apprentissage et la pratique de ce type de programmation.

Pour commander directement au ZOO par l'intermédiaire du langage machine, vous conviendrez qu'il est indispensable de comprendre comment ce célèbre microprocesseur manipule les données en mémoire. Ces dernières vont transiter et être traitées par l'intermédiaire de registres* qui sont, si vous voulez, des emplacements de stockage temporaire qui fonctionnent de manière très précise. Ces registres sont des esclaves à votre service qui, bien dirigés, se chargent de tous les fastidieux calculs nécessaires au bon fonctionnement de vos programmes. Ces registres donc, sont différenciés par des lettres.

Petite présentation :
REGISTRES DE 8 BITS : A. B. C. D, E, F, H. L , A', B', C'. D' , E' F', H', L'.
REGISTRES DE 16 BITS : IX, IY, I, R, PC, SP

A noter que l'on peut grouper par paire des registres de 8 bits, pour former des registres de 16 bits: exemple : AF, BC, DE, HL (les registres primes sont appelés "registres auxiliaires"). Laissons de coté (pour l'instant bien sur) les registres auxiliaires, les registres d'index (IX et IY), les registres propres au système (I, R, PC. SP), pour nous intéresser à l'étude des registres suivants : A, B. C. D. E, F, H, L de 8 bits. Le Jeu des mnémoniques, par ses limites, leur assigne des usages particuliers.
A est appelé accumulateur, c'est le principal instrument de travail du 280. utilisé pour les opérations logiques ou arithmétiques. BC  est   principalement   utilisé comme compteur du nombre d'exécutions de boude LM (peut être comparé si vous voulez au I des boucles FOR ) du Basic). HL permet de stocker une adresse mémoire, avec la partie haute de l'adresse dans H (high), et la partie basse dans L (low). DE contient souvent un déplacement.

F sert toujours aux tests de condition devant diriger l'ordre d'exécution des programmes. Tous ces rôles que nous étudierons ne sont pas figés et l'utilisateur est libre d employer ces registres comme il le désire (dans la mesure où il existe des instructions le lui permettant), De plus, te zeo disposant d'approximativement 600 instructions, il est à peu près hors de question de toutes les retenir. Une quarantaine suffiront amplement à une programmation complète et efficace Sachez que vous disposez, pour le Z80, d'Instructions de chargement (de la mémoire ou de registres), d'addition et de soustraction, de manipulation purement binaire, de déroutement (équivalents de GOTO ou GOSUB) conditionnel ou non et de comparaison. Pour apprendre â les connaître et à les utiliser, rien ne vaut la pratique: alors allons-y gaiement.

Par exemple : comment réaliser l'équivalent de POKE &H9000. &HFF en assembleur ? Il s'agit pour notre Z80, de prendre la valeur &HFF (255) et de la placer â l'adresse mémoire &H9000 , bien.

- Vous savez depuis peu (ci-dessus), que les Instructions de chargement ont leur mnémonique commençant par LD.
- Vous venez d'apprendre que le registre A est utilise pour les manipulations de données.
- Vous apprenez dans une revue d'informatique célèbre, que les valeurs hexadécimales doivent comporter en assembleur, le préfixe "$"
- Vous ne savez pas encore, mais cela ne saurait tarder, qu'il faut séparer par une virgule le contenant situé à gauche (appelé "opérande
destination"), de la valeur de drone (appelée "opérande source") destinée à modifier ce contenant. Pas si dur â comprendre, exemple .
LD HL,$9000 : place la valeur $9000 dans le registre HL. donc effectue
HL = $9000.
- Vous découvrez avec émerveillement, qu'il faut placer entre parenthèses l'adresse (ou le registre contenant l'adresse) destinée à recevoir le valeur (ou le contenu d'un registre) spécifié. Fastoche. exemple :

LD   HL,$9000
LD   (HL),$10    ; place $10 à l'adresse $9000 contenue dans HL

- Vous venez d'apprendre au café du coin, que I "adresse d'origine de votre programme doit être spécifiée par ORG.
- Vous avez lu dans une revue d'Informatique concurrente, que la fin de votre programme doit impérativement se terminer par RET (l'équivalent de RETURN du Basic). Vous écrivez donc fébrilement :

ORG $C000   ; signale le début de l'implantation du programme en $C0000.
LD   HL,$9000 ; charge le registre HL de la videur $9000, adresse où l'on désire placer notre donnée.
LD   A,$FF    ; charge A de la donnée en question, soit $FF
LD   (HL),A   ; charge à l'adresse contenue dans HL, le contenu de A.
RET         ; fin du programme, retour au Basic.

Pris d'un doute, vous compulsez un bouquin du style programmation du Z80 (par Rodnay ZAK3 chez Sybex), pour vérifier la validité des instructions que vous venez d'écrire. C'est bon, mais quelques instants de réflexion vous ont permis de trouver mieux :

ORG $C000
LD  A,$FF
LD  ($9000)
RET

ou bien

ORG $C000
LD HL,$9000
LD (HL),$FF
RET

Votre examen du jeu de LD dont vous disposez, va vous permettra de faire un grand pas dans la pratiqua de l'assembleur du Z80. Déplacez donc à souhait (entre autres), les contenus de la mémoire jusqu'à notre prochain cours.

Nicolas BOURDIN et Jean-Claude PAULIN , Hebdogiciel n°117

★ LICENCE: COMMERCIALE
★ ANNÉES: 1985
★ AUTEURS: Nicolas BOURDIN et Jean-Claude PAULIN

Page précédente : La page pédagogique d'hebdogiciel 116: Registres et adressage
★ AMSTRAD CPC ★ DOWNLOAD ★

Files:
» Amsoft  devpacDATE: 2013-09-03
DL: 585 fois
TYPE: ZIP
SIZE: 47Ko

» DAMS-CPMDATE: 2013-09-03
DL: 185 fois
TYPE: ZIP
SIZE: 18Ko

» damspackDATE: 2013-09-03
DL: 389 fois
TYPE: ZIP
SIZE: 47Ko

» DAMS  6128    FRENCHDATE: 2015-07-09
DL: 50 fois
TYPE: ZIP
SIZE: 39Ko

» DAMS  Converter  v1.1DATE: 2013-09-03
DL: 375 fois
TYPE: ZIP
SIZE: 25Ko

» Dams  notice  FRDATE: 2002-11-15
DL: 366 fois
TYPE: ZIP
SIZE: 18Ko

» DAMS  Overdrive  v1.0DATE: 2013-09-03
DL: 367 fois
TYPE: ZIP
SIZE: 39Ko

» DAMS  OVL    ROMDATE: 2002-12-02
DL: 450 fois
TYPE: ZIP
SIZE: 21Ko

» DAMS  v1.2    (Incl.  Manual)    FRENCHDATE: 2015-05-07
DL: 152 fois
TYPE: ZIP
SIZE: 49Ko

» DAMS    (Keypad  patched  version)DATE: 2013-09-03
DL: 281 fois
TYPE: ZIP
SIZE: 37Ko

» Hisoft  Devpac80  v.2    ENGLISHDATE: 2013-09-03
DL: 479 fois
TYPE: ZIP
SIZE: 447Ko

» Hisoft  Devpac  ROMDATE: 2012-09-19
DL: 430 fois
TYPE: ZIP
SIZE: 12Ko

» Hisoft  Devpac    ENGLISHDATE: 2013-09-03
DL: 444 fois
TYPE: ZIP
SIZE: 85Ko

» RSX-Fast  Arrow    (Include  DEVPAC  SRC)    FRENCHDATE: 2015-07-28
DL: 59 fois
TYPE: ZIP
SIZE: 39Ko

» Zenith  2  DecompacterDATE: 2013-09-03
DL: 358 fois
TYPE: ZIP
SIZE: 26Ko

» ZENSUREN    GERMANDATE: 2013-09-03
DL: 323 fois
TYPE: ZIP
SIZE: 24Ko

» Zen    FRENCHDATE: 2013-09-03
DL: 385 fois
TYPE: ZIP
SIZE: 39Ko

Adverts/Publicités:
» Hisoft-Devpac80DATE: 2014-05-05
DL: 196 fois
TYPE: image
SIZE: 116Ko

» Hisoft-Devpac    ENGLISHDATE: 2015-01-08
DL: 183 fois
TYPE: image
SIZE: 238Ko

» Hisoft-Happy  New  Year  from  Hisoft-Pascal80-C  Plus  Plus-Devpac80-The  Knife-Catalog-Your  Health-Your  Horoscope    ENGLISHDATE: 2014-12-26
DL: 124 fois
TYPE: image
SIZE: 307Ko

» Hisoft-Pascal  4T-Devpac  3DATE: 2015-01-08
DL: 214 fois
TYPE: image
SIZE: 189Ko

» Zenith  Software-Z-PackDATE: 2015-01-08
DL: 138 fois
TYPE: image
SIZE: 61Ko

Covers:
» Amsoft-HiSoft-Devpac    ENGLISHDATE: 2015-01-08
DL: 172 fois
TYPE: image
SIZE: 274Ko

» Hisoft  Devpac    (Release  TAPE)    SPANISHDATE: 2014-05-05
DL: 201 fois
TYPE: image
SIZE: 418Ko
 

Medias/Supports:
» Devpac    (Release  DISC-AMSOFT)    ENGLISHDATE: 2016-06-21
DL: 38 fois
TYPE: image
SIZE: 14Ko
NOTE: Uploaded by hERMOL ; w310*h374

» Devpac    (Release  TAPE-INDESCOMP)    SPANISHDATE: 2017-05-20
DL: 12 fois
TYPE: image
SIZE: 113Ko
NOTE: Uploaded by hERMOL ; w839*h581

» Devpac    (Release  TAPE-SCHNEIDER)    GERMANDATE: 2017-05-20
DL: 9 fois
TYPE: image
SIZE: 97Ko
NOTE: Uploaded by hERMOL ; w640*h774

» Hisoft  Devpac    (Release  AMSOFT-TAPE)    ENGLISHDATE: 2015-11-11
DL: 38 fois
TYPE: image
SIZE: 100Ko
NOTE: Scan by Loic DANEELS ; w594*h739

» ZEN  Assembler    (Release  TAPE)    ENGLISHDATE: 2015-11-11
DL: 49 fois
TYPE: image
SIZE: 95Ko
NOTE: Scan by Loic DANEELS ; w594*h737

Manuels d'utilisation:
» DAMS    (Manuel  d  utilisation-OCR  by  DRILL)    FRENCHDATE: 2014-05-05
DL: 332 fois
TYPE: PDF
SIZE: 330Ko

» HiSoft-Devpac    (Licence  Statement)    ENGLISHDATE: 2014-05-05
DL: 207 fois
TYPE: image
SIZE: 295Ko

» HiSoft  Devpac  Programmers  Manual    ENGLISHDATE: 2014-05-05
DL: 469 fois
TYPE: PDF
SIZE: 2083Ko

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » La page pédagogique d'hebdogiciel 120: Le Pointeur SP
» Coding » La page pédagogique d'hebdogiciel 155: Adressage
» Coding » La page pédagogique d'hebdogiciel 107: Les Outils Logiciels
» Coding » La page pédagogique d'hebdogiciel 131: Les Instruction de Transfert
» Coding » La page pédagogique d'hebdogiciel 088 : Formation à l'assembleur
» Coding » La page pédagogique d'hebdogiciel 127: La Memoire

QUE DIT LA LOI FRANÇAISE:

L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!

CPCrulez[Content Management System] v8.75-desktop/c
Page créée en 059 millisecondes et consultée 730 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.