19
Les P 80x86 d’Intel : histoire et caractéristiques 1.Rappel historique Bref sur la famille 80x86 2. A l’intérieur du P 8088/8086 3. Introduction a la programmation Assembleur 4. Segmentation des programmes 5. Modes d’Adressage

L es m P 80x86 d’Intel : histoire et caractéristiques

Embed Size (px)

DESCRIPTION

L es m P 80x86 d’Intel : histoire et caractéristiques. 1.Rappel historique Bref sur la famille 80x86 2. A l’intérieur d u m P 8088/8086 3. Introduction a la programmation Assembleur 4. Segmentation des programmes 5. Modes d’Adressage. 1 Rappel historique Bref sur la famille 80x86. - PowerPoint PPT Presentation

Citation preview

Page 1: L es  m P 80x86 d’Intel : histoire et caractéristiques

Les P 80x86 d’Intel : histoire et caractéristiques

1.Rappel historique Bref sur la famille 80x86

2. A l’intérieur du P 8088/8086

3. Introduction a la programmation Assembleur

4. Segmentation des programmes

5. Modes d’Adressage

Page 2: L es  m P 80x86 d’Intel : histoire et caractéristiques

1 Rappel historique Bref sur la famille 80x86

- Évolution de 8080/8085 à 8086:En 1978, Intel introduit le P8086 à 16-bit, qui améliore les performances de la série P8080/85 de plusieurs façons.

- Le P 8086 possède 16 lignes d’adresses (64Ko de mémoire), alors que le P 8080/8085 en possède 8 lignes d’adresses (256 octets).

- Le P 8080/8085 a une architecture 8-bit, i.e. les données de plus de 8bits sont traitées en morceaux de 8-bits par la CPU. Alors que le 8086 est un

P à 16-bits.

- Le P 8086 est de conception pipeline contrairement au P 8080/8085. Dans un système à base de pipeline, les bus de données et d’adresses sont occupés à transférer des données pendant que la CPU traite une information. Ceci a pour avantage de croître la puissance de traitement du P.

- Évolution de 8086 a 8088:

- Le P 8086 a une architecture interne et externe de 16-bit, i.e. tout ses registres sont de 16-bits et un bus de données également de 16-bits pour transférer des données de/vers la CPU.

- Le P 8086 a marqué une grande avancée par rapport aux générations précédentes, mais il a rencontré une résistance d’utilisation du au fait que son bus de données externe de 16-bits ne prêtait pas aux périphériques existants en ce moment conçus pour des P à 8-bits. En plus du fait que les cartes de circuits imprimés avec un bus de données 16-bits étaient chères.

- Ceci explique pourquoi Intel a conçu le P8088, qui est le même que le P8086 au niveau de la programmation avec la même capacité mémoire, 1Mo. Seulement son bus de données externe est 8-bits au lieu de 16-bits.

Page 3: L es  m P 80x86 d’Intel : histoire et caractéristiques

1 Rappel historique Bref sur la famille 80x86

- Succès du P 8088:

La situation financière d’Intel s’est considérablement amélioré lorsque IBM a choisi le 8086 comme le P de choix pour son micro-ordinateur IBM PC, qui a connu un énorme succès, a cause du fait qu’IBM et Microsoft (qui a développé MSDOS), l’ont rendu système ouvert, i.e. la documentation hardware et software du PC est accessible au public. Ceci a permis aux autres vendeurs de cloner le hardware avec succès.

-Le P 80286

- Avec le succès qu’a connu Intel et devant le besoin manifeste des utilisateurs PC pour un P plus puissant, Il a introduit le P 80286 en 1982. Ses principales caractéristiques sont: un bus de donnes interne et externe de 16-bit, un bus d’adresses de 24-bit (ciblant 16Mbytes de mémoire), et surtout sa mémoire virtuelle.

- Le P 80286 opère en 2 modes: réel et protégé. Le mode réel n’est autre que la version rapide du P 8088/8086 avec la même mémoire de 1Mo. Le mode protégé permet d’adresser une mémoire de 16Mo, mais aussi capable de protéger le OS et programmes d’une destruction accidentelle par l’utilisateur. Cette caractéristique est absente avec le P 8088/86.

- La mémoire virtuelle est une façon de tromper le P en pensant qu’il a accès a une mémoire illimité en inter-changeant les données entre le disque et la RAM.

- IBM a choisi le P 80286 pour son micro-ordinateur IBM PC/AT et les fabricants clones ont suivi.

Page 4: L es  m P 80x86 d’Intel : histoire et caractéristiques

1 Rappel historique Bref sur la famille 80x86

Les P 80386 et 80486

- Les utilisateurs demandent toujours des P plus puissants. Ainsi Intel introduit en 1985 le P 80386 (Appelé également 80386DX). Un P d’architecture 32-bits (interne et externe) et un bus d’adresses de 32-bits, capable de cibler une mémoire physique de 4Go. Sa mémoire virtuelle a été augmenté à 64 To.

- Tout les P précédents sont a utilisation générale, donc ne sont pas capable de traiter rapidement des opérations mathématiques. Intel a mis sur le marche des circuits co-processeurs mathématiques, comme les 8087, 80287 et 80387.

- Plus tard Intel a introduit le P 80386SX, qui a la même architecture interne que le P 80386 mais avec un bus de données a 16-bits et un un bus d’adresses a 24-bits (1Mo de mémoire). Ce qui rend son prix moins cher.

- Avec l’introduction du P 80486, Intel a amélioré le P 80386 en intégrant un co-processeur mathématique dans une seule puce. En plus d’autres caractéristiques telles que mémoire cache (mémoire SRAM a temps d’accès très rapide), ont été introduites.

- Il est important de noter que les programmes écrit pour le P 8088/86 peuvent être exécutés également sur les P 80x86.

- D’autres générations qui sont venus après les P 80x86 ont pour noms P Pentium.

Page 5: L es  m P 80x86 d’Intel : histoire et caractéristiques

2 : A l’intérieur du P 8088/8086

Pipeline

- Avec les P 8088/86 Intel unités EU et BIU concurrentes (travaillent simultanément).

- BIU la mémoire et les périphériques + EU exécute les instructions recherchées précédemment.

- BIU possède un buffer (chaîne), qui permet de stocker les instructions précédentes:

P8088 possède une chaîne de 4 octets et le P8086 en possède 6 octets.

- Si une instruction est lente pour s’exécuter, le buffer se voit remplir vite et y restera ainsi

La BIU ne cherche une nouvelle instruction que s’il y’a 2 octets inoccupés dans le buffer (P8086) et 1 octet ( P8088).

- Pour P8088/86, il existe 2 stages de pipeline: fetch et exécute. Avec les P plus puissants, il y’a plusieurs niveaux de pipeline.

- Pipeline + largeur du bus de données conception de puissants Ps.

Fetch 1 Execute 1 Execute 2Fetch 2

Fetch 1

Fetch 2

Fetch 3

Execute 1

Execute 2

Execute 3

Execution avec PipelineP 80x86Execution Sans Pipeline

P8085

Page 6: L es  m P 80x86 d’Intel : histoire et caractéristiques

2 : A l’intérieur du P 8088/8086

Registres

- Dans une CPU, les registres sont utilisés pour stocker de l’information temporairement. Celle-ci peut être 1 octet ou 2 octets d’une donnée à traiter ou une adresse d’une donnée.

- Quelques instructions utilisent des registres spécifiques pour accomplir leurs taches. D’après la 1ere lettre, on peut deviner son utilisation.

CATEGORIES REGISTRES

Générale AX, BX, CX, DX

(AH, AL), (BH, BL),

(CH, CL), (DH, DL),

Pointeur SP, BP

Index SI, DI

Segment CS, DS,

SS, ES

Instruction IP

Flag FR

AH0AH1AH6AH7

IP0IP1IP14IP15

AX0AX1AX14AX15 AX7AX8

AL0AL1AL6AL7

16-bits

8 bits ou16-bits

Page 7: L es  m P 80x86 d’Intel : histoire et caractéristiques

Bloc Diagramme de du P 8088/86

AH AL

BH BL

CH CL

DH DL

Registres généraux

15 7 0

SI

DI

BP

SP

AX

BX

CX

DX

Registres de Segment

CS

DS

SS

ES

15 0

Registres d'état et de contrôle

Source indexDestination indexBase pointerStack pointer

FR

IP

OPERANDES

ALU

CHAINE D’INSTRUCTIONS

GENERATION D’ADRESSES

&BUS DE CONTROLE

BUS MULTIPLIXE

EXECUTION UNIT (EU) BUS INTERFACE UNIT (BIU)

Accumulateur

Base

Compteur

Données (E/S)

SEQUENCEURBuffer

Page 8: L es  m P 80x86 d’Intel : histoire et caractéristiques

3 : Introduction à la programmation Assembleur

RAM

10110000

00100001

00000100

01000010

10100111

00011000

00000000

11110100

1400h

1407h

RAM

B0h

21h

04h

42h

A7h

18h

00h

F4h

MOV AL, 21h

ADD AL, 42h

ADD AL, [1800h]

HALT

MNEMONIQUES (facile a se rappeler)

Programmer vite et moins d’erreurs

Programme “ASSEMBLEUR”

Langage “ASSEMBLEUR”

(Langage bas-niveau)

Langage“MACHINE”

(Code Objet)

BinHex

Meilleure programmationBonne connaissancedes registres, leurtaille et de la CPU en générale

Langage “C, Pascal, Basic”

(Langage haut-niveau)

Programme “COMPILATEUR”

(Code Source)Pas besoin de

connaître la CPU

MASM (Microsoft), DEBUG,TASM (Turbo Borland)

Page 9: L es  m P 80x86 d’Intel : histoire et caractéristiques

3 : Introduction à la programmation Assembleur

Programme en langage Assembleur = série d’instructions écrite en langage assembleur.Une instruction en langage assembleur = mnémonique suivi de un/deux opérandes (données à manipuler).Une mnémonique = une commande a la CPU lui montrant ce que doit faire avec les opérandes.

Instruction MOV: copie (déplacer) une donnée d’une location à une autre.

MOV destination, source ; copie opérande source destination

MOV CL, 55h ; déplacer 55h vers le registre CL. Attention: spécifie h pour MASM sinon décimal. Avec DEBUG pas besoin, tout

HEXMOV DL, CL ; copie le contenu du registre CL vers le registre DLMOV AH, DL ; copie le contenu du registre DL vers le registre AH

Avec les registres 16-bits:

MOV CX, 468Fh ; déplacer 468Fh vers le registre CX (CH = 46h et CL = 8Fh)MOV AX, CX ; copie le contenu du registre CX vers le registre AXMOV DS, AX ; copie le contenu du registre AX vers le registre DSMOV BX, 9 ; copie la donnée 0009h vers le registre BX BL = 09h et BH = 00h

Attention!!! MOV AL, CX ; erreur, les registres n’ont pas la même tailleMOV AL, 2345h ; erreur, la donnée et le registre AL n’ont pas la même tailleMOV FR, AX ; erreur, on on ne déplace pas le contenu du registre d’état et de contrôleMOV CS, 3D15h ; erreur, les données ne peuvent être déplacées aux registres segmentsSolution: MOV AX, 3D15hMOV CS, AX

Page 10: L es  m P 80x86 d’Intel : histoire et caractéristiques

3 : Introduction à la programmation Assembleur

Instruction ADD:

MOV AL, 35h ; déplacer 35h vers le registre AL

MOV BL, 94h ; déplacer 94h vers le registre AL

ADD AL, BL ; AL = AL + BL ( C9h)

Il existe plusieurs façons d’écrire le même programme:

MOV AL, 35h ; déplacer 35h vers le registre AL

ADD AL, 94h ; AL = AL + 94h ( C9h)

Avec registres 16-bits:

MOV CX, 235h ; déplacer 0235h vers le registre CX

ADD CX, 594h ; CX = CX + 0594h ( 07C9h)

L’opérande source est un opérande immédiat ou registre. L’opérande destination est toujours registre.

ADD destination, source ; ajouter l’opérande source a destination et le résultat vers destination

Page 11: L es  m P 80x86 d’Intel : histoire et caractéristiques

4 : Introduction aux Segments du programme

- Chaque segment = 64Ko (P8088 a 16 lignes d’adresses). - Un segment peut se trouver à n’importe quelle adresse multiple de 16. - Les segments (C, D, S et E) peuvent être disjoints, se recouvrir, ou confondus.- La segmentation procure l’avantage de déplacer un programme en mémoire, il suffit de modifier le

contenu du registre CS (pagination du code sur le disque).

- Mécanisme d’adressage

Pour éviter d’utiliser des registres de 20-bitspour stocker et calculer les adresses

Adresse logique = Adr. Seg. : Adr. Offset

Adresse physique = (Adr. Seg.)0h + Adr. Offset

Exemple: Pour exécuter un programme, le P8086 « fetch » les instructions à partir de CS

CS : IP (2500h : 95F3h) Adr. Phy. = 25000h + 95F3h = 2E5F3h ici Offset = IPDS : DI (7521h : 85FBh) Adr. Phy. = 75210h + 85FBh = 7D81Bh ici Offset = DI

Adresse Physique 20 bits

Adresse Offset (Effective) 16 bits+

0000Adresse Segment (CS, DS, SS, ES)

(sur un segmentde 64 Ko)

(adresse

mémoire)

64Ko

SSESDSCS00000h FFFFFh (= 220 =1Mo)

RAM

Page 12: L es  m P 80x86 d’Intel : histoire et caractéristiques

5 : Modes d’Adressage du P80x86

- La CPU peut adresser des opérandes (Données) de plusieurs manières, appelés Modes d’Adressage .- Leur nombre est déterminé une fois le P conçu et ne peut être changé. Les P80x86 en possède 7:Registre, Immédiat, Direct, Indirect par registre, Base relative, Indexe relative et Base indexe relative .

1. Adressage par Registre MOV DX, BX ADD AL, AH

2. Adressage Immédiat MOV AX, 2550h ADD BL, 40h Note: ce mode est utilisé pour charger une donnée dans un registre quelconque sauf FR et

(CS, DS, S, ES) MAIS MOV AX, 2550h MOV DS, AX

3. Adressage Direct MOV DL, [2550] ;contenu de DS:2500 dans DL

4. Adressage Indirect MOV AL, [BX] ; contenu de DS:BX dans AL

Notes: 1. Attention: différent de (MOV AL, BX) ; BX AL (erreur!! taille des registres) 2. MOV [DI], AH (copie un octet) et MOV [SI], AX

5. Adressage Base relative MOV CX, [BX]+9 ; copie DS:BX+9 et DS:BX+9+1 dans CXMOV AL, [BP]+5 ; copie SS:BP+5 dans AL

Note: MOV AL,[BP+5] ou MOV AL,5[BP] “BP+5” est appelé adresse effective

6. Adressage Index relatif MOV DX, [SI]+5 ; copie DS:SI+5 et DS:SI+5+1 dans CXMOV CL, [DI]+8 ; copie DS:DI+8 dans CL

7. Adressage Base Index relatif MOV CL, [BX][DI]+8 ; copie DS:BX+DI+8 dans CLMOV CH, [BX+SI+20] ; copie DS:BX+SI+20 dans CHMOV AL, [BP][DI]+12 ; copie SS:BP+DI+12 dans ALMOV AH, [BP+SI+29] ; copie SS:BP+SI+29 dans AH

Attention: MOV AL, [SI][DI]+12 ou MOV AL, [BX][BP]+12; illégales!!!!!

ACCÉS

RAPIDE

MÉMOIRE

REGISTRES

A

C

S

L

E

N

T

Page 13: L es  m P 80x86 d’Intel : histoire et caractéristiques

5 : Modes d’Adressage du P80x86

RécapitulatifModes d’Adressage Opérande Segment par défaut

Registre reg /

Immédiat data /

Direct [offset] DS

Registre Indirect [BX]

[SI]

[DI]

DS

DS

DS

Base relative [BX] + dépl.

[BP] + dépl.

DS

SS

Index relatif [DI] + dépl.

[SI] + dépl.

DS

DS

Base Index relatif [BX][DI] + dépl.

[BX][SI] + dépl.

[BP][DI] + dépl.

[BP][SI] + dépl.

DS

DS

SS

SS

Page 14: L es  m P 80x86 d’Intel : histoire et caractéristiques

Registres “Segment” et “Offset”

Registres Segment CS DS ES SSRegistres Offset IP SI, DI, BX SI, DI, BX SP, BP

Registres Offset utilisés pour les différents segments

Page 15: L es  m P 80x86 d’Intel : histoire et caractéristiques

EXERCICES

Page 16: L es  m P 80x86 d’Intel : histoire et caractéristiques

1. Si les P80286 et P80386SX possède tout deux un bus de données externe de 16-bit, c’est quoi donc la différence entre eux?

2. Un P 32-bit désigne-t-il un cheminement des données internes ou externes?3. Est ce qu’un programme écrit pour le P88/86 peut s’exécuter dans un P80486?4. C’est quoi les différences majeures entre un P88 et un P86?5. C’est quoi la deuxième méthodologie pour améliorer la puissance de traitement d’un P, autre

qu’augmenter la fréquence?6. C’est quoi les fonctions de BIU et EU?7. Parmi ces registres, lesquels sont désignés comme généraux, et quels sont les registres que nous ne

pouvons pas diviser en octets:a- CS b- AX c- DS d- SS e- BX f- DX g- CX h- SI i- DI

8. Parmi ces instructions, lesquelles ne peuvent être codées dans le P88/86 :a- MOV AX, 27 b- MOV AL, 97F c- MOV DS, 9BF2 d- MOV CX, 397e- MOV SI, 9516 f- MOV CS, 3490 g- MOV DS, BX h- MOV BX, CSi- MOV CH, AX j- MOV AX, 23FB9 k- MOV CS, BH l- MOV AX, DL

9. Si CS=3499H (ensuite 1296H) et IP=2500H (ensuite 100H), trouver:a- l’adresse logique b- l’adresse physique c- les limites du code segment

10. Si DS=3499H (ensuite 1298H) et Offset=3FB9H (ensuite 7CC8H), trouver:a- l’adresse physique b- l’adresse logique de la donnée a rechercher (fetch)c- les limites du segment de données

11. En assumant que l’adresse physique d’une location mémoire est 0046H, suggérer des adresses logiques possibles?

12. Si une instruction à rechercher est dans l’adresse physique 389F2H et CS=2700H, est ce que la bande du code segment l’inclut ou pas? Si c’est non, quelle valeur a donner a CS si IP=1282?

Page 17: L es  m P 80x86 d’Intel : histoire et caractéristiques

13. La pile est-elle: a- une section de ROM b- une section de la RAM utilisée pour un stockage temporaire

c- un registre 16-bit dans la CPU d- une mémoire quelconque dans la CPU.

14. Quand une donnée est empilée dans la pile, le pointeur de pile est incrémente ou décrémente? Qu’en est-il quand la donnée est dépilée?

15. Choisir une réponse correcte:

a- les segments de pile et de code commencent du même point de la mémoire et augmentent vers le haut.

b- les segments de pile et de code commencent des points opposes de la mémoire et augmentent vers des sens opposes.

c- Ce n’est pas grave si les deux segments se rencontrent.

16. C’est quoi l’inconvénient d’avoir la pile dans la CPU comme un grand nombre de registres?

17. Si SS=2000H (ensuite 1298H) et SP=4578H (ensuite 7CC8H), trouver:

a- l’adresse physique b- l’adresse logique c- les limites du segment de pile

18. Si SP=24FCH, c’est quoi l’adresse offset de la première location de la pile dans laquelle une donnée peut être empilée?

19. Assumant que SP=FF2EH, AX=3291H, BX=F43CH, et CX=09, trouver le contenu de la pile et le pointeur de pile après l’exécution de chacune des instructions: PUSH AX, PUSH BX, PUSH CX.

20. Pour retrouver le contenu original de chaque registre, du problème 19, montrer la séquence d’instructions à exécuter. C’est quoi le contenu de SP après chaque instruction exécutée?

21. Les registres suivants sont utilisés comme Offset. Assumant que le segment défaut est utilisé pour obtenir l’adresse logique, donner le registre segment associé avec chaque offset:

a- BP b- DI c- IP d- SI e- SP f- BX

Page 18: L es  m P 80x86 d’Intel : histoire et caractéristiques

22. Montrer le registre segment d’écrasement et celui par défaut (s’il n’y a pas eu d’écrasement) dans chacun des cas suivants:

a- MOV SS:[BX], AX

b- MOV AL, [DI]+BX

c- MOV DX, DS:[BP+6]

23. C’est quoi l’état des CF, PF, AF, ZF, et SF pour les opérations suivantes:

a- MOV BL, 9FH ADD BL, 61H

b- MOV DX, 10FFH INC DX

24. Assumant que les registres ont les valeurs suivantes (en Hex):

CX=1000, DS=2000, SS=3000, SI=4000, DI=5000,

BX=6080, BP=7000, AX=25FF, CX=8791, DX=1299.

Calculer l’adresse physique de la mémoire ou l’opérande est stocke, ainsi que le contenu des locations mémoires dans chacun des modes d’adressage suivants:

a- MOV [SI], AL b- MOV [SI+BX+8], AH c- MOV [BX], AX

d- MOV [DI+6], BX e- MOV [DI][BX]+28, CX f- MOV [BP][SI]+10, DX

g- MOV [3600], AX h- MOV [BX]+30, DX i- MOV [BP]+200, AX

j- MOV [BP+SI+100], BX k- MOV [SI]+50, AH l- MOV [DI+BP+100], AX

Page 19: L es  m P 80x86 d’Intel : histoire et caractéristiques

25. Donner le mode d’adressage de chacune des instructions suivantes:

a- MOV AX, DS b- MOV BX, 5678H c- MOV CX, [3000]

d- MOV AL, CH e- MOV [DI], BX f- MOV AL, [BX]

g- MOV DX, [BP+DI+4] h- MOV CX, DS i- MOV [BP+6], AL

j- MOV AH, [BX+SI+50] k- MOV BL,[SI]+10 l- MOV [BP][SI]+12, AX

26. Montrer le contenu des locations mémoire après l’exécution de chacune des instructions suivantes:

a- MOV BX, 129FH b- MOV DX, 8C63H

MOV [1450], BX MOV [2348], DX

DS:1450 … DS:2348 …

DS:1451 … DS:2349 …