# Programmation Assembleur/x86/Introduction

* Programmation Assembleur/x86
* Introduction
* Registres
* Les flags
* Copie entre registres et mémoire
* Les branchements
* La pile
* Les interruptions
* Opérations arithmétiques et logiques
* Interactions avec les périphériques
* Optimisation des performances
* Index
* Conclusion
* Modifier ce modèle

## Les processeurs x86

Les processeurs de la famille x86 comptent approximativement deux décennies de domination sur l'univers de l'ordinateur personnel — on dit maintenant aussi ordinateur familial, sans doute le public concerné a-t-il évolué. Le Pentium 4$^{TM}$, par exemple, est un x86.
En réalité, un x86 est un processeur compatible avec son plus lointain ancêtre : le 8086 créé par Intel$^{TM}$ en 1978. Il va de soi que la compatibilité n'est assurée que dans un sens. Autant un programme écrit en assembleur pour fonctionner sur un 8086 a toutes les chances de fonctionner sur un de ses descendants du 21ème siècle, autant l'inverse est très peu probable, à moins que son programmeur soit un grand nostalgique et ait par hasard retrouvé sous un meuble une disquette portant un assembleur de l'époque comme MASM.
La famille des x86 est divisée en plusieurs générations. Le 8086 est un processeur 16-bits muni d'un bus d'adressage 20-bits. Le 8088, construit à peu près en même temps que le 8086, est un processeur moins cher, qui n'a qu'un bus de données 8-bits, bien que son fonctionnement interne soit totalement identique à celui du 8086.
Le 8086, bien que très compétitif à sa création, commence à montrer ses lacunes vers le milieu des années 80. Ses deux principales lacunes sont : sa limitation à 1 Mio de mémoire système (les 20 bits d'adressage), et l'absence totale des mécanismes de protection de la mémoire, ce qui limite le développement de systèmes d'exploitation multi-tâches — ceux-ci se sont en réalité développés bien plus tard en ce qui concerne les PC : Linux apparaît en 1991.
Le 80186 est un 8086 qui intègre en son cœur des contrôleurs qu'on trouve habituellement sur la carte mère (horloges, interruptions, DMA, MMU). Sorti la même année que le 80286, il n'a presque pas été vendu.
Le 80286 marque une réelle évolution rapport au 8086, et son apparition marque le début d'une ère plus complexe, puisqu'à partir d'ici, les x86 ont plusieurs modes d'exécution. Tous les successeurs du 80286 comportent un mode réel ou mode d'adressage réel. Lorsqu'un x86 fonctionne en mode réel, il se comporte comme un 8086, c'est-à-dire que l'accès à la mémoire système se fait de manière très rudimentaire : un registre de segment contient l'adresse physique du segment mémoire qui nous intéresse, et un registre pointeur contient une adresse à l'intérieur du segment. De plus, son jeu d'instructions est celui du 8086. Le 80286 introduit le mode protégé. Un registre de segment ne contient alors plus une adresse physique marquant le début du segment, mais un sélecteur de segment. Un sélecteur de segment est constitué d'un numéro de descripteur et d'un certain nombre d'indicateurs. Le processeur va alors rechercher le descripteur de segment correspondant dans une table, et celui-ci indique, entre autres, l'adresse physique (24 bits cette fois) de début du segment. Le 80286 contient aussi les rudiments du système d'adressage actuel par plages de mémoire virtuelle.
Le 80386 est le premier processeur x86 32-bits. Il offre de plus un système de mémoire virtuelle complet.
Le 80486 introduit plusieurs nouvelles instructions et optimisations tout du long de sa vie commerciale. À l'origine vendu sous la dénomination 486-DX avec un coprocesseur arithmétique pour exécuter des calculs flottants, Intel vend des 486 dont le FPU défectueux a été neutralisé sous la dénomination 486-SX. C'est le dernier modèle de processeur d'Intel à ne pas intégrer la gestion des nombres flottants.
L'époque qui suit est l'époque des Pentium$^{TM}$, des Celeron$^{TM}$, des Athlon$^{TM}$, des Duron$^{TM}$. qui se différencient de leurs prédécesseurs par différentes optimisations, en particulier, un pipeline d'exécution allongé, l'abandon de la mémoire FPM au profit de l'EDO puis la DDR, ainsi que différentes nouvelles instructions dont les extensions SIMD que sont le MMX, SSE et 3DNow!
L'Opteron et l'Athlon 64 d'AMD, ainsi que l'architecture Core 64 bits d'Intel utilisent un jeu d'instructions 64 bits et de nouvelles extensions du jeu d'instruction font progressivement leur apparition avec l'AVX

## Marques déposées

* Les noms des marques déposées par leurs détenteurs respectifs.

## Liens web

* http://www.intel.com/products/processor/manuals/ - Les manuels en anglais des Code Op
* https://zs3.me/intel.php - Instructions x86