l es m p 80x86 d’intel : histoire et caractéristiques
Post on 03-Jan-2016
63 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
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.
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.
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.
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
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
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
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)
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
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
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
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
CÉ
S
L
E
N
T
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
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
EXERCICES
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?
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
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
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 …
top related