CODING ★ Dr.Watson - Autoformation à l'assembleur par Micro Application ★

Dr.Watson - Autoformation à l'assembleur par Micro Application - Annexe 5

ANNEXE 5

Notations Binaire, en Code Binaire et en Hexadécimal

Les systèmes numériques modernes, en usage dans le monde entier, utilisent le système décimal. Il a été développé pour Pouvoir compter au delà de 10 et en deçà de 1. Dans ce système, les chiffres de gauche dans un nombre ont une valeur plus grande que ceux de droite; par exemple dans le nombre 66 le premier 6 a une valeur 10 fois supérieure au second, c'est-à-dire

66 --> 60

--> 6

Ceci est étendu dans des nombres plus grands dont les chiffres vers la gauche représentent des multiples de puissances de dix croissantes

6666 --> 6 x 1000

--> 6 x 100

--> 6 x 10

--> 6 X 1

Un système où la position ou emplacement d'un chiffre dans un nombre modifie sa valeur est appelé système numérique à Valeur d'Emplacement. En système décimal, la valeur du même chiffre placé tout de suite à gauche est dix fois Plus grande et c'est ce qu'on appelle la BASE de ce système. D'autres systèmes utilisent des bases différentes mais suivent le même modèle que le système décimal, c'est-à-dire que l'emplacement de gauche est plus grand, étant multiplié par la base.

L'ordinateur, fonctionnant avec le courant électrique, reconnaît seulement deux états, allumé ou éteint, souvent représentés Par "1" et "0". Il utilise donc le système binaire - c'est-à-dire la base 2. N'importe quel nombre en binaire est uniquement constitué de 0 et de 1, ou en électricité, éteint et allumé (ou en électronique, zéro volt et quelques volts). Pour compter après un, le système binaire doit employer la notation avec valeur d'emplacement et, comme dans les autres systèmes, le facteur de la multiplication est la base, c'est-à-dire 2. Dès lors, le nombre 101 en base 2 ou binaire représente:

1x4 0x2 1x1

^

---- 1 0 1 -----

c'est-à-dire 4+0+1=5. En fait, le grand nombre de bases présente un problème pour représenter les nombres. En système décimal (base 10), "101" représente cent un alors qu'en système binaire (base 2) "101" représente 5, Pour lever cette ambiguïté, il existe une convention pour représenter des nombres, la base est indiquée a la droite du nombre juste en dessous de la ligne. Dès lors nos deux nombres deviennent:

101 = Cent un en base dix

10

101 = Cinq en base deux

2

La génération actuelle d'ordinateurs domestiques utilise des registres ou mémoires de huit bits et peuvent donc représenter des nombres Jusqu'à 11111111, c'est-à-dire 255 en base 10:

128 + 64 + 32 + 16 + 8 + 4 + 1 = 255

; 10

1 1 1 1 1 1 1 = Chiffre

; Equivalent en

128 64 32 16 8 4 1 base 10

; FIGURE A.1

Exécutons un autre exemple de conversion - prenons 10100111 (base 2)

1 x 128 0 x 64 1 x 4 1 x 2 1 x 1

^ ;^ ;^ ----------^ ^

------------1 0 1 0 0 1 1 1---------------------

------^ ^ ^-------

;1 X 32 0 X 16 0x8

Donc 10100111 = 1x128 +0x64 +1x32 +0x16 +0x8 +1x4 +1x2 + 1x1

; = 128+32+4+2+1

; = 167

; 10

Pour être sûr que vous avez bien compris, essayez l'exercice suivant:

EXERCICE A5.1

Calculer la valeur des nombres binaires suivants en base 10:

I) 00000011

;2

II) 00000100

; 2

III) 10000000

; 2

IV) 10000011

; 2

V) 10110111

;2

VI) 01110011

;2

Les réponses se trouvent dans le chapitre solutions.

Pour rendre plus claire l'idée de conversion de nombres de décimal en binaire essayez le programme "BIN/HEX" sur la cassette. Tapez ce qui suit:

RUN "BIN/HEX"

L'ordinateur va charger et exécuter automatiquement le programme et faire apparaître l'affichage initial du programme. Examinez-le bien.

Ne vous souciez pas des cases "HEX" et "BCD", nous y viendrons par la suite. Ce qui nous intéresse pour l'instant ce sont les cases "Décimal" et "binaire".

Comme l'affichage l'indique, le programme attend que vous entriez un nombre entre 0 et 255, Tapez "1" et appuyez sur "ENTER". L'écran change:

Toutes les cases ont changé pour afficher la valeur de 1 dans les différentes notations. Les cases d'instruction vous indiquent que la valeur actuelle peut être incrémentée ou décrémentée en utilisant respectivement les touches curseur flèche haut et flèche bas.

Appuyez sur la touche flèche haut et à mesure que les valeurs augmenteront vous pourrez voir comment on compte en binaire. Si maintenant vous appuyez sur "E" vous pourrez entrer un nouveau nombre de départ. Entrez "15" et la case binaire devrait contenir "00001111". Maintenant incrémentez ce nombre de un. Les quatre octets de gauche (les octets les moins significatifs) sont tous passé à zéro et le cinquième octet est devenu un.

Pour comprendre ceci posons l'addition;

A

+ 1 B

En ajoutant le 1 a 1 on obtient "2" c'est-à-dire 0, retenue 1. Cette retenue produit un autre "0" + une retenue, et ainsi de suite.

Quand le registre est plein, c'est-à-dire quand on a 8x11111111, l'addition d'un 1 supplémentaire remettra le registre à zéro et 256 sera perdu. Cependant tout n'est pas perdu avec le microprocesseur Z80 car il a un flag carry qui enregistre le fait qu'une retenue s'est produite, (le flag carry est indiqué par "CF" sur l'affichage.)

Pour voir le flag carry fonctionner appuyez sur "E" et ensuite commencez le comptage à 250, c'est-à-dire entrez 250 . Maintenant il est facile d'incrémenter jusqu'à 255 ou &x11111111.

Maintenant surveillez la case binaire lorsque vous passez de 255 à 256. Le système binaire revient à zéro + le bit de retenue. C'est une propriété très pratique du Z80 mais sur laquelle on ne doit compter u pour stocker temporairement la retenue. Il est tout aussi facile de remettre à zéro ce bit que de le mettre sur un.

Le programme acceptera aussi des nombres entrés sous la forme binaire. Cependant, pour faire cela le nombre DOIT être précédé du préfixe "&x". Dès lors pour entrer le nombre binaire 101010 (42) tapez:

&X101010

et ensuite tapez ENTER. Toutes les cases changent pour afficher 42 dans les différentes notations.

Pour voir si vous comprenez bien la notation binaire essayez de convertir les nombres binaires suivants en décimal sur le papier et utilisez ensuite le programme pour contrôler vos réponses.

EXERCICE A5.2

i) 11111

ii) 101001

iii) 1011101

iv) 10001000

Les réponses sont dans le chapitre des solutions.

Gardez le programme BIN/HEX dans l'ordinateur; vous en aurez besoin bientôt!

Alors que les 0 et les 1 sont pratiques pour l'ordinateur, ils le sont beaucoup moins pour l'homme moyen il faut donc trouver un compromis. La notation décimale est peu utilisée car à part 1 en base 10 et 1 en base 2, il n'y a pas d'autre correspondance. Une autre idée serait de prendre les huit bits binaires pour un chiffre (c'est-à-dire jusqu'à 255) et d'utiliser une base de 256! Quelle objection verriez vous à cela, en dehors du fait que l'idée elle-même est un peu tirée par les cheveux?

C'est le moment de réfléchir... La réponse vient de l'examen du cas de la base 10 dans laquelle dix chiffres (0 à 9) sont nécessaires pour représenter les dix étapes jusqu'à 10. En base 2, on a besoin de deux chiffres, il faudrait donc 256 chiffres en base 256!

HEXADECIMAL

Un système de compromis adopté sépare les huit bits en deux parties et représente ceux-ci séparément. Dès lors le plus grand nombre à être représenté est 8x1111 ou 15 et ceci nécessite, en comptant zéro, seize symboles différents. Ceux adoptés dans ce but sont:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Nombre décimal

0 1 2 3 4 5 6 7 8 9 A B C D E F Symbole (Nombre hexadécimal)

FIGURE A5.2

En utilisant cette notation, n'importe quel nombre de huit bits peut être représenté avec deux symboles, un pour les quatre bits les plus significatifs et un pour les quatre bits les moins significatifs. Pour éviter la description plutôt longue de ces deux moitiés d'octet, on leur donne le nom de quartet. Dès lors un octet consiste en deux quartets, un quartet plus significatif ou quartet fort et un quartet moins significatif ou quartet faible - voir Figure A5.3.

1 1 1 1 ! 1 1 1 1 = 255

quartet fort quartet faible

15 1 1 1 1 1 1 1 1 = 15

F ;F =

16 ; 16

; FF

; 16

FIGURE A5.3

On donne au système qu'on a décrit le nom d'HEXADECIMAL - le plus souvent appelé HEXA en abrégé. Son avantage principal, pour ce qui concerne les ordinateurs, est qu'il est compatible avec le système binaire. N'importe quel nombre de huit bits peut être représenté par deux caractères hexadécimaux.

Si vous regardez maintenant la case en haut à droite sur l'écran à laquelle on ne voulait pas s'intéresser auparavant, vous pouvez voir qu'elle compte en HEXA. La compatibilité entre binaire et HEXA apparaît même pour une retenue importante - Prenez par exemple &x1111, 15 ou &F : après un incrément cela change les 1 binaires en zéro et ajoute un 1 à gauche, c'est-à-dire; &x10000 ou &10. Ces points primordiaux de correspondance se produisent ainsi:

;PHASE 1

; &x1 = &1 = 1

&x0001 0000 = &10 = 16

&x0000 0001 0000 0000 = &100 = 256

&X0001 0000 0000 0000 = &1000 = 4096

Comme vous avez déjà pu le remarquer, le comptage décimal est présent sur l'affichage DEC/BIN/HEX et on peut y suivre la progression du comptage.

Appuyez sur "E" et entrez la valeur de départ "1" et une nouvelle fois commencez d'incrémenter le comptage. Jusqu'à 9, les caractères hexa correspondent aux caractères décimaux et entre 10 et 15 chaque lettre correspond à un nombre décimal. Après 15, la conversion d'hexadécimal en décimal devient un petit peu plus compliquée, comme l'utilisation de deux nombres ensemble, par exemple &FF = 255, appelle une nouvelle fois une notation à valeur d'emplacement. Cette fois comme la base est 16 la proportion entre chaque emplacement et son voisin est 16.

Les valeurs en base 10 des emplacements en hexadécimal sont:

x 4096 x 256 x 16 x 1

;1 2 3 4 Numéro d'emplacement

FIGURE A5.4

L'utilisation des Figures A5.4 et A5.5 illustre la décomposition de E92F en base 16 dans 59695 en base 10.

;E 9 2 F

E(14)x4096 + 9x256 + 2x16 F(15)x1 = 59695

FIGURE A5.5

Maintenant que vous maîtrisez complètement la notation hexa, essayez ce qui suit les deux premiers sont expliqués en détail dans le chapitre des solutions.

EXERCICE A5.3

Calculez la valeur décimale des nombres suivants:-

i) &09 v) &OA

ii) &13 vi) &1A

iii)&A5 vii) &EA

iv) &AE

Faites d'abord l'exercice ci-dessus sur le papier. Le programme accepte aussi l'entrée de nombres en hexadécimal mais ils doivent être précédés du préfixe "&", Dès lors si vous entriez la valeur "&FF" l'équivalent décimal, 255, serait affiché. Vous pouvez contrôler vos réponses à l'exercice A5.3 en utilisant le programme ou en regardant dans le chapitre des solutions. Gardez le programme, vous en aurez besoin dans un moment.

DECIMAL CODE EN BINAIRE

En plus des notations décimale, binaire et hexadécimale on utilise un autre système en informatique, le système décimal codé en binaire (BCD). Comme son nom l'indique c'est une forme hybride avec a la fois des éléments du système binaire et du système décimal. Il est communément utilisé là où on a besoin d'une sortie en format digital, par exemple pour une montre digitale, ou quand on a besoin d'une grande précision et qu'aucun bit ne peut être gaspillé.

En BCD la base décimale normale est retenue, c'est-à-dire qu'un emplacement est un facteur de 10 fois son voisin mais tous les différents chiffres sont représentés en binaire. Le nombre 87 sera donc représenté par:

; 8 7 base 10

; 1000 0111

c'est-à-dire BCD = 1000 0111 (ou en huit bits 10000111)

FIGURE A5.6

Comme le plus grand chiffre utilisé en notation décimale est 9, on a seulement besoin de quatre bits en binaire pour le représenter, c'est-à-dire 9 = &x1001, un chiffre en BCD peut donc être représenté par un quartet et deux chiffres par un octet. La Figure A5.6 nous le montre, où 87 est représenté en BCD par &X10000111. Cela peut créer une ambiguïté dans le fait que &X10000111 en binaire égale 135. Pour la lever , les représentations en BCD prendront la notation suivante 10000111 (BCD).

En utilisant quatre bits du binaire, il est possible de compter jusqu'à 15 (8X1111 = 15) mais en BCD le plus grand chiffre est 9, inévitablement BCD est moins économique dans son utilisation de la place mémoire. Son plus grand chiffre, 9, égale &X1001 et si on lui ajoute un on fait tourner jusqu'à &X0000 et on retient 1 pour le quartet suivant, c'est-à-dire

8 = 0000 1000 (BCD base 2)

9 = 0000 1001 " " "

10 = 0001 0000 " " "

11 = 0001 0001 " " "

FIGURE A5.7

L'affichage qui nous concerne est celui marqué BCD. Appuyez sur "E" et entrez la valeur de départ de 1. Si vous incrémentez les 9 premiers nombres vous verrez que Jusqu'à 9, binaire et BCD sont identiques. Cependant, quand vous incrémentez surveillez la case BCD et vous pourrez voir le 1 transféré sur le quartet le plus significatif. A partir de 10 BCD devient un véritable hybride représentant un nombre décimal sous une forme binaire.

A mesure que les nombres entrés augmentent, la nature non-économique du BCD devient apparente. Si maintenant vous entrez une nouvelle valeur de départ de 95 et commencez à incrémenter vous pouvez voir le problème quand 99 devient 100. Quand le comptage est exécuté, de toute façon l'accumulateur est faussé et contient des valeurs incorrectes. Le programme y remédie en affichant dans la case le message "TROP GRAND POUR BCD". Si vous décrémentez jusqu'à 99 ou moins, la valeur BCD appropriée est de nouveau affichée mais le flag carry reste mis. (Si vous voulez, vous pouvez annuler les deux flags carry en appuyant sur "R". Cependant, le flag BCD sera remis aussitôt qu'une valeur supérieure à 99 est rencontrée). Quand on incrémente de 99 à 100, le BCD génère une retenue de son quartet le plus significatif sur le flag carry afin que le Z80 ne la perde pas mais mette le flag.

Comme on l'a vu plus haut, cette retenue n'est qu'un expédient à court terme et on doit la prendre en compte le plus tôt possible si on ne veut pas la perdre. La retenue est générée sur les case du BCD à 99 alors que les cases binaires seront stockées jusqu'à 256 et les décimales jusqu'à 999. Le BCD est moins économique mais il a ses utilisations dans des situations particulières.

Maintenant que vous savez tout sur le BCD, essayez l'exercice suivant:-

EXERCICE A5.4

Convertissez les nombres décimaux suivants en BCD:

i) 4 ; v) 53

ii) 10 ; vi) 102

iii) 77 ;vii) 953

iv) 97 viii) 2579

Les réponses sont dans le chapitre des solutions

EXERCICE A5.5

Convertissez les nombres BCD suivants en décimal:-

i) 0000 0001

ii) 0000 1001

iii) 0001 0101

iv) 0010 0000

v) 0100 1001

vi) 0010 0011

vii) 1001 0111

viii)1000 1000

Les réponses sont dans le chapitre des solutions.

Malheureusement pour vous, le programme n'accepte pas les nombres entrés en notation BCD. Cependant si vous êtes désespéré vous pouvez entrer chaque quartet séparément.

Dans l'explication donnée pour la valeur des emplacements en notation à valeur déplacement une simplification a été adoptée pour rendre ces explications plus claire pour ceux au! n'ont pas un grand penchant pour les mathématiques! Cependant, si vous désirez avoir une explication légèrement plus mathématique, lisez ce qui suit. Sinon - FIN DE L'ANNEXE 5.

Avec les nombres binaires, on a dit que les emplacements augmentaient leur valeur par puissances de 2, mais le bit le moins significatif du nombre binaire est équivalent au même symbole en base 10 (ou dans ce cas en base "S, ou autre). En fait, le facteur multiplicateur est la base, mise a la puissance de son emplacement en commençant par zéro a gauche. Par exemple en binaire:

7 6 5 4 3 2 1 0 Emplacement

128 64 32 16 8 4 2 1 Facteur multiplicateur

; précédemment cité

2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 Facteur mathématiquement

;plus précis

Le bit le moins significatif est multiplié par 2^0 soit un. (Si vous n'en "êtes pas sûr essayez la commande directe PRINT 2^0.) Le bit suivant est multiplié par 2^1, et ainsi de suite.

Cette règle s'applique pour n'importe quelle base. Appliquons-la en hexa, c'est-à-dire en base 16:

Facteur du bit le moins significatif = 16^0 =1

Facteur du 2ème bit le plus significatif = 16^1 = 16

Facteur du 3ème bit le plus significatif = 16^2 = 256

Facteur du bit le Plus significatif = 16^3 = 4096

★ ANNÉES: 1985
★ AUTEUR: T. Hebertson
★ CONVERTION: CRACKERS VELUS

Page précédente : Dr.Watson - Autoformation à l'assembleur par Micro Application - Annexe 4
 
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 392 millisecondes et consultée 1321 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.