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: 605 fois
TYPE: ZIP
SIZE: 47Ko
NOTE: 40 Cyls
.HFE: OUI

» DAMS-CPMDATE: 2013-09-03
DL: 202 fois
TYPE: ZIP
SIZE: 18Ko
NOTE: 40 Cyls
.HFE: OUI

» damspackDATE: 2013-09-03
DL: 403 fois
TYPE: ZIP
SIZE: 47Ko
NOTE: 40 Cyls
.HFE: OUI

» DAMS  6128    FRENCHDATE: 2015-07-09
DL: 60 fois
TYPE: ZIP
SIZE: 39Ko
NOTE: 40 Cyls
.HFE: OUI

» DAMS  Converter  v1.1DATE: 2013-09-03
DL: 394 fois
TYPE: ZIP
SIZE: 25Ko
NOTE: 42 Cyls
.HFE: OUI

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

» DAMS  Overdrive  v1.0DATE: 2013-09-03
DL: 378 fois
TYPE: ZIP
SIZE: 39Ko
NOTE: 42 Cyls
.HFE: OUI

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

» DAMS  v1.2    (Incl.  Manual)    FRENCHDATE: 2015-05-07
DL: 179 fois
TYPE: ZIP
SIZE: 49Ko
NOTE: 40 Cyls
.HFE: OUI

» DAMS    (Keypad  patched  version)DATE: 2013-09-03
DL: 301 fois
TYPE: ZIP
SIZE: 37Ko
NOTE: 40 Cyls
.HFE: OUI

» Hisoft  Devpac80  v.2    ENGLISHDATE: 2013-09-03
DL: 500 fois
TYPE: ZIP
SIZE: 447Ko
NOTE: 41 Cyls
.HFE: OUI

» Hisoft  Devpac  ROMDATE: 2012-09-19
DL: 443 fois
TYPE: ZIP
SIZE: 12Ko
NOTE:
.HFE: NON

» Hisoft  Devpac    ENGLISHDATE: 2013-09-03
DL: 467 fois
TYPE: ZIP
SIZE: 85Ko
NOTE: 43 Cyls
.HFE: OUI

» RSX-Fast  Arrow    (Include  DEVPAC  SRC)    FRENCHDATE: 2015-07-28
DL: 68 fois
TYPE: ZIP
SIZE: 39Ko
NOTE: 40 Cyls
.HFE: OUI

» Zenith  2  DecompacterDATE: 2013-09-03
DL: 376 fois
TYPE: ZIP
SIZE: 26Ko
NOTE: 40 Cyls
.HFE: OUI

» ZENSUREN    GERMANDATE: 2013-09-03
DL: 332 fois
TYPE: ZIP
SIZE: 24Ko
NOTE: 40 Cyls
.HFE: OUI

» Zen    FRENCHDATE: 2013-09-03
DL: 411 fois
TYPE: ZIP
SIZE: 39Ko
NOTE: 40 Cyls
.HFE: OUI

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

» Hisoft-Devpac    ENGLISHDATE: 2015-01-08
DL: 227 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: 193 fois
TYPE: image
SIZE: 307Ko

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

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

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

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

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

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

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

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

» ZEN  Assembler    (Release  TAPE)    ENGLISHDATE: 2015-11-11
DL: 70 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: 402 fois
TYPE: PDF
SIZE: 330Ko

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

» HiSoft  Devpac  Programmers  Manual    ENGLISHDATE: 2014-05-05
DL: 486 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 130
» Coding » La page pédagogique d'hebdogiciel 081: Quelques conseils pour programmer en Language Machine
» Coding » La page pédagogique d'hebdogiciel 119: Registres et Adressage
» Coding » La page pédagogique d'hebdogiciel 111: Basic et Langage Machine
» Coding » La page pédagogique d'hebdogiciel 083: Generalite sur les Routines
» Coding » La page pédagogique d'hebdogiciel 146: Creation d'Une Routine

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 099 millisecondes et consultée 805 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.