Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux
On se lasse de tout, sauf de comprendre.
Attribué à Virgile.
29 juillet 2010 : Création de cette page sur l'ancien site de Païou.
Pour : tout visiteur ayant un esprit logique.
Cette page est loin d'être un cours de programmation. Elle rassemble simplement quelques éléments importants.
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 :
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 :
Entrée1 : a | Entrée2 : b | Sortie : a OU b |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
Entrée1 : a | Entrée2 : b | Sortie : a ET b |
---|---|---|
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
Entrée1 : a | Entrée2 : b | Sortie : a XOU b |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
Entrée : a | Sortie : NON a |
---|---|
0 | 1 |
1 | 0 |
Comme indiqué plus haut, l'ordinateur ne comprend que le binaire. Il faut donc coder les divers éléments.
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 :
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.
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.
Code | Taille | Nom | Usage habituel |
---|---|---|---|
Registres de travail | |||
AX | 16 | Accumulateur | opérations arithmétiques paramètres pour INT |
BX | 16 | Base | indice de tableau por accès mémoire calculs arithmétiques calcul sur les adresses |
CX | 16 | Compteur | compteur pour les boucles |
DX | 16 | Données | stocke des données provisoires |
Code | Taille | Nom | Usage habituel | Code | Taille | Nom | Usage habituel |
---|---|---|---|---|---|---|---|
Registres de segment | Registres d'offset | ||||||
CS | 16 | segment du code | segment de l'adresse de la prochaine instruction | IP | 16 | pointeur d'instructions | CS:IP = adresse de la prochaine instruction |
DS | 16 | segment des données | segment du début des données (source) | SI | 16 | index des sources | DS:SI = opérations sur les chaînes (source) |
ES | 16 | Extra segment | segment à usage libre | DI | 16 | index de destination | ES:DI = opérations sur les chaînes (destination) |
SS | 16 | segment de la pile | segment de la pile | SP | 16 | pointeur de la pile | SS:SP = adresse du dernier élément de la pile |
BP | 16 | pointeur de base | SS:BP = accèder aux données de la pile lors d'appels de sous-programmes (CALL) |
En mode réel, l'adresse d’un octet en mémoire est définie sur 20 bits, ce qui correspond à 1 Mo.
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.
La mise en bouche étant faite, quelle est la suite ?