EEIJ

Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux


Sommaire


Conforme à XHTML 1.0 Strict Conforme à CSS!

On se lasse de tout, sauf de comprendre.
Attribué à Virgile.

Quelques éléments sur le binaire, l'hexadécimal, le microprocesseur

Historique

29 juillet 2010 : Création de cette page sur l'ancien site de Païou.

Difficulté

Pour : tout visiteur ayant un esprit logique.

 Introduction

Cette page est loin d'être un cours de programmation. Elle rassemble simplement quelques éléments importants.

 Jouer avec le binaire

 Le binaire

L'informatique utilise le code binaire pour toutes ses opérations.
L'explication vient du fait que les premiers ordinateurs fonctionnaient à l'aide de composants (lampes, puis transistors, puis circuits intégrés, puis microprocesseurs) qui avaient deux états, comme un interrupteur :

Haut

 Opérations logiques sur les binaires et tables de vérité

Les composants électroniques mentionnés ci-dessus permettent de réaliser des fonctions 'logiques' de base.

La transposition mathématique s'appelle 'Algèbre de Boole' et les fonctions précédentes deviennent des 'opérateurs booléens'.

On appelle table de vérité, un tableau qui indique le résultat d'une opération données pour toutes les valeurs possibles des variables d'entrée..

Voici les 4 fonctions électroniques et les opérateurs associés :

Haut

 Codage binaire des nombres, codage hexadécimal

Comme indiqué plus haut, l'ordinateur ne comprend que le binaire. Il faut donc coder les divers éléments.

Le binaire

Tous les éléments de notre code décimal habituel peuvent être représentés en codage binaire. L'élément de base s'appelle un bit (b).
La figure ci-contre montre la correspondance entre notre système décimal bien connu et son codage en système binaire (survolez l'image avec la souris pour agrandir).

On voit que la valeur de chaque nouveau bit correspond à une puissance de deux : 1, 2, 4, 8, 16 ...

On voit également que, très rapidement, il faudra beaucoup de bits pour coder un nombre, même de faible valeur.
C'est pour cette raison que l'on a introduit deux nouvelles notions :

Haut

 Le microprocesseur

C'est lui qui traite les données en fonction d'un programme qui lui a été donné.
Il lit le programme et exécute les instructions.

Afin de ne pas compliquer inutilement cette initiation, vous ne trouverez que le cas du processeur 16 bits, c'est-à-dire un processeur dont la taille des registres généraux est de 16 bits. Par registres généraux on entend les registres servant dans le jeu d'instructions du processeur. (Voir Introduction à la programmation / Notions de base). Actuellement les registres ont 32 voire 64 bits. Le jeu d'instructions devient de plus en plus important.

Haut

 Les registres

La plupart des opérations d'un microprocesseur s'effectuent dans un registre, entre deux registres, entre un registre et la mémoire.
Voici la liste des registres, avec leur taille et leur fonction, pour une architecture appelée x86 16 bits. Elle correspond aux processeurs Intel, jusqu'au 80286. Pour des raisons de compatibilité, les programmes actuels peuvent toujours les utiliser.

CodeTailleNomUsage habituel
Registres de travail
AX16Accumulateuropérations arithmétiques
paramètres pour INT
BX16Baseindice de tableau por accès mémoire
calculs arithmétiques
calcul sur les adresses
CX16Compteurcompteur pour les boucles
DX16Donnéesstocke des données provisoires

CodeTailleNomUsage habituel CodeTailleNomUsage habituel
Registres de segment Registres d'offset
CS16segment du codesegment de l'adresse de la prochaine instruction IP16pointeur d'instructionsCS:IP = adresse de la prochaine instruction
DS16segment des donnéessegment du début des données (source) SI16index des sourcesDS:SI = opérations sur les chaînes (source)
ES16Extra segmentsegment à usage libre DI16index de destinationES:DI = opérations sur les chaînes (destination)
SS16segment de la pilesegment de la pile SP16pointeur de la pileSS:SP = adresse du dernier élément de la pile
BP16pointeur de baseSS:BP = accèder aux données de la pile lors d'appels de sous-programmes (CALL)
Haut

 La mémoire

En mode réel, l'adresse d’un octet en mémoire est définie sur 20 bits, ce qui correspond à 1 Mo.

adressage

Mais les registres du processeur n'ont que 16 bits. Il faut donc utiliser deux registres pour adresser toute la mémoire : un registre de segment et un registre d'offset.
L'adresse effective est déterminée de la façon suivante : la valeur du segment est multipliée par 16 (ce qui correspond à un décalage de 4 bits vers la gauche) et l'offset est ajouté au résultat.

Une adresse s'écrit de la façon suivante : 0000:7C00c'est à dire segment:offset.

Haut

 La suite

La mise en bouche étant faite, quelle est la suite ?

Un tout petit peu d'assembleur, juste pour voir ? Cliquez

Ou alors directement le bash ? Cliquez