Chapitre 1 Introduction
1.1 Systèmes Numériques
La mémoire d’un ordinateur est constituée de nombres. Cette mémoire ne stocke pas ces nombres en décimal (base 10). Comme cela simplifie grandement le matériel, les ordinateurs stockent toutes les informations au format binaire (base 2). Tout d’abord, revoyons ensemble le système décimal.
1.1.1 Décimal
Les nombres en base 10 sont constitués de 10 chires possibles (0-9).
Chaque chire d’un nombre est associé à une puissance de 10 selon sa position dans le nombre.
1.1.2 Binaire
Les nombres en base 2 sont composés de deux chires possibles (0 et 1). Chaque chire est associé à une puissance de 2 selon sa position dans le nombre (un chire binaire isolé est appelé bit).
on peut voir que cette division sépare le chire le plus à droite du nombre et décale les autres chires d’une position vers la droite. Diviser par deux eectue une opération similaire, mais pour les chires binaires du nombre.
1.1.3 Hexadecimal
Les nombres hexadécimaux utilisent la base 16. L’hexadécimal (ou hexa en abrégé) peut être utilisé comme notation pour les nombres binaires. L’hexa a 16 chiffres possibles. Cela pose un problème car il n’y a pas de symbole à utiliser pour les chiffres supplémentaires après 9. Par convention, on utilise des lettres pour les représenter. Les 16 chires de l’hexa sont 0-9 puis A, B,C, D, E et F. Le chiffre A équivaut 10 en décimal, B à 11, etc. Chaque chire d’un nombre en hexa est associé à une puissance de 16.
1.2 Organisation de l’Ordinateur
1.2.1 Mémoire
L’unité mémoire de base est l’octet. Un ordinateur avec 32 mega octets de mémoire peut stocker jusqu’à environ 32 millions d’octets l’informations. Chaque octet en mémoire est étiqueté par un nombre unique appelé son adresse comme le montre la Figure 1.4.
Toutes les données en mémoire sont numériques. Les caractères sont stockés en utilisant un code caractère qui fait correspondre des nombres aux caractères. Un des codes caractère les plus connus est appelé ASCII (American Standard Code for Information Interchange, Code Américain Standard pour l’Echange d’Informations). Un nouveau code, plus complet, qui supplante l’ASCII est l’Unicode. Une des différences clés entre les deux codes est que l’ASCII utilise un octet pour encoder un caractère alors que l’Unicode en utilise deux (ou un mot ). Par exemple, l’ASCII fait correspondre l’octet 4116 (65 10 ) au caractère majuscule A ; l’Unicode y fait correspondre le mot 004116 . Comme l’ASCII n’utilise qu’un octet, il est limité à 256 caractères différents au maximum 3
. L’Unicode étend les valeurs ASCII à des mots et permet de représenter beaucoup plus de caractères. C’est important an de représenter les caractères de tous les langages du monde.
1.2.2 Le CPU (processeur)
Le processeur (CPU, Central Processing Unit) est le dispositif physique qui exécute les instructions. Les instructions que les processeurs peuvent exécuter sont généralement très simples. Elles peuvent nécessiter que les données sur lesquelles elles agissent soient présentes dans des emplacements de stockage spéciffiques dans le processeur lui-même appelés registres. Le processeur peut accéder aux données dans les registres plus rapidement qu’aux données en mémoire. Cependant, le nombre de registres d’un processeur est limité,donc le programmeur doit faire attention à n’y conserver que les données actuellement utilisées.
1.2.3 La famille des processeurs 80×86
Les PC contiennent un processeur de la famille des Intel 80×86 (ou un clone). Les processeurs de cette famille ont tous des fonctionnalités en com-mun, y compris un langage machine de base. Cependant, les membre les plus récents améliorent grandement les fonctionnalités.
8088,8086: Ces processeurs, du point de vue de la programmation sont identiques. Ils étaient les processeurs utilisés dans les tous premiers PC. Il orent plusieurs registres 16 bits : AX, BX, CX, DX, SI, DI,BP, SP, CS, DS, SS, ES, IP, FLAGS. Ils ne supportent que jusqu’à 1Mo de mémoire et n’opèrent qu’en mode réel. Dans ce mode, un programme peut accéder à n’importe quelle adresse mémoire, même la mémoire des autres programmes ! Cela rend le débogage et la sécurité très difficiles ! De plus, la mémoire du programme doit être divisée en segments. Chaque segment ne peut pas dépasser les 64Ko.
80286: Ce processeur était utilisé dans les PC de type AT. Il apporte quelques nouvelles instructions au langage machine de base des 8088/86. Cependant, sa principale nouvelle fonctionnalité est le mode protégé 16 bits. Dans ce mode, il peut accéder jusqu’à 16Mo de mémoire et empêcher les programmes d’accéder à la mémoire des uns et des autres. Cependant, les programmes sont toujours divisés en segments qui ne peuvent pas dépasser les 64Ko.
Cours complet sur les bases du langage assembleur PC (1361 KO) (Cours PDF)