Programmation Assembleur

Initiation à l'assembleur

Cet article a été mis à jour, vous consultez ici une archive de cet article!

L'assembleur ça se mange ?



Avant de commencer l'initiation proprement dite, il est intéressant de savoir ce qui fait tout l'intérêt d'apprendre un langage comme l'assembleur, et ce qu'il est nécessaire de connaître un minimum avant de se lancer dans le grand bain !

Aperçu rapide de l'architecture des MSX



Comme vous le savez sans doute, l'intérieur de votre MSX est composé de plein de choses qui sont sensées communiquer entre elles. Je vais vous faire ici une petite liste de ce qui va nous intéresser par la suite :

- un micro-processeur Z80A et sa mémoire dédiée (RAM) et (ROM) (il y a aussi un R800 sur les Turbo-R, mais c'est une autre histoire que nous n'aborderons pas ici, du moins pas dans un premier temps ! :) )
- un processeur graphique, que nous appellerons VDP, et sa mémoire vive dédiée (VRAM)
- un processeur sonore, désigné par PSG (rien à voir avec le foot hein... :p)
- un circuit d'interface (lui c'est le PPI)

Tous ces composants interagissent entre eux, tel un ensemble de musiciens jouant ensemble un morceau de musique. Ici, le Z80 a le rôle du chef d'orchestre. C'est lui qui va tout piloter. Le but de l'assembleur, c'est de parler directement au Z80. Votre code sera la partition que fera jouer le chef d'orchestre !


L'assembleur, un langage a compiler



Vous me direz que vous pouvez parler au Z80 avec le MSX-Basic. Certes, mais le résultat sera nettement moins rapide.

Pour simplifier les choses, le Z80 ne connaît qu'une langue : le langage machine. Il ne comprend que les chiffres binaires, des suites de 0 et de 1 (que l'on écrit souvent en hexadécimal dans les programmes pour simplifier). Quand vous lui parlez en MSX-Basic, il a besoin d'un interprète ! Et le temps que votre programme soit interprété et traduit en langage machine à ce bon vieux Z80, il y a pas mal de temps qui s'écoule... Le problème du MSX-Basic est donc que la traduction se fait en direct, ce qui induit beaucoup plus de lenteur.

L'assembleur quant à lui est un langage a compiler ! La traduction du programme se fait une seule fois, ce qui veut dire qu'une fois celle-ci effectuée, vous parlerez directement, sans interprète au Z80. Le gain de rapidité est juste... énorme !! :|