Introduction
Le langage Assembleur de la famille des 80x86 est de loin le plus populaire des langages assembleurs à avoir été développé. De plus, ses différents modes de fonctionnement (Mode réel, Mode protégé, Mode virtuel, Mode SMM, Mode Long (64 bits)) sont le résultat d'un manque de vision d'extension vers le futur. Hélas, on ne peut pas tout prévoir, mais le prix a payer fut des programmes a réécrire, un microprocesseur de plus en plus complexe de style CISC. En faite, tout le contraire des microprocesseurs RISC.
Le bon côté de la complexité de son fonctionnement, tiens du fait qu'il est possible d'écrire des programmes en langages machines avec très peu de code si on est habile pour utiliser spécifiquement ce qu'on a vraiment besoin. Ainsi, si on veut effectué des calculs ne nécessitant que 8 bits et non 16 bits, cette opération est toujours possible. De plus, les experts de ce langage assembleur arrive a effectuer deux opérations 8 bits avec une seule instruction, a mettre la valeur d'un registre avec un opérateur de «ou exclusif binaire» (exemple: XOR AX,AX ou XOR EAX,EAX), lequel est beaucoup compacte en terme de code. Et bien que la folie des grandeurs poussent les programmeurs a consommer toujours le maximum d'un registre, il est souvent préférable d'écrire un code très petit, qu'avec des instructions plus rapide, car, bien que ses processeurs soit très rapide, les programmes, eux sont toujours aussi lent a charger en mémoire!
Avantages
Bien que très peu utilisé, quels sont les avantages d'utiliser le langage de programmation Assembleur ?
- Les langages assembleurs sont beaucoup plus rapide d'exécution que les langages évolué.
- Les langages assembleurs sont beaucoup plus petit en terme de taille total d'un programme. Généralement, ils sont 10 fois plus petits qu'une application écrit en langage évolue (3GL ou 4GL).
- Il est possible d'avoir un contrôle total sur le contexte d'utilisation de la mémoire.
- Il est possible de tout faire en assembleur, ainsi, si on souhaite écrire un secteur de démarrage entrant spécifiquement dans un espace réduit, c'est possible! Dans un langage évolué, comme le langage C ou Pascal, cette idée peut paraitre à la fois farfelue et dangereuse, car totalement imprévisible en fonction des versions et du fabricant du compilateur.
Inconvénient
Qu'est-ce qu'y bloc l'utilisation du langage de programmation Assembleur ?
- Les programmes écrits en assembleurs sont destinés au microprocesseur et le matériel pour lequel ils ont étés écrits. Ils ne sont pas portable.
- Le temps de développements est souvent beaucoup plus long qu'un autre langage, car des erreurs souvent banales, peuvent faire planter le système.
- Le temps de formation d'un professionnel est beaucoup plus long.
Liste simplifié des microprocesseurs compatible
Microprocesseur | Fabricant | Génération | Mode de fonctionnement | Registre | Coprocesseur | Coeur |
---|---|---|---|---|---|---|
8088 | Intel | 1re | Mode réel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, ES, IP, SI, SP, SS | 8087 | 1 |
V20 | NEC | 1re | Mode réel, mode émulation 8080 | AH, AL, AX (AW), BH, BL, BP, BX (BW), CH, CL, CS, CX (CW), DH, DI, DL, DS, DX (DW), ES, IP, SI, SP, SS | 1 | |
8086 | Intel | 1re | Mode réel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, ES, IP, SI, SP, SS | 8087 | 1 |
V30 | NEC | 1re | Mode réel, mode émulation 8080 | AH, AL, AX (AW), BH, BL, BP, BX (BW), CH, CL, CS, CX (CW), DH, DI, DL, DS, DX (DW), ES, IP, SI, SP, SS | 1 | |
80188 | Intel | 1re | Mode réel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, ES, IP, SI, SP, SS | 8087 | 1 |
80186 | Intel | 1re | Mode réel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, ES, IP, SI, SP, SS | 8087 | 1 |
80286 | Intel | 2e | Mode réel, mode protégé | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, ES, IP, SI, SP, SS | 80287 | 1 |
80386DX | Intel | 3e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, SI, SP, SS | 80387DX | 1 |
80386DXL | AMD | 3e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, SI, SP, SS | 1 | |
80386DXLV | AMD | 3e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, SI, SP, SS | 1 | |
80386SX | Intel | 3e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, SI, SP, SS | 80387SX | 1 |
80386SXL | AMD | 3e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, SI, SP, SS | 1 | |
80386SXLV | AMD | 3e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, SI, SP, SS | 1 | |
80386SL | Intel | 3e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, SI, SP, SS | 80387SL | 1 |
80386SLC | IBM | 3e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, SI, SP, SS | 1 | |
80486 | Intel | 4e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, R0, R1, R2, R3, R4, R5, R6, R7, SI, SP, SS | Intégré | 1 |
80486DX | Intel | 4e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, R0, R1, R2, R3, R4, R5, R6, R7, SI, SP, SS | Intégré | 1 |
80486SL | Intel | 4e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, R0, R1, R2, R3, R4, R5, R6, R7, SI, SP, SS | Intégré | 1 |
80486SLC2 | IBM | 4e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, SI, SP, SS | 1 | |
80486SX | Intel | 4e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, SI, SP, SS | 80487SX | 1 |
Pentium | Intel | 5e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, R0, R1, R2, R3, R4, R5, R6, R7, SI, SP, SS | Intégré | 1 |
Pentium MMX | Intel | 5e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, MM0, MM1, MM2, MM3, MM4, MM5, MM6, MM7, R0, R1, R2, R3, R4, R5, R6, R7, SI, SP, SS | Intégré | 1 |
Pentium Pro | Intel | 6e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, MM0, MM1, MM2, MM3, MM4, MM5, MM6, MM7, R0, R1, R2, R3, R4, R5, R6, R7, SI, SP, SS | Intégré | 1 |
Pentium II | Intel | 6e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, MM0, MM1, MM2, MM3, MM4, MM5, MM6, MM7, R0, R1, R2, R3, R4, R5, R6, R7, SI, SP, SS | Intégré | 1 |
Pentium III | Intel | 6e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, MM0, MM1, MM2, MM3, MM4, MM5, MM6, MM7, R0, R1, R2, R3, R4, R5, R6, R7, SI, SP, SS | Intégré | 1 |
Pentium M | Intel | 6e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, MM0, MM1, MM2, MM3, MM4, MM5, MM6, MM7, R0, R1, R2, R3, R4, R5, R6, R7, SI, SP, SS | Intégré | 1 |
Pentium 4 | Intel | 7e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, MM0, MM1, MM2, MM3, MM4, MM5, MM6, MM7, R0, R1, R2, R3, R4, R5, R6, R7, SI, SP, SS | Intégré | 1 |
Pentium D | Intel | 7e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, MM0, MM1, MM2, MM3, MM4, MM5, MM6, MM7, R0, R1, R2, R3, R4, R5, R6, R7, SI, SP, SS | Intégré | 2 |
Core 2 | Intel | 7e | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, MM0, MM1, MM2, MM3, MM4, MM5, MM6, MM7, R0, R1, R2, R3, R4, R5, R6, R7, SI, SP, SS | Intégré | 2 |
... | ... | ... | Mode réel, mode protégé, mode virtuel | AH, AL, AX, BH, BL, BP, BX, CH, CL, CS, CX, DH, DI, DL, DS, DX, EAX, EBX, ECX, EDI, EDX, ESI, ES, FS, GS, IP, MM0, MM1, MM2, MM3, MM4, MM5, MM6, MM7, R0, R1, R2, R3, R4, R5, R6, R7, SI, SP, SS | Intégré | ... |
Voir également
Articles - Les géants de l'informatique - Intel
Références
Assembleur - Référence, Edition Micro Application, Pierre Maurette, 2003, ISBN: 2-7429-3061-2, page 84 à 100.
The Undocumented PC: A programmer's Guide to I/O, CPUs, and Fixed Memory Areas - Second Edition, Edition Addison-Wesley, Frank van Gilluwe, 1997, ISBN: 0-201-47950-8, page 51 à 62.