Skip to content

Assembleur X86 pour windows 32 bits avec le compilateur Nasm. Assembly X86 for windows 32 bits with nasm compiler

Notifications You must be signed in to change notification settings

vincentARM/AssemblyX86Windows32

Repository files navigation

Assembleur X86 32 bits pour windows avec le compilateur nasm.

Introduction :

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 1 : Les outils

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

Chapitre 20 : création d'une simple fenêtre Windows

Chapitre 21 : exemple d'une fenêtre de saisie Windows

About

Assembleur X86 pour windows 32 bits avec le compilateur Nasm. Assembly X86 for windows 32 bits with nasm compiler

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages