1 / 19

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

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.

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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

  2. 1Rappel 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/85de plusieurs façons. • - Le mP 8086 possède 16 lignes d’adresses (64Ko de mémoire), alors que le mP 8080/8085en 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.

  3. 1Rappel 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 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 mP 80286 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 80286 pour son micro-ordinateur IBM PC/AT et les fabricants clones ont suivi.

  4. 1Rappel historique Bref sur la famille 80x86 • Les mP 80386 et 80486 • - Les utilisateurs demandent toujours des mP plus puissants. Ainsi Intel introduit en 1985 le mP 80386 (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, 80287 et 80387. • Plus tard Intel a introduit le mP 80386SX, qui a la même architecture interne que le mP 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 mP 80486, Intel a amélioré le mP 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 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.

  5. Fetch 1 Fetch 2 Execute 1 Execute 2 2: A l’intérieur du mP 8088/8086 • 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 Execution avec Pipeline mP 80x86 Fetch 2 Execute 2 Execution Sans Pipeline mP8085 Fetch 3 Execute 3

  6. 2: A l’intérieur du mP 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. AX1 AX0 AX8 AX7 8 bits ou 16-bits AX15 AX14 AH1 AH0 AH7 AH6 AL1 AL0 AL7 AL6 16-bits IP15 IP14 IP1 IP0

  7. Bloc Diagramme de du mP 8088/86 EXECUTION UNIT (EU) BUS INTERFACE UNIT (BIU) 7 15 0 AX Registres de Segment Accumulateur A H A L 15 0 BX Base B H B L CS CX Compteur C H C L DS Données (E/S) DX D H D L SS Source index SI ES Destination index DI Base pointer IP BP Stack pointer SP Registres généraux GENERATION D’ADRESSES & BUS DE CONTROLE BUS MULTIPLIXE OPERANDES SEQUENCEUR CHAINE D’INSTRUCTIONS Buffer ALU Registres d'état et de contrôle FR

  8. 3 : Introduction à la programmation Assembleur Programmer vite et moins d’erreurs MNEMONIQUES(facile a se rappeler) 1400h MOV AL, 21h Meilleure programmation Bonne connaissance des registres, leur taille et de la CPU en générale ADD AL, 42h BinHex ADD AL, [1800h] HALT 1407h Langage “ASSEMBLEUR” (Langage bas-niveau) Langage “C, Pascal, Basic” (Langage haut-niveau) Langage “MACHINE” (Code Objet) Programme “ASSEMBLEUR” MASM (Microsoft), DEBUG, TASM (Turbo Borland) (Code Source) Programme “COMPILATEUR” Pas besoin de connaître la CPU

  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. • MOVdestination, 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

  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 + 0594h ( 07C9h) • L’opérande sourceest 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

  11. 4 : Introduction aux Segments du programme • 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 iciOffset = IP • DS : DI (7521h : 85FBh)  Adr. Phy. = 75210h + 85FBh = 7D81Bh ici Offset = DI 00000h FFFFFh (= 220 =1Mo) DS ES CS 64Ko SS RAM 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

  12. 5 : Modes d’Adressage du mP80x86 A C C É S R A 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é. LesmP80x86 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 saufFR et • (CS, DS, S, ES)MAIS MOV AX, 2550h MOV DS, AX • Adressage DirectMOV 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]+9 ; copie DS:BX+9 et DS:BX+9+1 dans CX • MOV AL, [BP]+5 ; copie SS:BP+5 dans AL • Note: MOV AL,[BP+5] ou MOV AL,5[BP]  “BP+5” estappelé 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 relatifMOV 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 R E S A C CÉ S L E N T M É M O I R E

  13. 5 : Modes d’Adressage du mP80x86 • Récapitulatif

  14. Registres “Segment” et “Offset” Registres Offset utilisés pour les différents segments

  15. EXERCICES

  16. 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?

  17. 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

  18. 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

  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 …

More Related