Вы находитесь на странице: 1из 20

Gestion mmoire du 8086 Organisation de la mmoire centrale

1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

La capacit maximum est de 1 MO (20 bits d adresse)

Le bus de donnes du 8086 tant de 16 bits, la mmoire est organise par mots de 16 bits. Le 8086 peut galement manipuler des octets, il doit donc pouvoir accder un seul octet en mmoire. L emplacement d un octet en mmoire est vident : il occupe la cellule mmoire repre par son adresse.

Gestion mmoire du 8086

1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles

Rangement d un mot en mmoire Un mot tant compos de deux octets, il y a deux manires de les ranger en mmoire : On stocke l octet de poids faible puis l octet de poids fort (format Big Endian) On stocke l octet faible puis l octet fort (format Little Endian) Exemple : stockage de F03A
N+2 N+1 N N+2 N+1 N

15. Modes d'adressage 18. La Pile

F0 3A

3A F0

Big Endian (Intel)

Little Endian (Motorola)

Gestion mmoire du 8086 Accs un mot en mmoire centrale Bus de donnes (16 bits)
1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

Octet de poids Adresse impaire fort

Octet de poids faible Adresse paire

Bus d adresse (20 bits) Pour le transfert d un mot en une fois, il faut donc que ce mot soit align.

Gestion mmoire du 8086 Alignement des mots en mmoire

Observons les donnes suivantes :


1. Mmoire centrale 3. Accs mmoire 4. Alignement

7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

.DATA Byte1 db 00 Word1 dw 1020 Byte2 db FF Word2 dw 3040

Valeur 00 20 10 FF 40 30

Adresse 0000 0001 0002 0003 0004 0005

Word2 est align en mmoire mais pas Word1.

Gestion mmoire du 8086 Accs un mot non align


1. Mmoire centrale 3. Accs mmoire 4. Alignement

La CPU ne peut pas accder un mot non align en une seule fois. Pour Word1 par exemple, situ l adresse 0001. Il faut faire un premier accs l adresse 0000 et ne garder que l octet fort (20) . Puis on accde l adresse 0002 en conservant notre octet fort . On recupre donc 10. Le nombre lu est donc 2010, il nous reste changer octet fort et octet faible .

7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

Gestion mmoire du 8086 Performances En termes de vitesse, il est prfrable d aligner les mots aux adresses paires (quitte perdre de la place) pour pouvoir y accder en une fois. Pour le 8088 qui de toutes faons de possde qu un bus de 8 bits, le problme ne se pose pas. C est au dveloppeur de dcider d aligner ces mots mmoire. En langage volu (ex C++) c est une option du compilateur. En assembleur, il faut aligner la main .

1. Mmoire centrale 3. Accs mmoire 4. Alignement

7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

Gestion mmoire du 8086 Segmentation But : produire une adresse 20 bits partir de registres 16 bits 1. Mmoire centrale Principe : dcoupage d une adresse en deux informations
3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

Une adresse sur 20 bits est appele l adresse physique. La CPU produit cette adresse partir d une adresse 16 bits appele dcalage (offset) et d un registre de segment de 16 bits.

Un segment de mmoire s tend donc sur 64 kO. Il peut tre situ n importe quel endroit de la mmoire, mais doit commencer une adresse multiple de 16.

Gestion mmoire du 8086 Construction de l adresse physique L adresse logique, compose d un segment et d un dcalage, s crit : Segment : Dcalage Par exemple, si le segment vaut 0F00 et le dcalage 3A01, l adresse s crit 0F00:3A01 L adresse physique correspondante se construit : Adresse = segment x 16 + dcalage Par exemple, 0F00 x 16 = 0F000 . On obtient donc : 0F00:3A01 = 0F000+3A01 = 12A01

1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

Gestion mmoire du 8086 Avantages d une mmoire segmente Outre l avantage de pouvoir produire une adresse 20 bits partir de mots de 16 bits uniquement, cette mthode permet d indiquer dans un programme des adresses relatives. suivantes : .DATA Byte1 db 5 Byte2 db ? Word1 dw 10

1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

Par exemple, dans un programme possdant les donnes


Byte1 est rang l adresse 0000. Byte2 l adresse 0001. Word1 l adresse 0002, etc... Mais l adresse relle en mmoire peut tre diffrente.

Gestion mmoire du 8086 Comment en effet garantir que l adresse 0000 sera disponible lors de l excution du programme ?
1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

En fait, la premire donne (ici Byte1) est stocke l adresse DS:0000

Chaque instruction interne faisant rfrence Byte1 fera rfrence DS:0000


Pour reloger en mmoire le programme, il suffira au systme d exploitation de modifier DS. La donne peut donc tre stocke un emplacement quelconque de la mmoire. De la mme manire, la premire instruction sera stocke CS:0000

10

Gestion mmoire du 8086 Chevauchement des segments

1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

Le dcalage tant cod sur 16 bits, un segment peut faire 64 kO.


Mais l adresse n tant pas unique, les segments peuvent se chevaucher. Par exemple, si le segment de code (CS) vaut F000 et que le segment de donnes (DS) vaut F100, il existe une partie commune aux deux segments. En effet :

F000:F000 = F0000+F000 = FF000 F100:E000 = F1000+E000 = FF000

11

Gestion mmoire du 8086

FFFFF
F0FFF
1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

E100:FFFF

EFFFF

E000:FFFF Chevauchement

E1000

E100:0000

64 kO

E0000

E000:0000

00000

12

Gestion mmoire du 8086 Modles mmoire

1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles

Suivant le nombre de segments utiliss, il existe plusieurs modles mmoire pour le 8086 :
TINY Il n existe qu un seul segment (CS=DS). Le programme complet doit faire moins de 64kO. Il ne peut y avoir de pile. SMALL Il n existe qu un seul segment de code, et un seul pour les donnes (CS!=DS). La pile se trouve dans le segment de donnes (SS=DS)

15. Modes d'adressage 18. La Pile

13

Gestion mmoire du 8086 MEDIUM Il peut y avoir plusieurs segment de code (code maxi = 1 MO) mais un seul segment de donnes.
1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles

COMPACT Il peut y avoir plusieurs segment de donnes (donnes maxi = 1 MO) mais un seul segment de code. LARGE Il peut y avoir plusieurs segment de code et plusieurs segments de donnes. Nanmoins, l ensemble du programme doit faire moins de 1 MO. Le modle SMALL convient pour la plupart des programmes.

15. Modes d'adressage 18. La Pile

14

Gestion mmoire du 8086 Modes d adressage du 8086

1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

Il existe de nombreuses mthodes pour adresser une donne en mmoire


Adressage Immdiat L oprande fait partie de l instruction. Il s agit d une constante. Elle n est pas stocke parmi les donnes. MOV ax, 15

Adressage par registre L oprande est contenue dans un registre (8 ou 16 bits). Aucun transfert en mmoire n est ncessaire. MOV ax,bx

15

Gestion mmoire du 8086 Adressage direct mmoire On spcifie directement l adresse laquelle l oprande est stocke. MOV ax,[0000] (adressage proche) MOV ax, [ES:0100] (adressage lointain) MOV ax, Var1 (adressage symbolique) MOV ah, BYTE PTR[0002] (octet)

1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

Adressage indirect de registre

La valeur de dcalage est comprise dans un registre de base (BX ou BP) ou d index (SI ou DI) MOV ax,[SI] MOV ax, [ES:BP] MOV AH, BYTE PTR[BL]

16

Gestion mmoire du 8086 Adressage indirect de registre avec dplacement En plus du mode prcdent, on ajoute une constante immdiate de dplacement. MOV AX, 5[BX] MOV AX, [BX+5] Adressage indirect de registre avec base et index Dans ce mode, le dplacement est contenu dans un index. MOV AX, [BX][SI] MOV AX, [BX+SI]

1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

Adressage indirect de registre avec base, index, dcalage On combine les deux prcdents modes MOV AX, 4[BX][SI] MOV AX, [BX+SI+5]

17

Gestion mmoire du 8086 La Pile C est une zone particulire, place en mmoire centrale, de type LIFO : Last In First Out. Elle utilise principalement pour : placer des donnes temporaires (sauvegarde de registres) passer des paramtres un sous-programme

1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

La pile est repre par l adresse SS:SP qui pointe son sommet (dernier mot entr).
La pile ne peut contenir que des mots (on ne peut empiler un octet seul)

18

Gestion mmoire du 8086 Instructions de gestion de la pile


1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

PUSH Permet d empiler un mot de 16 bits (registre ou adresse) PUSH ax PUSH [0000]

POP Permet de dpiler un mot de 16 bits (registre ou adresse) POP ax POP [0002]
La pile commence l adresse SS:XXXX si elle est dclare de XXXX octets (directive .STACK) SP est dcrement de 2 chaque PUSH. SP est incrment de 2 chaque POP.

19

Gestion mmoire du 8086 Schma standard de pile F000:FFFF

1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile

Dbut Courant

SS:FFFF SS:SP SS:0000 0000:0000 Mmoire centrale

Segment de pile de 64 kO

Fin

20

Вам также может понравиться