Télécharger la présentation
Publié parLaurentine Gras Modifié depuis plus de 11 années
1
Les mP 80x86 d’Intel : histoire et caractéristiques
1.Rappel historique Bref sur la famille 80x86 2. A l’intérieur du mP 8088/8086 3. Introduction a la programmation Assembleur 4. Segmentation des programmes 5. Modes d’Adressage Rachid Beguenane
2
1 Rappel historique Bref sur la famille 80x86
Évolution de 8080/8085 à 8086: En 1978, Intel introduit le mP8086 à 16-bit, qui améliore les performances de la série mP8080/85 de plusieurs façons. - Le mP 8086 possède 16 lignes d’adresses (64Ko de mémoire), alors que le mP 8080/8085 en possède 8 lignes d’adresses (256 octets). - Le mP 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 mP à 16-bits. - Le mP 8086 est de conception pipeline contrairement au mP 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 mP. Évolution de 8086 a 8088: - Le mP 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 mP 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 mP à 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 mP8088, qui est le même que le mP8086 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. Rachid Beguenane
3
1 Rappel historique Bref sur la famille 80x86
Succès du mP 8088: La situation financière d’Intel s’est considérablement amélioré lorsque IBM a choisi le 8086 comme le mP 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 mP 80286 - Avec le succès qu’a connu Intel et devant le besoin manifeste des utilisateurs PC pour un mP plus puissant, Il a introduit le mP en 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 mP opère en 2 modes: réel et protégé. Le mode réel n’est autre que la version rapide du mP 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 mP 8088/86. - La mémoire virtuelle est une façon de tromper le mP 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 mP pour son micro-ordinateur IBM PC/AT et les fabricants clones ont suivi. Rachid Beguenane
4
1 Rappel historique Bref sur la famille 80x86
Les mP et 80486 - Les utilisateurs demandent toujours des mP plus puissants. Ainsi Intel introduit en 1985 le mP (Appelé également 80386DX). Un mP 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 mP 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, et Plus tard Intel a introduit le mP 80386SX, qui a la même architecture interne que le mP 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 mP 80486, Intel a amélioré le mP 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 mP 8088/86 peuvent être exécutés également sur les mP 80x86. D’autres générations qui sont venus après les mP 80x86 ont pour noms mP Pentium. Rachid Beguenane
5
2 : A l’intérieur du mP 8088/8086 Fetch 1 Fetch 1 Fetch 2
Pipeline Avec les mP 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: mP8088 possède une chaîne de 4 octets et le mP8086 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 (mP8086) et 1 octet ( mP8088). Pour mP8088/86, il existe 2 stages de pipeline: fetch et exécute. Avec les mP plus puissants, il y’a plusieurs niveaux de pipeline. Pipeline + largeur du bus de données conception de puissants mPs. Fetch 1 Execute 1 Fetch 1 Execute 1 Execute 2 Fetch 2 Execution avec Pipeline mP 80x86 Fetch 2 Execute 2 Execution Sans Pipeline mP8085 Fetch 3 Execute 3 Rachid Beguenane
6
2 : A l’intérieur du mP 8088/8086 8 bits ou 16-bits 16-bits 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 8 bits ou 16-bits AX15 AX14 AX8 AX7 AX1 AX0 AH7 AH6 AH1 AH0 AL7 AL6 AL1 AL0 16-bits IP15 IP14 IP1 IP0 Rachid Beguenane
7
Bloc Diagramme de du mP 8088/86
EXECUTION UNIT (EU) BUS INTERFACE UNIT (BIU) 15 7 AX A H A L Accumulateur Registres de Segment BX B H B L Base 15 CX C H C L Compteur CS DX D H D L Données (E/S) DS Source index SS SI Destination index DI ES Base pointer BP IP Stack pointer SP Registres généraux BUS MULTIPLIXE GENERATION D’ADRESSES & BUS DE CONTROLE OPERANDES SEQUENCEUR CHAINE D’INSTRUCTIONS ALU Buffer Registres d'état et de contrôle FR Rachid Beguenane
8
3 : Introduction à la programmation Assembleur
Programmer vite et moins d’erreurs MNEMONIQUES (facile a se rappeler) RAM RAM B0h 21h 04h 42h A7h 18h 00h F4h 1400h MOV AL, 21h Meilleure programmation Bonne connaissance des registres, leur taille et de la CPU en générale ADD AL, 42h BinHex ADD AL, [1800h] HALT 1407h Langage “MACHINE” (Code Objet) Programme “ASSEMBLEUR” Langage “ASSEMBLEUR” (Langage bas-niveau) Langage “C, Pascal, Basic” (Langage haut-niveau) MASM (Microsoft), DEBUG, TASM (Turbo Borland) (Code Source) Programme “COMPILATEUR” Pas besoin de connaître la CPU Rachid Beguenane
9
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 HEX MOV DL, CL ; copie le contenu du registre CL vers le registre DL MOV 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 AX MOV DS, AX ; copie le contenu du registre AX vers le registre DS MOV 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 taille MOV AL, 2345h ; erreur, la donnée et le registre AL n’ont pas la même taille MOV FR, AX ; erreur, on on ne déplace pas le contenu du registre d’état et de contrôle MOV CS, 3D15h ; erreur, les données ne peuvent être déplacées aux registres segments Solution: MOV AX, 3D15h MOV CS, AX Rachid Beguenane
10
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 h ( 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 Rachid Beguenane
11
4 : Introduction aux Segments du programme
00000h Chaque segment = 64Ko (mP8088 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-bits pour 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 mP8086 « fetch » les instructions à partir de CS CS : IP (2500h : 95F3h) Adr. Phy. = 25000h + 95F3h = 2E5F3h ici Offset = IP DS : DI (7521h : 85FBh) Adr. Phy. = 75210h + 85FBh = 7D81Bh ici Offset = DI CS DS ES FFFFFh (= 220 =1Mo) 64Ko RAM SS 0000 Adresse Segment (CS, DS, SS, ES) (sur un segment de 64 Ko) + Adresse Offset (Effective) 16 bits (adresse mémoire) Adresse Physique 20 bits Rachid Beguenane
12
5 : Modes d’Adressage du mP80x86
C É S R P I D E - 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 mP conçu et ne peut être changé. Les mP80x86 en possède 7: Registre, Immédiat, Direct, Indirect par registre, Base relative, Indexe relative et Base indexe relative. Adressage par Registre MOV DX, BX ADD AL, AH 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 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 Adressage Base relative MOV CX, [BX] ; copie DS:BX+9 et DS:BX+9+1 dans CX MOV AL, [BP] ; copie SS:BP+5 dans AL Note: MOV AL,[BP+5] ou MOV AL,5[BP] “BP+5” est appelé adresse effective Adressage Index relatif MOV DX, [SI]+5 ; copie DS:SI+5 et DS:SI+5+1 dans CX MOV CL, [DI]+8 ; copie DS:DI+8 dans CL Adressage Base Index relatif MOV CL, [BX][DI]+8 ; copie DS:BX+DI+8 dans CL MOV CH, [BX+SI+20] ; copie DS:BX+SI+20 dans CH MOV AL, [BP][DI]+12 ; copie SS:BP+DI+12 dans AL MOV 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!!!!! R E G I S T A C CÉ S L E N T M É O I R E Rachid Beguenane
13
5 : Modes d’Adressage du mP80x86
Récapitulatif Modes d’Adressage Opérande Segment par défaut Registre reg / Immédiat data Direct [offset] DS Registre Indirect [BX] [SI] [DI] Base relative [BX] + dépl. [BP] + dépl. SS Index relatif [DI] + dépl. [SI] + dépl. Base Index relatif [BX][DI] + dépl. [BX][SI] + dépl. [BP][DI] + dépl. [BP][SI] + dépl. Rachid Beguenane
14
Registres “Segment” et “Offset”
Registres Offset utilisés pour les différents segments Registres Segment CS DS ES SS Registres Offset IP SI, DI, BX SP, BP Rachid Beguenane
15
EXERCICES Rachid Beguenane
16
C’est quoi les différences majeures entre un mP88 et un mP86?
Si les mP80286 et mP80386SX possède tout deux un bus de données externe de 16-bit, c’est quoi donc la différence entre eux? Un mP 32-bit désigne-t-il un cheminement des données internes ou externes? Est ce qu’un programme écrit pour le mP88/86 peut s’exécuter dans un mP80486? C’est quoi les différences majeures entre un mP88 et un mP86? C’est quoi la deuxième méthodologie pour améliorer la puissance de traitement d’un mP, autre qu’augmenter la fréquence? C’est quoi les fonctions de BIU et EU? 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 Parmi ces instructions, lesquelles ne peuvent être codées dans le mP88/86 : a- MOV AX, 27 b- MOV AL, 97F c- MOV DS, 9BF2 d- MOV CX, 397 e- MOV SI, 9516 f- MOV CS, 3490 g- MOV DS, BX h- MOV BX, CS i- MOV CH, AX j- MOV AX, 23FB9 k- MOV CS, BH l- MOV AX, DL 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 En assumant que l’adresse physique d’une location mémoire est 0046H, suggérer des adresses logiques possibles? 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? Rachid Beguenane
17
Choisir une réponse correcte:
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? 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 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? 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. 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? 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 Rachid Beguenane
18
24. Assumant que les registres ont les valeurs suivantes (en Hex):
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 Rachid Beguenane
19
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 … Rachid Beguenane
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.