You are on page 1of 82
André TONIC Edward AREVIAN Philippe MILLET LE CANON X-07 Br L" ASSBMBLEUR PAR André TONIC Edward AREVIAN Philippe MILLET CLUB CF - L985 33 AVENUE PHILIPPE AUGUSTE 75011 PARIS André TONIC . 19 ans , ¢1udiant en Sciences Economiques , participe activement depuis plusieurs années 4 [élaboration de nombreux logiciels commerciaux sur micro-ordinateurs aussi bien portables qu'individuels . Ba outre , il est co-auteur de plusieurs recueuils de programmation . Il est également président du CLUB C7 . Bdéwerd AREVIAN , 23 ans , étudiant en électronique et en informatique, est conseiller technique au sein du CLUB C7 . Ii s'intéresse tout particuliérement @ l'architecture interne des micro-ordinateurs . Philippe MILLET , 23 ans , a brillamment termine ses études commerciales : il s'occupe de Ia trésorerie a l'intérieur du CLUB C7 . De plus. il a acquis une certaine erpérience dans l'expioitation des langages évolués . Nous désirons adresser nos plus vis remerciementa a — Mrs De la Roe du Can et De Carville , responsables MARKETING de la société CANON FRANCE , pour leurs informations relatives au X-07 . — Melle HELAS , étudiante , pour sa participation 4 la composition de cet ouvrage . ~ Mr ROUSSEAU , maiire assistant en sciences , pour les nombreux renseignements concernant le langage machine du X-07 quil nous a timablement donnés . Les AUTBURS Cet ouvrage s'adresse a toutes les personnes désireuses de programmer en ASSEMBLEUR 2-80 . Plus spécifiquement , ies utilisateurs du CANON X-07 y découvriront les moindres secrets relatifs 4 leur machine - adresses , zone systéme compléte , explications de la ROM , le T6834 .. Fonctué par de nombreux exemples et applications détaillées , ce livre constitue la porte ouverte a ‘univers mystérieux et attirant de I'ASSEMBLEUR CANON . Il permettea 4 tous les possesseurs du X-07 d'utiliser foptimum des possibilités de leur micro portable et de ses périphéciques . OCTOBRE 2070 , QUELQUE PART a MICROCITY , LA NUIT ... Jerrais depuis plusieurs heures dans MICROCITY ... Jfavais debarqué dans cette ville remplie de consoles informatiques depuis deur jours et je navais toujours rien découvert . Je commencais 4 me demander si je n'avais as parcouru 7000 kilometres pour rien Avant daller plus loin , je voudrais me présenter . Mon nom est CANDORE et je suis en quéte d'un vieux maitre , détenteur dun savoir trés particulier _ En effet , en cette année 2070 , tous les langages informatiques sont devenus standards et se sont fondus en un seul: le LASPOTOLO (sige pour désigner le “LAngage Standard POur TOus Les Ordinateurs") . Etant possesseur d'une antique machine datant des années 1980 . un CANON X-07 (conservé dans la naphtaline |). jespére retrouver les traces d'un langage appelé “ASSEMBLEUR™ .. Pourquoi ? Une ancienne Jégende dit : “Le langage ASSEMBLEUR permetiait jadis de tirer parti au maximun des possibilités de son ordinateur . Quiconque est initié a ce fabuieux langage devient le maitre incontesié de sa machine .. Mais seul fe sage ASSEMBLUS connait Parfaitement !'ASSEMBLEUR et peut vous permetire de dompter a jamais votce micro Le seul probiéme inhérent a cette légende était l'endroit od se terrait le sage en question . Heureusement , aprés deux ans de recherches , jai retrouvé sa trace ... ou du moins , je le crois I! Je me retrouye donc a MICROCITY en train de vagabonder .. Les cabarets battent leur plein ainsi que les boites de nuit . Je regarde machinalement ma montre atomique : 2 h 25 . hésite a rentrer a lhotel quand tout 4 coup , une Petite lumiére attire mon oeil .. Une baie vitrée est illuminge dune lumidre quasi irréelle _ je mappréte a repartir quand je percois un appel télépathique mobligeant 4 revenir sur mes pas et 4 renter dans celte étrange maison ... La porte grince .. Sarement I'une des dernitres portes 4 gonds de toute la salarie Ill Une faible lueur m’invite a rentrer dans une pigce ou un homme dun certain age médite . Subitement , il sc met 4 parler : “Je savais que tu parviendrais jusqu’a moi .. j/ai percu tes ondes cérebrales a lentrée de la ville , il y a quelques jours . Tu seras probablement le dernier elave que jaurais Tu as fait une longue route pour me retrouver afin d'apprendre fe vieux langage “ASSEMBLEUR” . Eh oui » je suis ASSEMBLUS, le vieux sage de la légende Il se redresse , me fixe de son regard profond et joint ses deux mains . Jéprouve une sensation de béatitude mélée d'un sentiment de profonde sécurité _ Jai compris quill va acoéder 4 ma requéte .. Ii va me transmetire son savoir | ASSEMBLUS se dirige lentement vers le fond de Ia pidce et fait pivoter un panneau sculpié . Il me fait signe de le suivre et je découvre une salle au centre de laquelle se trouve un CANON X-07 | Le micro a ‘air en parfait état de fonctionnement et se trouve relié a plusieurs périphériques tels que des imprimantes , des écrans , des coupieurs optiques ... Le sage effieure ia touche ON/OFF du X-07 et toute Ia piéce se met 4 tracer , & dessiner , a vibrer , a se colorer , a chanter .. Il comprend mon étonnement et déctare : “Tu as Fair trés étonné CANDORE mais cela est tout a fait normal .. Le CANON X-07 reste ia seule machine dans la galaxie 4 pouvoir ¢tre commandée en ASSEMBLEUR 2-80 . La guilde informatique ayant imposé son iangage et se normes , 'ASSEMBLEUR a ¢té proprement éliminé et plus personne ne peut Visiter les entrailles de sa machine , comme jadis .. Jappartiens a un autre temps , a une autre époque . Je sais que ma mort est proche mais je ne veur pas commencer mon dernier voyage sans avoir Iégué Ia pratique du langage ASSEMBLEUR 4 quelqu'un de noble . Si tu le désires , je peur apprendre ce Jangage pour que tu puisses , toi CANDORE , dompter , maitriser et ne plus &tre Tesclave de ta machine . Le CANON sera alors pour toi la machine id¢ale et 1u pourras réaliser tout ce qu'il fait en ce moment _~ Tacquiesce lentement et ASSEMBLUS me conduit sous un casque & positrons rapides permettant a n‘importe que! étre humain d’emmagasiner des milliers dinformations trés rapidement . Je percois le démarrage du disque optique et je m’endors , berct par le doux ronronnement des données pénétrant mon cerveau ..” OCTOBRE 1985 , QUELQUE PART EN FRANCE, 44 15... Je sursaute et je m’apercois que je suis en sueur .. Drole de réve |! Décidément , {'ASSEMBLEUR me travailiel Je glisse un oeil vers mon tadio-réveil : 4h 17 . Je me léve et m’assieds 4 mon bureau ... Un CANON X-07 , une dizaine de feuilles de listing . une imprimante et trois crayons occupent toute ia table . Ah , si mon réve se réalisait un jour .. Btre détenteur du langage ASSEMBLEUR , comprendre les moindres particularités du X-07 et avoir visite se recoins les plus secrets | Cela fait plus de 15 jours que je n'ai pas avancé .. Mais un détail attire mon attention ... J'ai complétement oublié douvrir le Paquet cadeau offert par Odile pour mon anniversaire I! Dune main fébrile , je te décachéte délicatement et , 6 miracle . ie découvre l'ouvrage traitant du “CANON I-07 et de !'ASSEMBLEUR™ . Best Seller depuis des mois , il est ¢puisé dans toutes les librairies car tous les utilisateurs du X-07 se l'arrachent !! En effet , depuis la parution de cet ouvrage , des milliers de possesseurs de CANON ont appris a mieux connaitre Jeur micto en lexploitant de fagon optimale grace a !'ASSEMBLEUR . Jouvre doucement ce magnifique livre et , en page de garde , une dédicace m'est adressée : “A Candore , le palais de la programmation supérieure vous est désormais accessible . Les AUTEURS” . Mes angoisses sont désormais termintes et méme sans “casque a positrons” je suis certain de maitriser bientot parfaitement mon CANON X-07 ! A TONIC “Jaimerais goOter aux joies de ! ASSEMBLEUR , mais comment faire ? ..” Cette supplique , nous avons entendu un nombre incalculable de fois : dans la rue , au téléphone , dans noire courrier , chez les revendeurs ... Bref , de toute la France et méme de plus loin , cette plainte nous est parvenue comme un appel d’agonie . La larme a l'oeil mais la plume au chaud , nous avons décidé d’écrire un ouvrage traitant de | ASSEMBLEUR 2-80 . langage informatique 6 combien méprisé ou adoré . selon les humeurs du micro-ordinateur utilisé . Mais un détail revenait trés souvent : “Moa CANON X-07 ne veut pas dévoiler ses secrets II”. Une fois de plus , revigoré par ce nouveau défi, fous avons puisé dans nos derniéres forces pour rédiger la suite de louvrage : Je “SOFT” et le “HARD” du CANON X-07 a été disséqué , retourné , découpé au Laser afin de fournir aux plus audacieur program meurs les clés du Nirvana . Les pages qui vant suivre ont pour objectif d'une part , de vous {amilisriser avec 'ASSEMBLEUR d'un micro-procerseur 2-80 et d'autre part , de vous accompagner 4 coeur du X-07 . Ba effet , le CANON ayant comme “cerveau principal” un NSC 800 (version CMOS , 2 faible consommation denergie , du célébre ZILOG 80) , il est indispensable a l'explorateur teméraire de connaitre le langage primaire de ia “béte” . Puis , peu 4 peu , nous vous enteainerons aur les plaines du SILICIUM od régne l'empire des seigneurs “Adresses” , “Sous-processeur T6834" , "Zone systéme” , “Hard” , "MEM" .. Mais avant dentreprendre un tel périple , il vous est nécessaire de posséder au moins quelques concepts d'un langage évolué . Sur le X-07 , le BASIC étant résident , il serait souhaitable que vous saisissiex déja le sens et Faction des fonctions usuelles telles “PRINT™ , “GOTO” , “GOSUB” , "FOR.NEXT” Sinon , & notre grand regret , le monstre baptist "INSOMNIA" aura rapidement anéanti les derniéres parcelles de sommeil restant a votre acquis . Louvrage que vous allez dévorer des yeur est architecturé de telle maniére qu‘a Tinstant du dénouement , vous serez passé maitre en l'art de dompter le CANON X-07 . En effet , apres avoir maiteist {'ASSEMBLEUR , vous Jonglerez gaiement avec les mystéres enfin mis & jour de votre machine préférée . Pour vous sider dans cotte voie irés convoitée , de nombreur exemples et applications pratiques vous seront exposts . Ceur-ci vous Petmettront de “domestiquer” tes detniers concepts rebelies & votre intelligence tenace . Enfin , quelques annexes vous renseignerant efficacement sur les derniers points utiles pour continuer votre nouvelle quéte de la terre promise nommée “CANONLAND" . Nous espérons que cet ouvrage sur le langage machine du CANON X-07 combleca tous les fanatiques et adorateurs de ceite machine si prisée . Les portes du paradis leur sont désor mais ouvertes _. Les auteurs Remerciements GENERALITES. 1.1 Definition d'un ordinateur 1.2 Format des ordres et des données 1.3 Le binaire 14 La mémoire 1.5 Libexadécimal 16 Le microprocesseur 17 Architecture du NSC 800 1.8 Pourquoi utiliser 'ASSEMBLEUR ? Chapitre 2 : MNEMONIQUE & ASSEMBLEUR 2.1 Introduction 22 De lutilité d'un ASSEMBLEUR 23 Les labels 24 Fonctionnalités de ASSEMBLEUR 2.5 Format du code source 2.6 Les arguments de lopérande 2.7 Definition des données : LES MODES D' ADRESSAGE DU NSC 800 3.1 L’adressage immédiat 3.2 Liadcessage regisire 33 Liadressage indirect registre 34 Liadressage direct 35 Vadressage retatir 3.6 Liadressage indexé 37 Ladressage bit Page 2 Page 3 Page 4 Page 9 Page 15, Page 15 Page 15, Page 17 Page 19 Page 19 Page 20 Page 21 Page 26 Page 28 Page 28 Page 28 Page 29, Page 29 Page 30 Page 32 Page 34 Page 36 Page 36 Page 36 Page 36 Page 36 Page 37 Page 37 Page 37 Chapitre 4 : LES INSTRUCTIONS DU NSC B00 Page 39 4.1 Chargement et rangement Page 39 42 Chargement des regisires et échanges Page 40 4.3 Fonctions arithmetiques Page 41 4.4 Fonctions logiques Page 43 4.5 Comparaisons Page 45 46 Les décalages Page 45, 47 Les instructions d'usage général et de controle Page 49 4.8 Les ruptures de s¢quence Page 50 4.9 Les entrées / sorties Page 53 4.10 Instructions sur bits et chaines Page 34 4.11 Instructions de pile Page 55 Chapitre 5 : LES PRINCIPALES PSEUDO-INSTRUCTIONS Page 56 5.1 Adresse ‘implantation : ORG Page 56 5.2 Reservation de mémoire : DEFS Page 56 5.3 Définition d'équivalence : DEFL et BQU Page 57 5.4 Definition de données : DEFB , DFM et DEFW Page 57 5.5 Fin du programme source : END Chapitre 6 : APPLICATION “TRI 4 BULLES* Chapitre 7 :L' ARCHITECTURE INTERNE DU K-07 7.1 Géneralites Page 65 7.2 L'unité centrale Page 65 7.3 Le plan de in mémoire Page 67 7.4 La ROM des cartes mémoire Page 67 7.5 La puce de controle "Entrées / Sorties” Page 69 7.6 Le sous-processeur ‘TOSHIBA 6834" Chapitre § : BASIC & ZONE SYSTEME 8.1 La mémoire vive Page 87 82 Les poims dentrée en MEM des fonctions BASIC Page 90 8.3 La zone de travail du systéme Chapitre 9 : LES PRINCIPALES ROUTINES DE LA ROM 9.1 Les routines d’ Entrees / Sorties Page 96 9.2 Les routines de conversion Page 100 9.3 Les routines arithmétiques Page 101 9.4 Les routines mathematiques Page 104 9.5 Les routines systemes Page 104 96 Les routines secondaires Page 105 Chapitre 10 : TROIS PERIPHERIQUES 10.1 Les cartes mémoire 10.2 Liimprimante graphique X-710 10.3 Linterface vidéo X-720 Ame PARTIE - APPLICATIONS Chapitre 11 : AFFICHAGE Chapitre 12 : INVERSION DEL’ AFFICHEUR VIDEO Chapitre 13 : INVERSION DEL’ AFFICHEUR LCD Chapitre 14 : AFFICHAGE D' UN TITRE Chapitre 15 : COPYRIGHT PERSONNEL Chapitre 16 : ECRITURE SUR LA X-710 Chapitre 17 : BRUITAGES DIVERS Chapitre 18 : REDEFINITION DE TOUCHES Conclusion ANNEXES ANHEXE 1 : LISTE DES CODES DU 2-80 ANNEXE 2 : ASSEMBLEUR & DESASSEMBLEUR ANNEXE 3 :LE C203 C7 ANNEXE 4 : BIBLIOGRAPHIE Page 111 Page 111 Page 112 Page 112 Page 119 Page 121 Page 123 Page 125 Page 127 Page 129 Page 131 Page 133 Page 135 Page 137 Page 155, Page 157 Page 160 40re PARTIE + 4° ASSBUBEBIR 2-80 GENERALITIES. Avant de nous lancer dans I'ASSEMBLEUR pur , ménageons-nous une petite mise en condition avec quelques généralités . Elles vous permettront de glisser en douceur vers le monsire sacré que constitue le langage machine LI_DEFINITION d'un ORDINATEUR . “COMPUTER , ORDINATBUR , MICRO , MINI ..” . Tous cos mots magiques désignent en fait un “simple” amas de circuits électroniques . Lordinaleur est une machine ne sachant pas réfiéchir méme : elle sait seulement répéter , un millier de fois si névessaire , une opération ot exécuter un programme lui permettant de résoudre un probleme donné . Effectivement , ce a’est 48ja pas si mal que ca {! Tout ordinateur posséde un “cerveau" (le micro-processeur) et une mémoire plus ov moins importante , se mesurant en Kilo , Méga ou Giga Octets . Liexécution d'un programme queloanque (jeu , CALC , Gestion de fichiers ..) enteaine toujours les mémes conséquences : le micro-processeur effectue les opérations qu'il trouve dans ia mémoire et communique les résultats aur organes dEntrée/Soctio (Beran vidéo , Imprimante , Mémoire de ‘Stockage ..) . Un schéma simplifié peut vous faire saisir l'ensemble cohérent que constitue un ordinateur (Voir figure 1) . Bion qu’ puisse so présenter de maniére disparate , l'ordinateur forme Un “tout” indissociable . Par exemple , le micro-processeur ne peut fonctionner Sans mémoire ou encore , aucun résultat ne peut dtre visualise sans écran . Plus précistment , nous pouvons “ausculter” lintérieur de Ia mémoire , Coeur de cet univers fascinant . En effet , le type et les performances du Syméme utilise dépendent du format des ordres placts en mémoire De plus , le facon dont est relié ie micro-processeur A ses périphériques est Primordiale . 1.2 FORMAT des ORDRES ot des DONNEES. On peut se poser 1a question de savoir comment des chiffres peuvent étre Stock#s dans ia mémoire d'un ordinateur . En fait , lordineteur stant iquement constitue , Ia présence ou l'abscence d'un courant Hleetrique peut dire facilemeat décectée 45 microprocesseur mémoire disquette &7 PERIPHERIQUES UNITE CENTRALE FIGURE_f_: SCHEMA d'un ORDINATEUR 1 TIROIR = | OCTET (65536 TIROIRS) Comme |'a déciaré en son temps DEMOCRITE : “l'ATOME est la plus petite partie de matiére dissociable” De méme , une information de base nommée BIT , sera symbolisée par un “0” ou un “1” selon louverture ou ia fermeture du circuit . Cest également In plus petite partie de mémoire séparable . Le micro-processeur du CANON X-07 , fe MSC 800 (National Semi-Conductor 800) , est un “B bits” . Il peut donc effectuer des opérations ‘sur 8 bits simultanément _ De plus , i! est relié 4 la mémoire par un premier groupe de 8 fils appelé “Bus de Données” . Mais quand vous demandez @ une personne ia capacité de mémoire de son X-07 , elle peut vous répondre : "Mon CANON contient 24 Kilo-octets de mémoire” . Que représente un OCTET ? Metions fin 4 votre appréhension : un octet représente simplement wa groupe de 8 bits , cest & dire un groupe de 8 infor mations binaires . De méme , quand on vous déciare : “Mon micro est un vrai 16 bits” , vous pouver étre sOr que cet ordinateur contient des octets de 16 bits et non de 8 bits comme le X-07 Exposons maintenant nos souvenirs "binairiens” . 13.Le BINAIRE. Nous savons maintenant que l'ordinateur code les chiffres avec des "|" et des “O" : étrange resemblance avec la base 2 || Ainai , suc 8 bits -nous pouvons coder en binaire les chiffres de 0 4255, soit 256 symboles . En utilisant le méme principe qu’en base 10 , on donnera 4 chaque bit une valeur dépendante de sa position . Un exemple vous sortira du brouillard ~ 101 en base 10 est aussi représenté par : 1.1 + 0.10+ 1.100 Soit , puisque notre base est 10 -1.1+0.110+ 110.10 Ou encore : 1.100 + 0.10! + 1.102 — 101 en base 2 est aussi représenté par -1.1+02+ 1.4 Soit . puisque notre base est 2: 1.14 0.2.1+ 1.22 Ou encore : 1.29+ 0.2! + 1.22 (MLB : pour les décompositions en binaire , voir figure 3) Sans le savoir , vous venez d'appréhender 1a notion de rang et de poids (Voir figure 4) . Ba effet , selon son emplacement (rang), un méme chiffre n'a Pas ia méme valeur (poids) . De plus . puisque nos mots sont de & bits , ils uront Ia configuration définie a la page 19 17 DECIMAL BINAIRE MIO DR BOI INO 2 ” 128 64 32 16 12664 32 16 6 4 2 POIDS: Ooul RANG: UNE DES CASES DESSINEES FIGURE 4: DEUX OCTETS DIFFERENTS Un mot ou un ociet © 027 +a26+a25ea2%sa23+ 022.02! 920 Soit avec a-1 = 127+ 12641.25+1.244123 61224121. 4.20 =255 Done . le nombre 255 represcate la valeur marimale qui peut étre attribuee a un octet 14 [RE Puisque le micro-processeur travaille avec des mots de & bits a memoire ne contiendra que des mots de 8 bits egalement . Elle est reli¢e au NSC 800 (pour le CANON X-07 ...) par un deuriéme bus de 16 fils . Ce “bus Adresse” sert a indiquer quels octets elle doit fournir au micro-processeur. Bn pdoptant la notaugn Digaie, 16 fis correspondent a2!5, 214, 213, 212 s2tly 210,29, 2827. 284 23424-23422 21s 20 « 65536 cases désignables possipies Sn fait , on peut assimiler 1a mémoire du X-07 a un meuble de 65536 Uroirs (les octets) , numerotes de 0 4 65535 , chaque tiroir contenant B petites cases (les bits) . Vous pouvez vous référer a 1a figure 2 pour mieux cerner cetie métaphore 1.5_L‘ HEXADECIMAL . 65536 positions possibles !! Cela parait bien difficile a désigner avec des | et des 0 | Pour pallier a cet inconvénient , une notation intermédiaire fut adoptée entre Je binaire et le décimal : hexadecimal . Silon desire coder des nombres de 4 bits. on pourra coder 16 symboles comme sur ia figure 3 Vous remarquerez qu’aprés le chiffre 9 en hexadécimal , on découvre La lewre “A” Les mathématiciens , devant statuer sur des symboles quelconques, Ont décidé que Jes letires A a F désigneraient les nombres de 10.415. Maintenant , nous savons transformer un mot de 4 bits en hezadécimal .. Mais comment procéde t-on pour un mot de 8 bits ? Suriout ne vous Géfenestcex pas pour si peu car , en fait , un mot de & bits est constitue par deux mots de 4 bits | Afin de vous prouver la simplicité de la méthode , Prenons deux exemples : i it en hexadecimal . En "10101111" en binaire peut étre facilement transcri a site la premigre tranche "1010" constitue 4 bils et la deuziéme waned “L111 constitue 4 autres bits . Par consequent , en Saidant de As nee "1010" équivaut a "E et “1111° équivaut a "F’ . En definitive , équivaut a “EF en hexadécimal | De méme , "10111000" équivaut a "BS" en heradécimal car °1011" est ‘quivaient a “Bet "1000" a "8". Simple , non ? la méme pour un mot de 16 bits. De plus , signalons que la technique est la méme pot ; Par consequent , "1M11111 111111111" ¢quivaut a “FFF” en hexadéci —— La notation hezadécimale est beaucoup plus claire que 1a notation Hffectivement , mieux vaut travailler avec “FFFF) qu! ST iesbinentiete tna Notens , pour terminer , que le “haut” de la mémoire , precédemment désigné par "65535" , est également représenté par FFF" 6 Le MICRO-PROCESSEUR . Le NSC 800 de votre CANON X-07 constitue véritablement le es tout-puissant” . Cest lui qui ordonne , organise el planifie toutes les operat effectuées a chaque instant au sein de votre machine ‘Au niveau “HARD” , il est formé d'un minuscule circuit ees rassemblant plusieurs milliers de transistors sur une pastille de SILICK IL faut savoir que la rapidité et la inal a ee en i ment du processeur empl ; ! Ee oer 8 bits relativement obsolete : il est donc sae a es ‘normal quill soit dépassé du point de vue vitesse de traitement on amg Eo effet , de nouveaux micro-processeurs 16/32 bits équipant la _ génération d'ordinateurs domestiques , se revelent des plus punieaie'e nde plus véloces (le MOTOROLA 68000 , entre autres ). ee e “vieillesse” , des co-processeurs (un T6834 pour le X-07) ‘ Sa . processeur principal d'une partie des taches pour gagner en ‘vitesse douriéme partie ‘ouvrage) . Cones " ia société CANON nous réserve de bonnes surprises pour année 1986 .. Enfin , chaque type de micro-processeur posséde son architecture propre . Nous allons étudier en détail Ia structure du NSC 800. 20 LZ ARCHITECTURE du NSC 600. 7.1 Les REGISTRES . Les registres sont constitués par des mémoires rapides qui servent soil de “cahier de brouillon” au micro-processeur , soil de repéres Il en existe 13 plus 8 autres appeles “registres secondaires” . Certains sont constitués de 8 bits, d'autres de 16 bits (N'oublions pas qu'il existe 16 fils reliant le NSC 800 a la mémoire) et d'autres peuvent étre “accalés” pour former des registres de 16 bits (ou “daubles registres’) . Pour mieux appréhender cette importante notion , vous pouvez vous référez a la figure 5 Le regisire A, appelé aussi “1 ACCUMULATEUR" , constitue le registre le plus important . Beaucoup dopérations transitent par cette mémoire et , de plus , il garde la majeure partie du temps le résultat des opérations . Vous en appréhenderez importance bientot Le regisire F est un peu spécial car cest le registre des drapeaux (en anginis , “drapeau” se traduit par "FLAG" dod le registre F).. On y trouve des indications sur le résultat ou le type d'une opération . Ce registre sera passé “au peigne fin” au paragrapho 1.7.3 . Les registres B,C ,D, B , H et L sont formes de & bits . Ils peuvent fort bien constituer des cegistres de 16 bits dont les aoms seront BC , DE et BL. On pourra ainsi travailler directement sur des mots de 16 bits , ce qui est beaucoup plus rapide que de répéter deux fois 12 méme opération sur deux mots de 8 bits Les deux regisires 1X et LY , formés de 16 bits , se nomment “registres age indexé” . En fait , ils ve révelent d'une grande utilite bien que d'un usage relativement restreint . Pour les utiliser , il faut y stocker une valeur de base 4 laquelle on ajoute un index (nombre de 8 bits) afin dobtenir la valeur désirée . Ne paniquez pas , nous expliciterons ceci au chapitre 3.6 Le registre SP est lui aussi un registre 16 bits . Pour expliquer son utilité , il nous faut d'abord exposer Ia notion de “PILE™ . Loreque le NSC 800 exécute Un programme , il peut avoir besoin de sauvegerdar des données . Par exemple, sil doit exécuter un sous-programme puis retourner au programme principal , il rangera a un endroit précis les données du programme principal , ‘Siécutera le sous-programme , récupérera les données précSdemment sauvées Puis reviendra au programme principal ~ En fait , ranger les données s'appolle “EMPILER™ et les retrouver “DEPILER™ . La pile est donc une zone de ta mémaire ot le NSC 800 ira ranger les données 4 sauvegarder “lune au dessus de I'autce” . 2 REGISTRES_SECONDAIRES sSGLATARS PRIMALEES = m B | Ls S D E D S a L H iL 1x TY. 8 BITS C2 16 BITS FIGURES: SCHEMA des REGISTRES Derniére entrée a vy ——_—— == SS ————— See SS > a SSS SSS SS SSS —— SSS ——— SS SS SS SSS —— SSS ———— =. = —— 3 3 SS SS Pile initiale Pile + 1 assiette Premiére sortie Pile - 1 assiette EIGUREG@: LA PILE 22 Lemplacement de la dernitre donnée empilde est continuellement inscrit dans le registre SP . On dit alors que SP représente le pointeur de pile (Stack Pointer en anglais) car il pointe sur In derniére donnée entrée. Le fait de conserver lemplacement (le numéro de 1a case mémoire , en fait ..) de cette derniére donnée fait que cest a seule donnée directement accessible . La pile est alors nommée pile “L.LF.O.” . de l'anglais “Last In First Out” (en francais . premier entré , dernier sorti) . On peut d’ailieurs la comparer a une pile dassiette (comme dessiné a le figure 6) . ies assieties représentant les données empilées . Test un registre 8 bits utilis¢ au sein d'un mode particulier du NSC 800 , mode lié aux “interruptions” . 1! faut savoir qu'une interruption est constitute par un é¢vénement extérieur influant sur le déroulement des opérations internes . Par exemple , 'imprimante X-710 envoyant des codes de controle au X-07 représente une interruption . Le fonction du registre I est de contenir ume partie d'une adresse vers laquelle se branchera te Program| . Ceci arrivera uniquement en cas ‘interruption due 2 un péripherique . En général , ce regisice est assex pew utilisé en programmation . Le regisice B n'est pour nous daucune utilité . Sa fonction est res technique : il sert 4 “rafraichir” la mémoire du NSC 800 . En effet , Ia mémoire ‘ne garde pas éternellement les données qu'elle contient et , de temps a autre , fe micro-processeur va les lire pour ensuite les réécrire . Cette opération précise se déroule a motre insu et nous est donc totalement étrangére Avant de terminer cel exposé sur les registres , il nous faut vous entretenir d'un dernier registre : PC . Bn effet . ce “Program Counter” ou compteur ordinal n'est pas accessible en programmation . Cest un registre indiquant linsteuction que va extcuter le NSC B00 . On peut donc comparer son contenu au numéro de ligne du langage BASIC . Sa fonction est dindiquer le numéro de Ja case dans laquelle se trouve l'instruction a erécuter . Cé numéro de case se nomme une adresse (comme vous vous en doutiez surement ..) Pour finir , nous devons préciser une notion primordiale . Nous savons que le NSC 800 ne comprend que des suites de 1 et de 0 . En fait , rien ne distingue dans la mémoire , une donnée d'une instruction . Cette différence a effectuer provient indirectement du registre PC . Bifectivement , a la mise sous tension , PC contient “O00 et , de ce fait . le NSC 800 exécutera ce qui se ‘ouve a l'adresse "0000" (Ceci constitue un besoin physique ..) . Vous entrevoyer le “Hic’ ? .. Eh oui !! Si en "0000" se trouve une instruction , uny 4Ura pas de probiéme ... Par contre , si vous y avez malencontreusement plact des données , le NSC 800 se comportera avec elles comme s'il s‘agissait Vordres et les effectuera |! Autant dire qu'il déraillera complétement et We le “RESET” (plact a lartiére du X-07) sera le bienvenu I! Done c'est 4 vous de placer correclemeni données et instructions en Rémoire .. Vous é1es livre &vous-méme et la moindre erreur sera fatale 4 vos Programmes | 23 721 UAL 1 u6e Afin d'exécuter les instructions , le micro-processeur posséde une Umité Aritmétique et Logique , reliée directement aur registres , qui se charge des calculs . On la désigne par “UAL” ov "ALU" selon que lon empioie le feancais ou Vanglais . De plus , on découvre dans le NSC B00 une unité de décodage des instructions représentée pat un bloc de logique cablé . En fonction des 1 et des 0 quelle rencontre , elle effectuera un certain nombre dopérations constituant instruction a exécuter .. Le micro-processeur posséde aussi une logique baptisbe UCC (Unité de Commande et de Controle) qui permet dindiquer aux mémoires si elles doivent , par exemple , fournir une donnée ou bien La conserver (Signal Feriture/Lecture) . ce bus détecte les “Lops” de lhorloge interne qui lui servent a rythmer les optrations et les appels des péripheriques De plus , le NSC 800 a encore un dernier registre de 16 bits permettant G'avgmenter ou de diminuer le registre PC en fonction des instructions renconirées . Afin de vous faire une idée synoptique du micro-processeur , ‘vous pouver vous référez a la figure 7. 17.3. Les INDICATEURS . ‘Nous avons vu précedemment que le registre F était different des autres Bn effet , F ne contient pas un mot de 8 bits car chacun de ses bits indique wn état particulier aprés une opération . Pour “survoler” sa structure reférez-vous 2 Ia figure 8 Le bit 0 nommé “CARRY” (Report ou Retenve en francais) indique qu'il existe une cetenue . De plus , nous verrons dans le chapitre “Instructions du NSC 800" qu'il nous permet de tenter des comparaisons et bien d'autres choses encore ... Le bit | nommé "N" (Négatif) sera positionné a { si in derniére opération était une décrémentation ou une soustraction Le bit 2 nommé "P/V" (Parité/oVerflow = débordement ea francais) indique deux choses : la parité (le nombre de bits mis 4 | est pair ou impair) et le débordement lors d'une instruction arithmétique (Voir figure 9) . Les bits 3 et 5 se sont donnés le mot : ils ne servent striciement 2 rien! Le bit 4 nommé "H" (Half-carry) constitue ume demi-retemue - ll est égal 2 1 lorsquill existe une retenue sur les quatre premiers bits d'un opéerande (Voir figure 10). Il est trés peu utilise par les programmeurs 24 controle interruptions || entrée / sortie SERIE Tegistre F | B registre DIE instruction |[™ > [| SC*+/ ¥ H|oL décodeur SP instruction PC lincrément &| décrément HORLOGE et CONTROLE d adresses ENGURE 2: STRUCTURE INTERNE LE REGISTRE F Tz [lt « [llevd* Te] pit: 7 6 5 4 3 2 1 0 FIGURES; LES INDICATEURS 2 Le 6 nommé ‘2’ (Zero) indique si le résultat d'une opération est égal ao Le bit 7 nommé ’S" (Signe) est affecté (sa valeur change ...) par certaines instructions . Il indique le signe de la valeur testée : si S=1 , Ia valeur est négative | si S=0 . Ia valeur est positive 8 _POURQUO! UTILISER L' ASSEMBLEUR 7 Apres Loutes cos généralités importantes a assimiler , vous vous posez Peut-étre la rituelle question de savoir od tout cela va vous amener En effet , cest bien beau l ASSEMBLEUR mais , en fait , le BASIC se révele moins compliqué 4 apprendre .. Alors pourquai s‘embéter ? Eh bien , trois raisons primordiales vont vous faire réfléchir et vous permettront de juger de limpact de 'ASSEMBLEUR sur votre programmation . La premitre raison réside dans Ia rapidité phénoménale de ('ASSEMBLEUR par rapport au BASIC . En effet , 'ASSEMBLEUR est & peu prés 100 fois plus véloce que le BASIC classique I! Avouez que cela donne envie de réfléchir De plus , 'ASSEMBLEUR occupe en mémoire beaucoup moins d'octets que Je BASIC ; cest un langage trés compact . Suivant ia nature du Programme , un logiciel écrit en ASSEMBLEUR peut occuper de 2 a 10 fois moins de place qu'écrit en BASIC | Enfin , beaucoup de choses supposées “impossibles” & réaliser en BASIC sont désormais offertes sur un plateau avec I'ASSEMBLEUR . En effet . le BASIC fe peut acoéder au sous-processeur . aur routines ROM trés puissantes ... Le langage machine procure un sentiment d’évasion car rien n'est impossible & rbaliser . Absolument toutes les possibilités de votre ordinateur vous sont accessibles | Apreés ce plaidoyer sur !'ASSEMBLEUR , nous pouvons vous assurer qu'il constitue un langage extrémement puissant , cortes difficile a apprendre ot & utiliser , mais 6 combien fascinent a découvrir .. Bt surtout , ne vous arrétez pas aux premiéres difficuliés car de trés bonnes surprises yous atiendent | si Accumuiatour =[0TO[i[1]1]0]1]1] . parité - 0 Si Accumulateur =[1[0 [1 o[1]i] | parité=1 RAPPEL : P = 1 ---> impair . P= 0 ---> pair. PIGURE 9: LE BIT N°2 Accumulateur H-cARET =i EIGURE 10; LE BITN*'4 7 Nous allons allaquer ensemble une des parties les plus importantes du livre . En effet , vous bruler surement de savoir comment développer la programmation de l'ASSEMBLEUR . Tout ceci va étre ¢lucide au cours de ce chapitre 2.1_INTRODUCTION . Nous avons vu préckdemment que rien ne différenciait dans la memoire une donnée dune instruction . En effet . elles sont toutes deux codées de 1a méme maniére , une suite de 1 et de 0 . Si nous devions programmer de celle facon , est a dire écrire une longue suite de 1 et de 0 , nous commettrions probablement beaucoup d’erreurs | De plus , la lecture d'un programme déja écrit ne serait pas du tout évidente Pour pallier a cet état de faits , les constructeuts ont donné un nom a chaque commande . Ce nom constitue In MNEMONIQUE de l'instruction ‘Ainai , le "GOTO" du BASIC se nommera ,en mnémonique 2-80 , “JP” (Diminutif de “JomP” qui se traduit par “sauter” en francais) . Sa veritable écriture en binaire est "11000011" et "C3" en hexadécimal (Remarquons au passage que cela devient déja beaucoup plus simple en hexadécimal ..) 2.2 De L' UTILITE d'un ASSEMBLEUR Bssayons d'écrire en binaire “aller ala case méemoire 4000" Trés simple , mest-ce pas 7 Cela fait : “11000011” (JP) et "0000111110100000" (4000 code sur 16 bits). De plus , pour simplifier 1a chose (1) , il faut écrire les 8 bits les plus importants (dits de “poids fort”) a adresse de poids fort . Bn effet , les mots étant stockés sur 8 bits , an obtiendrait logiquement : Adresse Contenu Seulement , si l'on stocke les nombres de cette 02 10100000 —facon., Ia partie faible de adresse du saut sera 01 00001111 ——_stockée a l'adresse Ia plus forte . II faut donc 00 11000011 —_inverser la deuxi¢me partie de l'adresse . En fait ,on trouvera dans la mémoire !a configuration suivante 28 Adresse en DECIMAL Contenu en BINAIRE Contenu en HEKA. 02 00001111 OF 01 10100000 40 09 11090011 03 Comme vous avez pu le remarquer , toutes ces opérations deviennent trés rapidement fastidieuses a effectuer “a la main’ . Par contre , cest le travail typique dont peut se charger un ordinateur Par consequent , on a écrit un logiciel auquel on fournit 1a liste de toutes les mnémoniques , qui les transforme en binaire puis les range a l'adresse desiree . Le listing en mnémoniques siintilule “le code source” , les mols binaires obtenus représentaat “les codes objets” . Le logiciel se nomme alors un “ASSEMBLEUR™ 23 Les LABELS . Un label constitue une référence piacée dans le code source _ On pourra ensuite y [aire appel , 'ASSEMBLEUR se chargeant de la transformer Ainsi , au lieu de “JP 4000" , nous aurons pu ¢crire “JP LABEL” si nous avions défini auparavant “4000° comme un “LABEL” . Ceci s'appelie , en termes techniques, 'adressage symbolique . Ce mode d'adressage n’eziste pas dans je BASIC du X-07 mais , a titre dexempile , les micro-ordinateurs de la gamme SHARP (PC 1212, 1500 ..) peuvent utiliser ce type dadressage (Bx : GOTO “DEBUT” , GOSUB “FIN” .) Mais les labels me sont pas strictement réservés 4 |'adressage symbolique . Fffectivement , nous pouvons écrire LD A, SOMME” si nous avons précedemment affecté une valeur au symbole “SOMME” (Ex : “SOMMB" = I! LD A, SOMME’ est alors equivalent 4 LD A,11) . Notons que la commande "LD’ charge un nombre dans Je registce spécifié - nous verrons ceci plus en détail au chapitre 4 En fail , les possibilités réelles dun ASSEMBLEUR varient et sant toujours exposées dans sa notice . 24 FONCTIONNALITES de L' ASSEMBLEUR . Vous devez probablement vous demander la facon d'introduire le code Source en mémoire ... Cette opération se pratique avec um éditeur de textes intégre ou non au logiciel ASSEMBLEUR . Parfois , cot éditeur de textes Videntifie 4 éditeur BASIC . En effet , les deur ASSEMBLEURS pour X-07 (Voir ANNEXE 2} utilisent rediteur BASIC trés complet du CANON afin d’éviter den rééerice un. 29 Ensuite , In phase d'assemblage proprement dite débute . Elle est diviste , en général , en deur parties appeites des “PASSES”. La premiére PASSE examine consciencieusement le code source entré en mémoire et détermine 1a iongueur de chaque instruction . En effet , la jongueur d'une instruction peut varier de 1 & 4 octets (ex : RET occupe un octet et JP 4000 en occupe trois ..) . De plus, une table des labels rencontrés est consiruite et In syntare du code source est minutieusement controlte . La deuxiéme PASSE permet a !'ASSEMBLEUR de générer te code objet de chaque instruction . De plus , une adresse réelle est affectée 4 chaque label ‘ou symbole Nous allons maintenant étudier le format du code source , équivalent de ‘nos lignes BASIC . 2.5 FORMAT du CODE SOURCE . Le code source est constitué de lignes écrites les unes 2 Ia suite des autres, Chaque ligne posséde deux types de for mats : Le format FONCTIONNEL , raité par !ASSEMBLEUR , se compose de quatre champs distincts : LABEL , OPERATION , OPERANDE , COMMENTAIRE . —Le format COMMENTAIRE débute par un caractére précis (; ov ' en général) . Les lignes “commentaires” sont uniquement destinées & documenter Je Listing source . Eiles correspondent aux lignes débutant par un “REM” en BASIC. Voici un exemple de “lignes source” ‘ EXEMPLE FIN =P 4000 ‘On saute a la fin du programme Chamos: label/opération/opérande/commentaire La premiére ligne est une ligne de commentaires et Ia deuriéme est fonctionnelle . Sous chaque instruction , fe type du champ est défini . A partir de cela , nous allons ¢tudier tes particulsrites de chaque champ 2.5.1 Le champ LABEL . Ce champ débute toujours en premiére position de Ia ligne source par un caractére spécial (ex ; *) . Il est formé de caractéres oumériques ou alphabétiques , sans espace . Sa longueur est déterminge par les performances de Lassombleur utilisé . En général , ce champ se termine par le stparateur BASIC Ce champ label se révéle optionnel 4 l'usage : on peut trés bien sen passer bien que !'utilisation de labels clarifie le programme Exemples de LABELS : “EY , #1 , “DEBUT ... 2.5.2 Le champ OPERATION | Ce champ commence immédiatement aprés le champ LABEL si celui-ci est présent . Il est toujours obligatoire dans le format fonctionne! et se compose d'une instruction ou d'une pseudo-instruction (Voir chapitres 4 ets) Exemples : CALL ,LD, JP, RET ; ORG, DEFM 2.5.3 Le champ OPERANDE Ce champ esi pratiquement toujours présent (sauf dans le cas de certaines instructions telles RET , NOP ou HALT ..) et lie au type d’opération effectue immédiatement avant Ce champ peut comporter un ou deux arguments suivant le cas . Par exemple , RET NZ est un opérande comprenant un argument (NZ) et LD AB en comprend deur (A et B) Chaque argument peut adopter l'une des significations suivantes : — Une adresse . —Un pointeur adresse . — Un registre — Un pointeur registre ~Une donnée . — Un mot-clé de condition . : Ces différents types d'argument vont étre détaillés dans le paragraphe 6 25.4 Le champ COMMENTAIRE . Le champ “commentaire” doit obligatoirement étre plact aprés fe champ opérande . Ilest signalé 2 son début par un caractére spécial du style “~ ou *:" Ce a esl optionnel et permet-une meilleure documentation du listing ce. 2.6 Les ARGUMENTS de L’ OPERANDE . Nous avons vu précédemment que l'argument d'un opérande pouvait prendre plusieurs significations . in effet , ‘argument dopérande peut ¢ire constitue par ... 2.6.1 Une ADRESSE . Il s'agit dune adresse mémoire codée sur 16 bits ne pouvant 6 contenue que dans un double registre (BC , DE, HL ..) . Par exemple , on peut trouver LD HL,4520h ; LD 1X,2020h ...("h” designe Ia base 16) 2.6.2 Un POINTEUR ADRESSE . Un pointeur adresse permet d'accéder a [octet pointé par une adresse mémoire . Par exemple , en exécutant LD HL,(2000h) , on ne stocke pas l'adresse 2000h dans le double regisire HL mais loctet situé a I'adresse 2000h . Maniére tout a fait indirecte | Notez que les parentheses spécifient ce type d'argument . 2.6.3 Un RBGISTRE . En effet , ‘argument d'opérande prendra alors le nom de l'un des 16 registres suivants -BC DE, HL,SP,1X,1Y,AF,A,B,C,D,B,H, L, Low R. Vous no remarquez rien 7... Le regisire F ne pout étre utilisé seul car C'est un registre spécial (Voir le paragraphe 1.7.3) . Par exemple , on peut avoir OR D ; POP IX; LD BE. 2.6.4 Un POINTEUR RBGISTRE . Nous avons vu au paragraphe 2.6.2 une facon indirecte de designer un octet via une adresse . Le fail de prendre un registre au lieu d'une adresse ne change rien a laffaire | En effet , ce pointeur est constitue par un des registees suivants = (DB) . (HL) , (BC) , (TY) , (TX) et (SP) . Notez au passage que ces registres sont pourvus de parentheses comme pour le pointeur adresse Je pense que vous avez devin’ I'action de ce pointeur . Il permet daccéder 4 Foctet pointé par l'adresse contenue dans le cegistre mentionné entre les parenthésos ... OUF It! Par exemple , si le registce HL contient l'adresse 4500h et que lon execute LD B(HL), qu'arcivera t-il 7. Bh bien , le registre B contiendra l'octet situé en 45008 2.6.5 Une DONNEE . Li peut s‘agic d'une donnée constituée de 8 ou de 16 bits selon le type instruction utilisée . Cette donnée peut adopter plusieurs formes différentes exposées au paragraphe 2.7. Quelques exemples : LD BC4543h ; LD B4; LD A.18h 2.6.6 Un MOT-CLE de CONDITION _ Les instructions du NSC 800 peuvent tester la présence de conditions particuliéres matérialisées par les fameur indicateurs du registre F (Voir paragraphe 1.7.3) Un mot-clé correspond a chacune de ces conditions . Ii se trouve toujours on premier argument de Vopérande des instructions de branche ment (Bx - JP , CALL , RET ..) llexiste 8 mots-clés différents - Léco Non Zéro Carry Non Carry. Parite Paire Parite Impaire Moins (négatir) sees >» Plus (positif) VESERCR™ Voici deur exemples afin d'éclaircir vos idées Va CALL NZ, 40008 LD HL , (1000h) Ici , si Vindicateur NZ est positionné 4 1 , le programme se poursuivra en exécutant le sous programme situé a adresse 4000h puis reviendra . Sinon , si NZ nest pas positionné , te programme n'ira pas en 4000h et chargera seulement , dans le registre HL , V'octet situé en 1000h . a RET C JP 50008 Ici, Si Vindicateur se trouve étre égal a | , le programme exécutera le RET (RETURN) . Sinon , il poursuivra a adresse S000h & cause du JP QUMP) Apres avoir terminé le détail des champs , occupons-nous des données 2.7 DEFINITION des DONNEES . Une donnée en ASSEMBLEUR peut étre constituee par une constante ow une adresse mémoire On peut définir une donnée — 2.7.1 Bn DECIMAL | La notation décimale est fa plus répandue avec I'heradécimal . Les données peuvent éire signées ou non (Elles peuvent posséder un signe négatif ou positif) . Exemoles : LD BC,6000 ; LD A,32 ;LDC-9 .. 2.7.2 En BEEADSCIMAL . Suivant ASSEMBLEUR utilisé , un signe seca placé devant ou derriére In donnée pour préciser qu'il s‘agit d'un nombre heradécimal . Les symboles peuvent étre:$,h,H, &H, & ‘Hxemples : LD 1%,22h ; LD A,29b 2.1.3 En BINAIRE . Cette notation peu commode (comme nous l'avons déja remarqué ...) s'ulilise assez rarement et tous les ASSEMBLEURS ne 'acceptent pas . Exemples : LD HL,110100015 ; LD SP,1 10000118 ... Notez que la lettre “B” spécifie la base du nombre . 2.7.4 Sous forme d'un CARACTERE ASCII . Eerire un nombre sous forme ASCII est trés ingénieux car la lecture du listing source en est grandement facilitée . On encadre en général fe caractére entre deux guillemets . Bxemoles : LD B,” (@quivaut 4 LD B65) 2S Sous f "un LABEL ov d'un STMBOLE Si Vous avez la précaution de définir des labels , vous pouvez définir dos données “parlantes” . ce | Exemoles : LD A,"VALEUR1” ou JP "FIN" . 2.2.6 Sous forme d'une EXPRESSION . Certains ‘ASSEMBLEURS: Dermetient ce genre de désignation _ En effet vous pouvez définir une donnée comme fe résultat d'un expression a calculer ‘Exemples : LD BC2*(10-7)+5 AND 17 ; JP DEBUT + 8 .. 2.17 Sous forme OCTALE . Enfin , la notation octale , trés peu ulilisée . + peut servir & définir une Gonnte . En effet , la base 8 était res utiliste sur les premiers ordinateurs Trés peu de matériels acceplent dorénavant cette notation . Exemples (désuets ll) : LD B,640 ; LD A.1010 _ Notez la lettre “O" désignant la base 8 . Ce chapitre sur la structure intime de ! ASSEMBLEUR sachéve . Yous pouvez vous référer des maintenant aux programmes du chapitre 6 pour revoir en détail toutes les concepts exposés précédemment . Apres cela , vous pourrez continuer votre quéte du savoir en notre compagnie et celle des modes d'adressage - 35 Les modes d'adressage représentent les différents moyens d'accéder a une donnée . [is facilitent considérablement |écriture d'un logiciel tout en augmentant sa vitesse execution Le NSC 800 en possede sept explicites ci-dessous 3.1_LUADRESSAGE IMMEDIAT . Il constitue ladressage le plus simple que vous puissiez rencontrer _ En effet , il correspond & l'exemple précédemment évoque "JP 4000". Li convient uniquement de fournir adresse aprés la commande . Ainsi , charger le registre A avec le chiffre 9 s‘écrit "LD A,9° (LD signifiant “LoaD’ , cest a dire charger en francais) 3.2_L' ADRESSAGE REGISTRE . On part du principe que lopérande se trouve dans un des registres du NSC 800 . On obtiendra ainsi "LD A.B” (charge le registre A avec le contenu du registre B) mais aussi "JP HL” (saute adresse contenue dans le registre HL) 3.3.L' ADRESSAGE INDIRECT REGISTRE . On utilise un registre afin de pointer sur une adresse mémoire - Par exemple , instruction “LD A , (HL) , avec HL contenant la valeur 4000h , chargera dans l'accumulateur a valeur se situant a l'adresse 4000h . Notez que Jes parenthéses mar quent cette indirection Iifonctionne de la méme maniére que I'adressage indirect registre Mais, au lieu de placer adresse dans un registre , on la donne directement . Ainsi , “LD A, (5000)" chargera dans le regisire A Ia valeur située a 'adresse 5000 36 3.5_L’ ADRESSAGE RELATIF . Cet adressage n'est ulilisé que pour les sauts . Nous avons vu préctdemment l'instruction de saut "JP" . Parallélement , il en existe une autre notée “JR” (Jump Relative , en anglais) représentant le saut relatif Aprés l'instruction "JP" , nous devons fournir l'adresse od nous désirons parvenir . Avec linstruction “JR” , nous fournissons le nombre de cases mémoires dont nous voulons nous déplacer aussi bien en avant quien arrigre . Ce déplacement est fourni sur un octet . De ce fail , cela entraine une restriction importante puisque avec un octet , n0u8 ne pouvons coder que 256 cases . Le déplacement ne pourra donc dépasser 127 cases em avant et 128 cases en arriére (Voir figure 11) 3.6 L' ADRESSAGE INDEXE . Il s'agit en fait de s‘adresser 2 une case mémoire par un déplacement en avant ou en arridre . Cet adressage se pratique par rapport a une adresse précise comtenue dans [un des deur registres d'indexage IX ou IY (Voir paragraphe 1.7.1). Ainsi , nous pouvons écrire "LD A , (IX + 5)" : le registre A sera chargé avec [octet situé & l'adresse stockée dans le registre IX augmentée de 5 Comme préoédemment , le dépiacement est limité 4 127 en avant et 128 en arriére (Voir figure 12) 3.7L’ ADRESSAGE BIT, Maintenant , on ne s'adresse plus a un octet mais a un bit situé dans un registre ou dans une case mémoire Ainsi , Ia commande “SET 2 , A” positionne a 1 Je bit 2 du registre A , sans modifier les autres bits . On peut tester un bit ou le mettre a0 de In méme facon A la fin de ce chapitre , vous devez connaitre a peu prés la maitié de la structure de !'ASSEMBLEUR . Il ne reste plus qu'une ¢tape . étape 6 combien Primordiale : les instructions du NSC 800 a7 cH T 65535 < ADRESSE 2 Déplacement en avant (Maamum = 127) ADRESSE 1 jp ADR 2 == Déplacement en arriére (Maximum : 128) J 1° ADRESSE 2 -128 <= ADRESSE 2 - ADRESSE | <= 127 FIGURE 11.2 L’ ADRESSAGE RELATIF . 1X - 2224h . En faisant : LD A,(IX+2) -> A-7 LD AJIK-2) -» A=5 iT 65535. E——i5 ADRESSE 2226n 2 = ADRESSE 2224b 5|— ADRESSE 2222b 1° FIGURE 12: L’ ADRESSAGE INDEXE 38 Nous allons maintenant aborder le “gros morceau” de cetle premitre partie consacrée a I'assembleur 2-80 . En effet , nous allons vous exposer toutes Jes instructions disponibles , soit quelques 696 commandes distinctes I! Rassurez-vous , nous n’allons tout de méme pas vous les donner en vrac .. Nous avons distingué 11 familles d'opérations différentes , décrites une 2 une dans les pages suivantes . De plus , un tableau général , situé a l'anneze | , récapitule toutes les instructions disponibles . N'hésitez surtout pas a vous y reporter en cours de decture ... Avant de commencer , voici la liste des symboles utilisés an désignera une adresse sur 16 bits v désignera une valeur sur 8 bits w designera une valeur sur 16 bits dpl désignera un dépiacement dans lopérande des instructions en mode relatif r designera un regisire 8 bits rr désignera un regisire 16 bits 4.1 CHARGEMENT ot RANGEMENT . On utilise instruction LD (LoaD) . Les informations transiteront vers la ‘mémoire d'un registre ou vice-versa . Ainsi, LD A,(nn) charge V'accumulateur avec 1a valeur contenue dans Ia . case mémoire d'adresse on .On a aussi : LD AHL) ¢t inversement LD (HL),A LD BAHL) LD (HL)B LD r(aL) ‘LD (BL). Ceci est donc valable pour tous lea registres . Ici , c'est le rogistre HL qui Set de pointeur mémoire . De plus , le regitre A posséde un privilege : LDA{BC) et LD (BC),A LD A,({DB) LD (DB).A 39 Attention | Seul le registre A peut acoéder a la mémoire en se servant des registres BC et DE comme pointeurs . Nous avons aussi les adressages indirects indexes : LD IX + LD (IY + dpl)e LD r {1X + dpi) LD r (IY + dpi) En ce qui concerne LD (IX + dpl),r (respectivement LD (IY + dpi)r) , te registre considéré est chargé a I'adresse représenté par IX - dpl (respectivement IY + dpl) . Les instructions LD r,(IX + dp!) et LD r{I¥ + dpl) permettent de charger le registre r avec le contenu de l'adresse IX + pl ou IY + dpl.. De plus , on a les commandes suivantes LD (BL),v LD (IX + dpl).v LD (IY + dpD),v Dans ce cas , on range directement la valeur v en mémoire a !'adresse | correspondante (adresse contenue dans le registre HL , 1X + dpl ou IY + dpl) Par exemple , LD (HL) , avec HL contenant 4000 , va stocker & ladresse 4000 le chiffre 8 . Voyons maintenant l'adressage direct 16 bits LD rr.(an) LD (na),cr et Le contenu du double registre (BC , DB ou HL) est directement rangé ou charge 4 l'adresse nn (Poids faible 4 adresse faible nn et poids fort 4 l'adresse forte nn-1) . Par exemple , LD (7000),BC charge le contenu du double registre BC a Fadresse 7000 . De méme , LD HL,(9000) charge le contenu de l'adresse 9000 dans le doubie registre HL Pour terminer cette rubrique , voici deux instructions tres particuli¢res LDD et LDI.. Loctet dont l'adresse est pointée par le registre HL est chargé 2 Vadresse pointée par le registre DE. Simultan¢ment , le regisire BC se trouve decremente de 1 et provoque le passage 20 de lindicateur P/V lorsquill atteint une valeur aulle . De plus , les registres DE et HL sont décrémentés par LDD et incrémentés par LDI . 4.2 CHARGEMENT des REGISTRES ot ECHANGE . Linstruction LD rn permet de charger le registre r avec la valeur 2. Linstruction LD rr.am permet de charger le regisire rr avec 1a valeur nn. De plus , LD ry.tz charge le regisire r, avec ta valeur du registre r, : ¢ cune restriction !! On peut irés bien écrire LD A,A méme si ce n'est pas trés utile .. Mexiste trois autres instructions qui sont : LD SP,AL. LD SPX LD sP.Ir ‘Le registre SP (Stack Pointer) est chargé avec la valeur d'un de ces trois registres Plus précisément , voyons maintenant ‘instruction EEX . Nous avons vu prectdemment un deuriéme groupe de registres (A’ aL’) : EXX échange les deux familles de regisires , les mémoites A’ a L’ se comportant alors exactement comme {es registres A AL. Par exemple , RX AF,AF' échange le registre AF avec le registre AF". Il existe aussi EX (SP),HL , BX (SP),IX et EX (SP),IY : léchange est effectue entre !'un des doubles registres HL , IX et IY d'une part , et ia case memoire pointée par le registre SP dautre part (la pile ) 4.3 FONCTIONS ARITHMETIQUES . 43.1 ADDITION avec et sans CARRY ‘Les deur instructions ADD A,v et ADC A,v permetient d'ajouter Ia valeur v a celle contenue dans le regisire A . L’accumulateur contiendra donc le résultat en fin de calcul . Dans le cas de la commande ADC , le bit CARRY est positionné s'il existe une retenue ‘De la méme facon , ADD A,f et ADC A,r permettent d'ajouter le contenu du registre ¢ a celui du registre A qui contiendra le résultat final . D'autre part, les instructions suivantes per mettent quantité de choses ADD A,(HL) ADD AIX + dpt) ADD A(IY¥ + dpl) ADC AHL) ADC AIT + dpi) ADC A,(IY + dpi) Ici, fe contenu de la case mémoire adressée par le registre HL (ou par IX + dpl, IY + dpl) est ajoute au contenu de l'accumulateur . De plus , ADD BL,rr et ADC BL,cr (rr pouvant representer les regisires HL , DE , BC ou SP) permettent d'ajouter le contenu du registre rr au registre HL jouant le role d'un accumulateur . Enfin , ADD UX,rr et ADD I¥,re (avec rr pouvant représenter BC, DE, HL ou SP) permettent d'’effectuer addition du contenu du registre rr avec le contenu du registre [X ou IY . On remarque qu'il n’existe pas ios instructions ADD DX,rr ov ADC I¥.cr

You might also like