Pendant ce deuxième confinement, je décide de me replonger dans la programmation en assembleur X86 32 bits avec windows10 pour essayer d’écrire un petit tutoriel.
La difficulté avec windows 10 et ceci depuis windows XP, est que ce système d’exploitation n’autorise pas l’appel des interruptions ni les appels système pour programmer les fonctions d’entrées sorties. Il va nous obliger à utiliser les appels à l’API windows.
Mais les avantages sont aussi très grands : les fonctions de l’API sont très nombreuses et bien documentées et il est inutile d’installer un émulateur pour faire fonctionner les programmes.
Ceci implique que les programmes développés seront aussi utilisables sous Windows 7 et 8.
Et pourquoi le 32 bits ? : parce que c’est un début ! Et il y a encore des ordinateurs qui fonctionnent en 32 bits sous windows. Je verrais plus tard les adaptations pour l’assembleur X86-64 bits.
Dans ce cours, je détaillerais les instructions élémentaires de l’assembleur X86 en donnant des exemples de petits programmes et au fur et à mesure des besoins, je ferais appel aux fonctions de l’API windows. Pour chaque chapitre, vous trouverez les commentaires dans le fichier texte.md.
Pour les débutants qui n’ont jamais programmé, je déconseille de commencer par l’assembleur, il est préférable de commencer par un langage évolué comme le C ou Python pour apprendre les bases d’un langage compilé ou interprété.
Les prérequis nécessaires à l’assembleur sont de connaître la composition matérielle d’un ordinateur, les notion de base d’algorithmique (boucles, alternatives, structures de données) et les bases de la numération (binaire hexadécimale, décimale).
Pour la documentation (hélas le plus souvent en anglais), vous trouverez toute la documentation des processeurs Intel ici : documentation Intel. Je vous conseille de télécharger les premiers volumes pour les avoir à disposition facilement.
Vous trouverez une description des instructions X86 sur le site de gladir avec des exemples plus adaptés pour le 8 bits et 16 bits.
vous trouverez aussi sur de nombreux sites d'université des cours (souvent en pdf) en français qui exposent de manière détaillée les principes de l'assembleur X86.
Sur Internet, il existe de nombreux tutoriels mais qui datent un peu, et qui sont souvent orientés vers la programmation en 8 et 16 bits et qui necessitent l’utilisation d’un émulateur pour faire fonctionner les programmes sous Windows. Vous en trouverez sur le site devellopez.com
Vous me pardonnerez, toutes les erreurs, bêtises et mauvaises interprétations que j’ai commises dans ce modeste tutoriel.
Remarque 1 : lorsque vous écrivez, compilez et testez les programmes en assembleur, pensez à fermer toutes les autres applications ou enregistrez vos données.
Remarque 2 : ne vous contentez pas de recopier les exemples de programmes, mais modifier les pour voir les consèquences bonnes ou mauvaises de vos modifications.
Remarque 3 : les exemples de programmes ont été testés sur un système windows10 64 bits.
Chapitre 2 : Les bases : premiers programmes
Chapitre 3 : La pile, affichage d'un message, premières routines
Chapitre 4 : affichage d'un message dans la console
Chapitre 5 : affichage décimal d'un registre
Chapitre 6 : addition et soustraction de nombres entiers
Chapitre 7 : multiplication et division de nombres entiers
Chapitre 8 : opérations binaires
Chapitre 9 : affichage d'un registre en hexadécimal
Chapitre 10 : le registre d'état
Chapitre 11 : les accés mémoire
Chapitre 12 : fichier include. Les structures
Chapitre 13 : traitement des chaînes de caractères
Chapitre 14 : structures de traitement
Chapitre 15 : Macros instructions. Affichage de tous les registres
Chapitre 16 : Saisie de données
Chapitre 17 : Lecture écriture de fichiers
Chapitre 18 : calculs avec des nombres en virgule flottante
Chapitre 19 : les fichiers objets