EEIJ

Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux


Sommaire


Conforme à XHTML 1.0 Strict Conforme à CSS!

On se lasse de tout, sauf de comprendre.
Attribué à Virgile.

L'affichage en assembleur

Historique

29 juillet 2010 : Création de cette page sur l'ancien site de Païou.

Difficulté

Pour : un esprit logique et curieux.

 Introduction

Voici quelques indications sur le fonctionnement de l'affichage à partir de l'assembleur et qui vous permettent de d'afficher du texte à l'écran.

 Fonctionnement

 Les interruptions logicielles

Le programme assembleur que vous écrivez peut utiliser des routines déjà prêtes pour effectuer certaines tâches, telles que l'attente de la saisie d'un caractère au clavier, la gestion des disque, l'affichage à l'écran ...
L'instruction est INT xx avec xx = numéro de l'interruption, en hexadécimal.

Pour gérer l'affichage avec les routines du BIOS, vous utiliserez l'interruption 10h. C'est la "BIOS video services interrupt", c'est à dire l'interruption qui gère le graphisme. Cette interruption dispose de beaucoup de fonctions, mais vous n'en utiliserez probablement que quelques unes.

Avant de placer l'instruction INT 10h, vous devrez renseigner quelques registres avec les valeurs adéquates.

Haut

 Aperçu des fonctions BIOS

Voici comment vous appellez une routine du BIOS.
MOV AH, xxavec xx = numéro (hexadécimal) de la fonction
INT 10pour appeler la fonction.
Suivant la fonction appelée, vous devrez également renseigner d'autres registres.

Voici la liste de quelques fonctions correspondant à l'interruption 10 :

Quelques unes de ces fonctions vont être explicitées.

Haut

 Mode d'affichage

Pour configurer un mode d'affichage, vous écrirez :
MOV AX 0003 AH = 00 (définition de la fonction 00) AL = 03 (définition du mode 03 par exemple).
INT 10 appel de la fonction.

Voici la liste des modes :

Un changement de mode efface tout l'écran !.

Au démarrage de l'ordinateur c'est ce mode 03 qui est pris par défaut.

Haut

 Définition des attributs

Vous pouvez définir la couleur de l'élément dessiné (pixel ou caractère) et du fond. C'est le registre BL qui est utilisé :
MOV BL,1C
Les différents bits correspondant à la valeur hexadécimale ont la signification suivante :
0  0 0 1   1  1 0 0avec, de gauche à droite :

Pour l'intensité : 0 = sombre, 1 = lumineux. Pour les composantes : 0 la couleur est absente, 1 = la couleur est présente.
Ainsi, l'exemple ci-dessus donne : fond bleu sombre, caractère rouge lumineux.

Haut

 Ecriture d'un caractère en mode étendu

C'est ce mode qui permet le maximum de possibilités, mais sa gestion demande plus d'instructions.

Placement du curseur

La fonction 02 vous permet de placer le curseur à une position donnée :
MOV AH,02 définit la fonction.
MOV BH,00 page 00 = page courante.
MOV DX,020B ligne = 3 (02+1), colonne = 12 (0B+1).
INT 10 place le curseur.

Écriture avec attributs

C'est la fonction 09 qui définit le caractère :
MOV AH,09 définit la fonction.
MOV AL,41 définit le caractère 'A'.
MOV BH,00 page 00 = page courante.
MOV AL,65 définit le caractère 'A'.
MOV CX,0002 définit le nombre de caractères identiques.
INT 10 affiche les caractères.

Le curseur n'est pas déplacé automatiquement.

Écriture sans attributs

La fonction 0A écrit également un caractère, mais en conservant les attributs de l'emplacement où sera écrit le caractère
Elle est utilisée comme la fonction 09, mais le registre BL est sans incidence.
Le curseur n'est pas déplacé.

Haut

 Écriture d'un caractère en mode télétype

Cette fonction affiche un caractère à l'écran (écrit dans la page courante), avance le curseur, fait défiler les lignes si nécessaire.
Les caractères 07h (beep), 08h (arrière), 0Ah (saut de ligne) et 0D (retour chariot) sont correctement exécutés.

MOV AH,0E définit la fonction.
MOV AL,41 définit le code ASCII du caractère, ici 'A'.
MOV BH,00 page = page courante.
MOV BL,0C attributs du caractère (pas du fond), comme spécifié ci-dessus.
INT 10 écrit le caractère.
Avec cette fonction, seuls les attributs du caractère sont pris en compte, et uniquement pour les modes graphiques (0D, 0E,10, 12, 13)

Lors du démarrage de l'ordinateur, c'est ce mode qui est utilisé par le BIOS et le mini-programme de démarrage.

Haut

 Gérer la pile

Dans pratiquement tous les programmes on utilise la pile, par exemple avant d'appeler une routine.

La gestion de la pile, en assembleur, Cliquez