La mémoire en détail Version imprimable Suggérer par mail
Appréciation des utilisateurs: / 0
FaibleMeilleur 

La mémoire en détail

3.1 Segmentation de la mémoire

 
 

 


La taille maximum d'un segment est de 64 Ko.

Pour qu' un programme s'exécute, le segment de code et le segment de pile doivent exister.

3.2 Les emplacements réservés

Certaines zones de la mémoire sont réservées à des usages particuliers :

a) De FFFF0h à FFFFFh, réservé au bootstrap, c'est à dire à l' initialisation du système (vecteur RESET).

Note : on trouve en FFFF0h EA E07D F000 = JMP F000 :E07D qui correspond au point d'entrée du BIOS.

b) De 0 à 3FFh, réservée aux vecteurs d' interruptions. Chaque vecteur nécessite 4 octets (base + offset. Le microprocesseur est capable de reconnaître jusqu'à 256 niveaux d'interruption. Lorsqu'une interruption est générée, le microprocesseur identifie le demandeur et vient chercher dans la table des vecteurs, l'adresse de la routine de gestion du demandeur.


En résumé :


3.3 La pile

C'est une région de la RAM où l' on va stocker ou retirer des informations. L'utilisation de la pile est très fréquente pour la sauvegarde temporaire du contenu des registres et pour le passage de paramètres lorsqu'un langage de haut niveau fait appel à une routine en assembleur La taille de la pile varie en fonction de la quantité d' informations qu'on y dépose ou qu'on en retire.

 

SP

           
   

AH

 

AH

 

AH

 
   

AL

SP

AL

 

AL

SP

       

BH

     
       

BL

SP

   
               
               
               
               
 

SS

 

SS

 

SS

 

SS

               

Pile vide

 

PUSH AX

 

PUSH BX

 

POP CX

 

Le pointeur de pile (SP) contient au départ l'adresse supérieure de la région qu'elle peut occuper.

Ø L'opération consistant à déposer des informations dans la pile (PUSH) effectue une décrémentation du pointeur SP et range ensuite la donnée à l'adresse SS :SP et SS :SP+ 1 (dans le cas de l'exemple puisqu' il s'agit de données sur 16 bits),

Ø L'opération consistant à retirer des informations dans la pile (POP) extrait du sommet de la pile le premier mot et incrémente SP (2 positions) pour pointer sur un nouveau mot.

3.4 Les modes d'adressage

Domaine physique d'adressage direct : 1 Mo

Domaine logique d'adressage direct : 4 * 64 Ko

Modes d' adressages :

Ø direct registres

Ø direct mémoire

Ø indirect via registre de base

Ø avec ou sans indexation par registre d'index

Calcul d'une adresse :

 
 

 

3.4.1 Accès aux instructions

L'accès aux instructions fait implicitement appel à IP basé par rapport à CS :

 
 

 


3. 4. 2 Accès aux données

Lorsqu' un segment logique est ouvert dans un programme source, a l'assemblage , un compteur lui est alloué.

Ainsi l'assembleur fait correspondre à chaque étiquette ou nom de variable une valeur de compteur qui est simplement l'offset du symbole.

3.4.3 Adressage immédiat

La donnée est spécifiée immédiatement après l' instruction. Elle est donc située dans le segment de code.

Quelques exemples :

MOV AX, 20

MOV CL, 8

MOV BX, 15h

3.4.4 Adressage direct registre

 
 

 


Quelques exemples :

MOV AX, DX

MOV CH, AL

Attention : les données doivent être de même type, l'instruction suivante est mauvaise : MOV CX, BL .

3.4.5 Adressage direct mémoire (déplacement)

L'assembleur traduit les étiquettes en offsets. Les données sont implicitement basées par DS. Il est possible de spécifier une autre base :

MOV AX, ES :DATA1

DATA1 est alors basé par rapport à ES

 Þ l' instruction nécessitera plus de temps lors de l'exécution.


3.4.6 Adressage indirect mémoire

3.4.6.1 Base ou index

Lors d'un adressage indirect, la valeur d'affectation n'est plus le contenu d'un registre, mais la valeur contenue à un offset égal au contenu du registre.

 
 

 


Quelques exemples :

MOV AX, [SI] lecture d' un mot

MOV AH, [BX] lecture d' un octet

MOV [DI], AL écriture d'un octet

MOV [DI], [SI]

INTERDIT ! ! !

3.4.6.2 Base et index

Les lignes :

MOV AX, [SI][ BX]

et

MOV AX, [SI + BX]

Sont identiques. Cet adressage peut aussi être utilisé pour écrire en mémoire :

MOV [DI][ BX], CX

Par contre, la ligne suivante est fausse :

MOV DX, [SI] [DI]

Car l' utilisation simultané de deux index est interdite pour un adressage.

3.4.6.3 Base ou index + déplacement

 
 

 


Il est possible d'utiliser ce mode d'adressage pour la lecture ou l'écriture :

MOV AX, [BX] DATA1

MOV [SI] DATA2, CX

Il est possible aussi d'ajouter un déplacer supplémentaire à l'aide du valeur immédiate :

MOV AX, [DI] DATA3( 2)

Ici, on effectue un déplacement supplémentaire de deux octets.

3.4.6.4 Base + index + déplacement

En résumé :

Exemple d' instruction

Mode d' adressage

MOV AX, 5

Immédiat

MOV AX,BX

Registre

MOV AX, DATA1

Direct mémoire

MOV AX, [BX]

Indirect base

MOV AX, [SI]

Indirect index

MOV AX, [BX + 5]

Indirect base + déplacement

MOV AX, [SI + 5]

Indirect index + déplacement

MOV AX, [BX][ SI]

MOV AX, [BX + DI]

Indirect base + index

MOV AX, [BX][ DI] 5

MOV AX, [BX + SI + 5]

Indirect base + index + déplacement

Commentaires (0)Add Comment

Ecrivez un commentaire
quote
bold
italicize
underline
strike
url
image
quote
quote
smile
wink
laugh
grin
angry
sad
shocked
cool
tongue
kiss
cry
Réduire l'éditeur | Agrandir l'éditeur

security code
Entrez les caractères affichés


busy
 
< Précédent   Suivant >

Vidéos aléatoires

Comment tracer une fonction affine dans un repère.
Moyenne:
Clics:261
Isaac Newton, la gravité d´un génie
Moyenne:
Clics:67
Résolution d´une équation.fonction affine
Moyenne:
Clics:72
FONCTION AFFINE ET GEOMETRIE
Moyenne:
Clics:202

Liens

Liens

Qui est en ligne

Il y a actuellement 3 invités en ligne

Identification






Mot de passe oublié ?
Pas encore de compte ? Enregistrez-vous