ASSEMBLEUR 80X86 1Introduction:................................................
ASSEMBLEUR 80X86 1Introduction:............................................................................................................................................................4 2Présentation:........................................................................................................................................................4 3Historique:...........................................................................................................................................................4 4Précisions sur ce document:................................................................................................................................4 5Pourquoi apprendre l’assembleur ?.........................................................................................................................5 6Les registres:............................................................................................................................................................6 7registres généraux (8, 16, 32 bits).......................................................................................................................6 8registres de segment (16 bits)..............................................................................................................................6 9registres de déplacement (16, 32 bits).................................................................................................................6 10Le pointeur d’instruCtion (16, 32 bits)..............................................................................................................6 11Le registre de drapeaux (32 bits).......................................................................................................................6 12Les AUTRES registreS:....................................................................................................................................6 13La mémoire:..........................................................................................................................................................6 14Les modes d’adressage de la mémoire:.................................................................................................................7 15Les instructions de BASE:.....................................................................................................................................8 16L'Affectation:.....................................................................................................................................................8 17SAut:..................................................................................................................................................................8 18Affectation conditionnelle:................................................................................................................................8 19Les entrées sorties:............................................................................................................................................9 20Traiter des adresses:..........................................................................................................................................9 21Calcul arithmétique:..........................................................................................................................................9 22Opérations logiques:..........................................................................................................................................9 23Traiter des bits:..................................................................................................................................................9 24Les fonctions:....................................................................................................................................................9 25Les interruptions:...............................................................................................................................................9 26Les rotations:...................................................................................................................................................10 27Les déplacements:...........................................................................................................................................10 28LeS drapeauX:.................................................................................................................................................10 29Divers:.............................................................................................................................................................10 30Attention..........................................................................................................................................................10 31Les instructions plus évoluées:............................................................................................................................11 32Les boucles:.....................................................................................................................................................11 33Instructions sur les chaines de caractere:........................................................................................................11 34Les conversions:..............................................................................................................................................12 35Deux autres types:...........................................................................................................................................12 36Ce que je ne détaillerai pas:.............................................................................................................................13 Spécifique au mode protégé:...........................................................................................................................13 Divers:.............................................................................................................................................................13 37Les interruptions:.................................................................................................................................................14 38principe d'utilisation:.......................................................................................................................................14 39Comment se déroule une interruption:............................................................................................................14 40Les interruptions les plus importantes:................................................................................................................15 INT 05h:..............................................................................................................................................................15 INT 10h:..............................................................................................................................................................15 INT 15h:..............................................................................................................................................................16 INT 17h:..............................................................................................................................................................16 INT 21h:..............................................................................................................................................................16 41INT 21h:..........................................................................................................................................................17 Généralités:......................................................................................................................................................17 INT 33h:..............................................................................................................................................................18 42Debug:.................................................................................................................................................................19 43Les paramètres des commandes:.....................................................................................................................19 44Les COMMANDES:.......................................................................................................................................19 Ecrire:..............................................................................................................................................................19 Lire:.................................................................................................................................................................19 Travailler sur des blocs:..................................................................................................................................19 Travailler avec les ports:.................................................................................................................................19 Version 2.0 page Assembleur 80X86 11/08/1997 1 / 36 © Laurent CONSTANTIN Lecture et écriture dans un fichier:..................................................................................................................19 Débugguage:....................................................................................................................................................19 Divers:.............................................................................................................................................................19 45EMploi de debug Pour faire un dump de la mémoire:....................................................................................19 46Utilisation de debug pour COMPILER de l’assembleur:................................................................................20 47Réaliser un formatage bas niveau avec debug:................................................................................................20 48MASM:................................................................................................................................................................21 49Utilisation de MASM:.....................................................................................................................................21 50Structure d’un programme .COM:..................................................................................................................21 51Les constantes:................................................................................................................................................21 52Les variables:...................................................................................................................................................21 53Les opérandes:.................................................................................................................................................22 54Le coeur du programme:.................................................................................................................................22 55Le ASSUME:..................................................................................................................................................22 56Les macros:......................................................................................................................................................22 Comparaison avec les procédures:..................................................................................................................22 Déclaration:.....................................................................................................................................................22 Utilisation:.......................................................................................................................................................23 Les tests:..........................................................................................................................................................23 Petit exemple:..................................................................................................................................................23 57 portions de programmes:....................................................................................................................................23 58L'écran:............................................................................................................................................................23 Ecrire une chaîne:............................................................................................................................................23 Effacer l’ecran:................................................................................................................................................24 Ecrire en utilisant la mémoire vidéo:...............................................................................................................24 59Le système:......................................................................................................................................................24 Voir les paramètres passés au programme:.....................................................................................................24 Retourner un code d'erreur à DOS:.................................................................................................................24 Rebooter l'ordinateur à chaud: ne marche pas dans une fenêtre DOS.............................................................24 Rebooter l'ordinateur à froid: ne marche pas dans une fenêtre DOS..............................................................24 Planter l'ordinateur:.........................................................................................................................................24 60Le BUZZER:...................................................................................................................................................25 Emettre un bip:................................................................................................................................................25 Emettre une fréquence:....................................................................................................................................25 61Le clavier:........................................................................................................................................................25 Vider le buffer:................................................................................................................................................25 Attendre l'appui sur une touche:......................................................................................................................25 Voir si une touche a été appuyée:....................................................................................................................25 62L'horloge:........................................................................................................................................................26 Connaître la date,...:........................................................................................................................................26 Connaître l'heure,...:........................................................................................................................................26 Attendre 10 secondes:.....................................................................................................................................26 Attendre BX/18,2 secondes:............................................................................................................................26 63Les disques:.....................................................................................................................................................26 Voir si un lecteur est prêt:...............................................................................................................................26 Savoir sur quel disque on a booté:..................................................................................................................26 Connaître le type du disque par défaut:...........................................................................................................26 64Un exemple complet:.......................................................................................................................................27 65Un TSR (Terminate and Stay Resident):.........................................................................................................28 66Rediriger des interruptions:.............................................................................................................................29 67Imprimer:.........................................................................................................................................................29 68Afficher le contenu d’un fichier:.....................................................................................................................30 69Divers:.............................................................................................................................................................30 70Un peu de vidéo:.................................................................................................................................................31 71Les modes vidéo:.............................................................................................................................................31 72Passer en mode VGA......................................................................................................................................31 73Ecrire un pixel:................................................................................................................................................32 74Attendre le retour du faisceau d’électrons de l’écran (retour page):...............................................................32 75ConnaîtrE la palette:........................................................................................................................................33 76affecter la palette:............................................................................................................................................33 77Effacer l'écran:.................................................................................................................................................33 78Afficher un point:............................................................................................................................................33 79l’assembleur et le C:............................................................................................................................................34 Version 2.0 page Assembleur 80X86 11/08/1997 2 / 36 © Laurent CONSTANTIN 80Exemple:..........................................................................................................................................................34 81Utiliser les interruptions DOS:........................................................................................................................34 82Voir la valeur présente à une adresse:.............................................................................................................34 83Rediriger une erreur critique:..........................................................................................................................34 84Accéder à la table des vecteurs d’interruption:...............................................................................................34 85Spécifique à Watcom:.....................................................................................................................................34 Definir une fonction assembleur dans le code CPP:.......................................................................................34 Importer une fonction depuis un fichier .ASM:..............................................................................................35 86Divers:.................................................................................................................................................................35 87Plus rapide:......................................................................................................................................................35 88comment connaitre si le CPU est 8086, 80286, .............................................................................................35 89Pas d’effet de bord:.........................................................................................................................................35 90Conclusion:..........................................................................................................................................................36 91Couverture du sujet:........................................................................................................................................36 92Thèmes non abordés:.......................................................................................................................................36 93Où approfondir ses connaissances:..................................................................................................................36 Version 2.0 page Assembleur 80X86 11/08/1997 3 / 36 © Laurent CONSTANTIN A PROPOS Ce document est un «résumé», car il ne donne que des explications succinctes des thèmes abordés. C’est donc un «pense bête» plutôt qu’un document de formation. En conséquence, si vous êtes novice, vous risquez de ne pas comprendre les concepts qui seraient nouveaux pour vous. Les personnes expérimentées, quant à elles, y trouveront un pense bête clair et concis. NOUS AVERTISSEMENT En aucun cas Laurent CONSTANTIN ne pourra être tenu pour responsable des préjudices, de quelque nature que ce soit, pouvant résulter de l’utilisation du contenu de ce document. DROITS D’AUTEUR Article 122-4 du Code de la Propriété Intellectuelle (Loi du 11 mars 1957, article 40, alinéa 1er): "Toute représentation ou reproduction, intégrale ou partielle, faite sans le consentement de l'auteur ou de ses ayants droit ou ayants cause, est illicite." Article 122-5 2° du Code de la Propriété Intellectuelle (Loi du 11 mars 1957, article 41, alinéa 2ième): Ne sont autorisées que "les copies ou reproductions strictement réservées à l'usage privé du copiste et non destinées à une utilisation collective". Article 122-5 3° du Code de la Propriété Intellectuelle (Loi du 11 mars 1957, article 41, alinéa 3ième): Dans le cadre d'une utilisation collective, "sous réserve que soient indiqués clairement le nom de l’auteur et de la source" ne sont autorisées que les "analyses et courtes citations dans un but d'exemple et d'illustration". Articles 335-2 et suivants du Code de la Propriété Intel. (correspondent aux articles 425 et suivants du Code Pénal) Ces articles définissent les peines encourues si vous ne respectez pas les droits d’auteur. 1 INTRODUCTION: 2 PRÉSENTATION: Sans objet. 3 HISTORIQUE: Sans objet. 4 PRÉCISIONS SUR CE DOCUMENT: L’assembleur 80x86 est un domaine très vaste. Il y a les instructions spécifiques au 8086, au 80286, 80386, 80486, Pentium, les instructions MMX, ... Pour ne pas vous embrouiller entre ces différentes versions, je vais faire ce qui suit: je présente ce qui marche sur un 386 Donc, comme conséquences: · je ne vais plus parler de numéro de processeur: je ne vous embrouillerai pas · les programmes que vous ferez à l’aide de cette documentation ne seront pas optimisés pour un 80486 ou 586 · les programmes que vous ferez à l’aide de cette documentation ne marcheront peut être pas sur 8086 ou 286 Dernière restriction: à l’intérieur du domaine du 80386, je ne parlerai que de ce qui est le plus important pour faire de petits programmes. Version 2.0 page Assembleur 80X86 11/08/1997 4 / 36 © Laurent CONSTANTIN vous En contrepartie, si vous y trouvez des erreurs, si vous avez des remarques ou si vous décelez des oublis, vous vous engagez à les lui indiquer. L’accès à ce résumé est une faveur que l’auteur vous accorde. l’auteur Laurent CONSTANTIN «Champ de la Sevrette» 47120 Saint Pierre sur Dropt France 5 POURQUOI APPRENDRE L’ASSEMBLEUR ? “I believe that all programmers should learn the assembly language for the machines on which they work. ... Learning assembly intimately familiarizes the programmer with the hardware on which s/he is working. The more you know about your hardware environment, the better off you are.” (source: ASM Magazine) Version 2.0 page Assembleur 80X86 11/08/1997 5 / 36 © Laurent CONSTANTIN 6 LES REGISTRES: 7 REGISTRES GÉNÉRAUX (8, 16, 32 BITS) 8 REGISTRES DE SEGMENT (16 BITS) CS segment de code pointe sur l'adresse du début du segment de code (programme) SS segment de pile pointe sur l'adresse du début du segment de la pile DS segment de données pointe sur l'adresse du début du segment des données ES segment extra pointe sur l'adresse actuelle du segment extra FS et GS deux registres pour l’utilisateur 9 REGISTRES DE DÉPLACEMENT (16, 32 BITS) (E)BP pointeur de base pointe sur l'adresse des paramètres passés à la pile (16 et 32 bits) (E)SP pointeur de pile pointe sur l'adresse actuelle de la pile (16 et 32 bits) (E)SI indice de source pointe dans le segment des données (16 et 32 bits) (E)DI indice de destination pointe dans le segment extra (16 et 32 bits) 10 LE POINTEUR D’INSTRUCTION (16, 32 BITS) (E)IP pointeur d'instruction pointe sur la prochaine instruction à exécuter (16 et 32 bits) 11 LE REGISTRE DE DRAPEAUX (32 BITS) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 vm RF 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 NT IO 1 IO 2 OF DI IN T SF ZF AC PF CF CF Carry Flag retenue PF Parity Flag parité (1 = impair ; 0 = pair) AC Auxilary Carry ZF Zero Flag zéro SF Sign Flag signe (1 = négatif) T Trace pour le débuggage IN Interruption DI Direction pour la direction des instructions sur les chaînes de caractères OF OverFlow dépassement IO1 IO2 niveau de priorité des I/O NT Nested Task contrôle IRET RF Resume Flag utilisé avec les registres de débuggage VM Virtual Mode mode virtuel 12 LES AUTRES REGISTRES: · 4 Control Register pour le contrôle de la mémoire paginée, le cache, ... · 8 registres de débuggage où les débuggueurs vont mettre les points d’arrêts 13 LA MÉMOIRE: Version 2.0 page Assembleur 80X86 11/08/1997 6 / 36 © Laurent CONSTANTIN EyX 32 bits yL 8 bits yH 8 bits yX 16 bits On a: yX = yH yL et EyX = {16bits} yX où y = A (Accumulator) utilisé pour des calculs B (Base) utilisé pour y mettre des adresses C (Count) utilisé pour les compteurs D (Data) utilisé pour les données En fait, on peut faire ce que l’on veut. Par exemple, on peut utiliser AX comme compteur. Je ne parle que du mode réél qui permet d’adresser 1M de mémoire. La mémoire d’un PC est segmentée (ce qui permet de clairement séparer nos données, variables, ...). L’adresse d’un octet en mémoire est définie sur 20 bits par un segment (16 bits) et un offset (16 bits). Par exemple, avec le segment 29CA et l’offset 5D2A, on a uploads/Litterature/ assembleur-80x86.pdf
Documents similaires
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/I7tCHPbuMdGm6uYdWkU5oqedmKbsckl0EnkT200uJuhhRgYDHzvFu9X4JI5RFDEcNOZmWZszcSdlhPNm7oExIkzc.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/JwxdxSwTQHILHXBTAJZmx9z0zvV9fJoVfZwNvbUMW3JMnpTDWFEMYGPw5HDaTR1nDpEqCRbY1wVOi4Vz1op3Cg71.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/K7TlZqYy5uhK8LoT8cO664tQf9Qs1R11y0u0hRlWjUg854lTcWmHEMoWX7cHWOjs6W6UjUMhPHjzCwezAXePvzjN.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/Vebd71fnOglsEMlt8K49AWqAoCALI3oszzpZIId8KN9iBArVj9kkbgVjNmHaJBaXMTC86ndcksfgMMxW3p4bhChi.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/uEqsTvRPksjRqKxkNQRLhKsGp7mVwCs43aDEVYIdXMBrY5Hd7WH2H6C1U0SRtXpDA92YmsZgoJmzuOnZxa7ndGqH.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/oljmBgot1muvzLdOBfidRakxXo5vG1m5IBjVSkzwWHtrK5U6e8oJfWXPGoZ4E0y4EFVap8nMdyh31IWiaB0fEGXH.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/qDVCBkyouT1PPgJ0ummwK9bJlB9vkUEWfXrayOdK44XdyBtV4eHgn8xAPFc2hcSqMf4M5Wcz63EcAtU6VsLkweVp.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/jvTqQStZRyhkvsErQmW8rkFqwIrRneRxTTYGs7IdgdXRWmWeppSxKH91TJzbOdfoNgFOTzStHuzAwcgy3AYWGHR6.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/qu5uRgHTgq5ICbNCEfMqSiaZoxH0umvmLH6d0ZgBICW26bX3c5Ya9nQHxgUAko0alVKtsN8e38SHrqOCfr9vBT8f.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/p23of86NbO5OFV8tkvXZZx03gSi3vWBPOXpESqnTdnuGFNNALIZGftLKxV7KxROmcz6Uzs2mZy0ObN7owtU8AiYc.png)
-
18
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Dec 10, 2022
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 1.6579MB