CODINGHEBDOGICIEL ★ LA PAGE PÉDAGOGIQUE D'HEBDOGICIEL 115 : FORMATION À L'ASSEMBLEUR - LOGIQUE OU ARITHMETIQUES ★

La page pédagogique d'hebdogiciel 115 : Formation à l'assembleur - Logique ou ArithmetiquesCoding Hebdogiciel

LA RÉVOLUTION CONTINUE !

Comme vous l'a annoncé, te mois dernier, l'hôtesse de l'air, nous allons commencer notre voyage par la numérotation binaire et hexadécimale. Ces notions sont très importantes car, quand vous visualiserez aussi bien tin nombre binaire qu'aujourd'hui un nombre décimal, voua n'aurez aucun mai à comprendre le fonctionnement du microprocesseur. Pourquoi ? Parce que celui-ci ne connaît que deux chiffres : 0 et 1 !

OCTETS ET BITS

Le bit est 18 plus petite case du microprocesseur et de la mémoire (attention, ne confondez pas avec le mot anglais BYTE qui signifie OCTET). Nous ne parlerons donc que de bits et d'octets et jamais de bytes. Quand vous voyez ce mot dans un livre ou une revue anglaise, traduisez tout de suite par : octet. L'octet est un ensemble de huit bits. Ce que j'ai appelé, le mois dernier, case mémoire n'est rien d'autre qu'un octet. Vous savez certainement (sinon je vous l'apprends) que le 280 est un microprocesseur 8 bits, ce qui signifie qu'il peut traiter des mots (données) de 8 bits uniquement. Les bits d'un octet sont numérotés de 0 à 7 en commençant par la droite :


Schéma 1

Le Z80 peut se rendre dans 65536 cases comme celle-là.

ZERO, UN, DIX, ONZE, CENT, CENT UN, CENT DIX...

En décimal, nous connaissons dix chiffres de 0 à 9, ce qui nous permet de numéroter dix éléments avec les dix chiffres disponibles. Quand nous voulons numérote/ un onzième élément, nous utilisons un deuxième chiffre que l'on appelle la décimale. En binaire, c'est klf-kif bourricot I Quand on veut numéroter un troisième élément, on ajoute un chiffre devant. Mais, un bon programme valant mieux qu'un long discours, voici :


Listing 1

Faites tourner ces quatre splendides lignes, appuyez sur une touche pour passer au nombre suivant et admirez comme c'est beau ! (Quand je vous disais que c'était facile I) Observez bien os qui se passe, et vous devriez être capable très rapidement de faire une addition binaire comme celle-ci :

   01100101
+  00101100
------------
=  10010001Suivez bien la raisonnement, comme en décimai, de gauche à droite :

     1 + 0 = 1
     0 + 0 = 0
     1 + 1 = 10 je pose 0 et retiens 1
 0 + 1 + 1 = 10 je pose 0 et retiens 1
 0 + 0 + 1 = 1
     1 + 1 = 10 je pose 0 et retiens 1
 1 + 0 + 1 = 10 je pose 0 et retiens 1
 0 + 0 + 1 = 1


Vous pouvez vérifier le calcul en tapant :

PRINT BIN$(&X01100101 + &00101100)


Enfantin, non ? Remarquez que, d'un simple coup d'oeil, on voit si un nombre binaire est pair ou impair : il suffit de regarder le bit 0 (celui de gauche). S'il est à 1, le nombre est impair, s'il est à 0... Vous avez compris (du moins Je l'espère, sinon c'est à désespérer !)

1.2,3,4,5,6,7,8,9,A,8,C,D,E,F

Au suivant ! Et le suivant c'est l'hexadécimal. Pourquoi ? Parcs que ça prend moins de placé. Pour représenter, en binaire, un octet dont tous les bits sont à 1, il nous faut huit caractères: 11111111.
Représenté en hexadécimal, ce même octet n'en prendra que deux (de caractères) : FF. Donc, pour lis- ' ter un programme, ou pour le charger en mémoire, la notation hexadécimale est de loin préférable. Je vous entends penser : Je décimal n 'est pas mal non plus ! Alors, avant que vous ne perdiez votre salive à prononcer cette phrase somme toute intéressante, Je vous répondrai par un programme d'enfer :


Listing 2

Ouvrez grands vos yeux verts vers votre écran vert et constatez : le décimal ne correspond à rien par rapport au binaire, quand on a besoin d'un chiffre supplémentaire en décimal (pour passer de 9 à 10 par exemple), en binaire on est à 1010 et l'on a pas encore besoin de bit supplémentaire, alors qu'en hexadécimal le plus grand chiffra (F) correspond exactement à 4 bits. Il est donc beaucoup plus facile de convertir entre le binaire et l'hexadécimal qu'entre le binaire et le décimal.

A L'ENTERREMENT OU DECIMAL

Dorénavant, nous ne parlerons plus de décimal. Les adresses mémoire seront toujours représentées en hexadécimal et les manipulations de bits, en binaire. En Basic Amstrad, ' le signe & ou & H doit toujours précéder un nombre hexadécimal, alors qu'avec l'assembleur HISOFT DEVPAC, c'est le signe ££ qui doit être placé devant. De même un nombre binaire doit être précédé, en Basic, du signe &X et avec l'assembleur DEVPAC,   du   Signe  %.

8 BITS OU 16 BITS

Une donnée fait toujours un octet, c'est-à-dire 8 bits. Cette donnée peut être dans un registre du microprocesseur ou, beaucoup plus souvent, dans la mémoire. Puisque le microprocesseur peut adresser 65636 octets. Il lui faut 16 bits pour pouvoir numéroter toutes ces cases. Les numéros affectés à celles-ci vont de &H0000 à &H FFFF et sont appelés adresses mémoire. Pour mettre en mémoire une adresse, il nous faudra donc deux octets :

    adresse hexa      octet 1     octet 2
     8050           80          50

L'octet numéro 1 est appelé octet de poids fort et l'octet numéro 2 octet de poids faible. Tout simplement parce que l'octet 1 pèse plus lourd dans la valeur du nombre. Pour mieux comprendra. Il suffit de faire la rapprochement avec un nombre décimai. Prenons le nombre 55, le chiffre de gauche {décimal) Influe de dix sur la valeur du nombre. Si vous le décrémentez de 1, vous obtenez 45, alors que si vous décrémentez le chiffre de droite (unité), vous obtenez 54. Nous retrouverons souvent celte notion de poids fort et poids faible, de même en binaire. Le bit 7 d'un octet sera le bit de poids fort (ou plus significatif) et le bit 0 sera le bit de poids faible (ou moins significatif).

Le mois prochain, quand vous aurez bien digéré tout cela, nous entrerons dans le microprocesseur (un vrai régal I).

RECREATION

Que les cancres se réveillent ! Voici une petite merveille ! (Oui a dit Poil aux oreilles ?)


Listing 3

Marrant , non ? Et utile !

Patrick DUBLANCHET , Hebdogiciel n°115

★ LICENCE: COMMERCIALE
★ ANNÉE: 1985
★ AUTEUR: Patrick Dublanchet

Page précédente : La page pédagogique d'hebdogiciel 111: Basic et Langage Machine

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