Zero One Cyber

Contenu du cours
Tutoriel Assembleur – Chapitre 1 : Les bases indispensables pour débuter
Dans ce premier chapitre, tu découvriras les fondamentaux du langage Assembleur afin de comprendre comment un programme interagit directement avec le processeur et la mémoire. Tu apprendras : ce qu’est réellement l’Assembleur et à quoi il sert le rôle du processeur, des registres et de la mémoire la structure d’un programme assembleur les instructions de base et leur fonctionnement le flux d’exécution d’un programme les notions essentielles pour lire et comprendre du code assembleur simple Ce chapitre pose les bases indispensables pour aborder la programmation bas niveau, le reverse engineering et l’analyse de binaires dans la suite du cours. Aucun prérequis avancé n’est nécessaire : tout est expliqué pas à pas, avec une approche claire et accessible.
0/13
Programmation bas niveau : maîtriser l’Assembleur

INTRODUCTION

 

Dans un chapitre précédent, nous avons identifié l’existence d’une zone mémoire appelée mémoire vidéo. Cette mémoire ne représente cependant que la partie visible du processus d’affichage. Avant qu’un point n’apparaisse réellement à l’écran, il traverse plusieurs étapes de traitement. L’ensemble de ces opérations est pris en charge par un périphérique dédié : la carte vidéo, aussi appelée carte graphique.

 

La carte vidéo joue un rôle central dans l’affichage. Elle contrôle la résolution de l’écran, le nombre de couleurs disponibles, la palette utilisée, la fréquence et la vitesse de balayage, ainsi que d’autres paramètres essentiels au rendu graphique. Elle fait le lien entre les données numériques stockées en mémoire et le signal envoyé à l’écran.

 

Il existe plusieurs générations de cartes vidéo, chacune correspondant à des capacités graphiques différentes. Les premières, comme la CGA, offraient un affichage très limité avec seulement quelques couleurs et de faibles résolutions, ce qui les rend aujourd’hui obsolètes. L’EGA a apporté davantage de couleurs et une meilleure résolution, et conserve encore quelques utilisateurs par nostalgie ou pour des besoins spécifiques. La VGA a marqué une avancée majeure en proposant des modes en 256 couleurs et des résolutions plus élevées, tout en conservant des modes texte performants. Enfin, les cartes SVGA ont permis d’atteindre des résolutions élevées et un affichage en millions de couleurs.

 

Les cartes graphiques modernes restent compatibles avec les anciens modes. Ainsi, une carte SVGA est capable de reproduire les modes CGA, EGA ou VGA, ce qui garantit une large compatibilité logicielle.

 

La palette de couleurs

 

Toutes les images n’utilisent pas les mêmes teintes. Ce problème se pose principalement dans les modes graphiques limités à 256 couleurs ou moins. Dans ces modes, l’écran ne peut afficher que les couleurs définies dans une palette, ce qui impose d’adapter cette palette à l’image affichée afin d’éviter un rendu visuel dégradé.

 

Il existe plusieurs méthodes pour modifier la palette, notamment en passant par le BIOS ou en accédant directement aux registres de la carte vidéo. La méthode la plus simple consiste à utiliser une interruption BIOS pour redéfinir l’ensemble de la palette. Cette approche est facile à mettre en œuvre, mais elle est relativement lente. Elle ne permet de modifier les couleurs que globalement, et non composante par composante de manière indépendante et rapide.

 

Dans cette méthode, on indique au BIOS l’adresse mémoire contenant la palette, on précise que l’on souhaite modifier les registres du convertisseur numérique-analogique, puis on écrit l’ensemble des couleurs en une seule opération. Chaque couleur est définie par trois valeurs correspondant au rouge, au vert et au bleu. Comme il y a 256 couleurs et trois composantes par couleur, la palette complète occupe 768 octets en mémoire.

 

En raison de sa lenteur, cette technique est adaptée uniquement à l’affichage d’images fixes. Elle n’est pas utilisable dans des animations, où les couleurs doivent être modifiées rapidement et de façon répétée.

 

Accès direct aux registres de la carte vidéo

 

Pour des performances supérieures, il est possible de modifier directement les registres de la carte vidéo, et plus précisément ceux du DAC. Cette méthode contourne le BIOS et permet un accès beaucoup plus rapide à la palette.

 

Le principe consiste à indiquer à la carte vidéo l’index de la première couleur à modifier, puis à envoyer successivement les composantes rouge, verte et bleue de chaque couleur. Les données sont transmises directement aux ports matériels du DAC, ce qui permet de mettre à jour toute la palette de manière efficace. Cette technique est particulièrement adaptée aux animations et aux effets graphiques avancés.

 

Il est également possible de ne modifier qu’une seule couleur de la palette. Dans ce cas, on commence par spécifier l’index de la couleur concernée, puis on envoie séparément les valeurs correspondant aux composantes rouge, verte et bleue. Cette modification est immédiatement visible à l’écran. Par exemple, changer la couleur d’index zéro permet de transformer instantanément le noir en une autre teinte choisie par le programmeur.