Ce cours couvre les fondamentaux de la programmation en assembleur Intel, incluant la structure des processeurs, les registres, les instructions de base et les techniques d'optimisation pour développer des programmes efficaces. Ce PDF de 60 pages offre une approche pratique et détaillée, idéale pour les débutants et les développeurs souhaitant maîtriser le langage assembleur. Vous y trouverez des exemples concrets, des exercices et des explications claires sur la manipulation de la mémoire, les opérations arithmétiques et logiques, ainsi que la gestion des interruptions. Très bon cours à télécharger gratuitement, il constitue une ressource complète pour acquérir des compétences solides en programmation bas niveau.
Ce cours s'adresse aux étudiants en informatique, aux développeurs souhaitant comprendre les fondements du matériel, ainsi qu'aux professionnels en cybersécurité ou reverse engineering. Une base en programmation (C, Python) est recommandée, mais pas obligatoire. Les passionnés d'optimisation de code ou d'architecture processeur y trouveront également un intérêt majeur.
Cette section couvre les bases des systèmes binaire et hexadécimal, essentiels pour comprendre la représentation des données en assembleur. Vous apprendrez à convertir entre ces systèmes et à les utiliser pour les opérations bas niveau.
Explorez l'évolution des processeurs Intel, de l'architecture 8086 aux modèles 64 bits actuels. Un focus est mis sur les registres (EAX, EBX, etc.), leur rôle, et le modèle mémoire segmenté vs plat.
2.1 La mémoire
Une analogie consiste à comparer la mémoire à une longue rangée de tiroirs alignés les uns derrière les autres. Chaque tiroir (octet) est adressable individuellement via une adresse hexadécimale. Cette section explique l'organisation mémoire, les accès alignés/non-alignés, et les notions de little-endian.
Décryptage du fonctionnement de la RAM, de la pile (stack) et du tas (heap). Vous étudierez les instructions MOV, PUSH/POP, ainsi que la gestion dynamique de la mémoire en assembleur.
Apprentissage des instructions fondamentales (arithmétiques, logiques, de contrôle) et des modes d'adressage (immédiat, registre, mémoire). Des exemples concrets illustrent l'utilisation des flags (ZF, CF) pour le débogage.
Mise en pratique avec des cas réels : boucles, appels de fonctions, manipulation de chaînes. Un projet final guide l'écriture d'un programme complet, de la compilation avec NASM à l'exécution sous Linux/Windows.
Le cours combine théorie (schémas d'architecture, tableaux d'instructions) et pratique (émulateurs comme QEMU, débogueurs GDB/OLlyDbg). Des exercices auto-corrigés et des ressources téléchargeables (codes sources, cheatsheets) accompagnent chaque module.
Partner sites PDF Tutorials (English) | PDF Manuales (Spanish) | Cours PDF (French)