Salut,
J'ai souvent vu la syntaxe avec reg:[imm], je ne sais pas a quoi elle sert, pouvez-vous me l'expliquer précisément svp ?
Salut,
J'ai souvent vu la syntaxe avec reg:[imm], je ne sais pas a quoi elle sert, pouvez-vous me l'expliquer précisément svp ?
Le registre doit être un registre de segment et le sens change en mode réel et en mode protégé. En gros en mode réel c'est relativement simple à comprendre mais lourd à utiliser, en mode protégé c'est lourd à comprendre mais simple à utiliser.
:wq
Ok, mais c'est pour faire quoi ?
Par exemple que fait cette ligne ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part mov bl, es:[17h]
Elle charge dans BL la valeur contenue par l'octet se trouvant à l'offset 0017h du segment pointé par le registre es.
Au tout début, le plan mémoire adressable l'était à l'aide d'un bus de 16 bits, soit 64 ko de mémoire maximum. Pour permettre aux microprocesseurs de travailler avec plus de mémoire, directement, sans avoir à piloter un périphérique pour commuter logiciellement des pages, on a bien sûr élargi la taille du bus (jusqu'à 20 puis 32 bits) mais pour conserver les registres existants et ne pas avoir à modifier le processeur entier pour gérer des registres plus larges, on a adjoint aux registres d'offsets les registres de segment, dont la valeur s'ajoute à l'offset mais décalée de 4 bits (donc multipliée par 16).
En gros, tu peux placer un segment n'importe où dans ta mémoire avec une granularité de 16 octets, et de cet endroit, tu peux voir en une fois une plage de 64 ko maximum sans avoir à changer de segment.
Par défaut, implicitement, le segment de code est dans CS et le segment de données est dans DS. Ça veut dire qu'un
est équivalent à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part mov bh,[17h]
Mais tu peux préciser - dans une certaine mesure - celui avec lequel tu travailles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part mov bh,ds:[17h]
Puis le mode protégé est arrivé sur Intel 80x86 pratiquement en même temps que le 32 bits. Les registres étant élargis, les segments en tant que tels n'avaient plus de raison d'être mais on a conservé la notion - et les registres - pour les utiliser à une fin légèrement différente : on définit arbitrairement des plages en mémoire, on les numérote et on leur donne en quelque sorte des droits d'accès. Le registre de segment contient alors le numéro du segment sur lequel on travaille.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager