En assembleur, on appelle segment de mémoire le mécanisme de base
de la gestion des adresses pour des processeurs de type 80x86.
Les instructions
sont stockées dans le registre IP. Il s'agit d'adresses dont la taille est de 16 bits.
Or, avec 16 bits il n'est possible d'adresser que 216= 64 Ko.
Les bus d'adresses récents possèdent toutefois 32 bits. Les adresses
qu'ils véhiculent sont donc constituées de deux composantes de 16 bits:
- un segment de 16 bits
- un déplacement (ou offset en anglais) de 16 bits
Les segments sont stockés dans des registres de 16 bits, dont les deux principaux sont:
- Le segment de données: DS (Data Segment)
- Le segment de code: CS (Code segment)
Le processeur utilise le segment CS pour lire le code d'une instruction. Lors de la lecture
de celui-ci il crée une adresse de 32 bits formée de la paire constituée
par le registre segment CS et le registre de déplacement IP, on note cette paire CS:IP.
Le registre segment CS est initialisé automatiquement au chargement du programme
sur le segment contenant la première instruction à exécuter.
Le segment DS permet au processeur d'aller chercher les données stockées à
une adresse. Il crée alors la paire constitué du registre segment DS et de l'adresse
16 bits indiquée dans l'instruction. C'est au programmeur de définir dans le code source
l'adresse du segment de donnée à utiliser, en initialisant le registre DS.
|