Академический Документы
Профессиональный Документы
Культура Документы
1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile
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.
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
F0 3A
3A F0
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
Bus d adresse (20 bits) Pour le transfert d un mot en une fois, il faut donc que ce mot soit align.
Valeur 00 20 10 FF 40 30
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 .
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 .
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
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
10
1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile
11
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
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)
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.
14
1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile
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
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
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
1. Mmoire centrale 3. Accs mmoire 4. Alignement 7. Segmentation 13. Modles 15. Modes d'adressage 18. La Pile
Dbut Courant
Segment de pile de 64 kO
Fin
20