Section courante

A propos

Section administrative du site

Interruption 10h

Fonction 09h

Écriture du caractère et l'attribut
MDA, CGA, PC Junior, EGA, MCGA, VGA, IBM 8514/A, Super VGA

Description

Cette fonction permet l'écriture d'un caractère et son attribut à la position du curseur.

Entrée

Registre Description
AH 09h
AL Ce registre permet d'indiquer le caractère à afficher (voir la table ASCII)
BH Ce registre permet d'indiquer la page (la première page est ou la page par défaut, correspond à la valeur 0)
BL Ce registre permet d'indiquer l'attribut (en mode texte) ou la couleur (en mode graphique). Voici le format d'un attribut en couleur :
Bits Description
0 à 3 Couleur de l'écriture:
Valeur Description  
0 (0000b) Cette valeur permet d'indiquer la couleur noir  
1 (0001b) Cette valeur permet d'indiquer la couleur bleu  
2 (0010b) Cette valeur permet d'indiquer la couleur verte  
3 (0011b) Cette valeur permet d'indiquer la couleur cyan  
4 (0100b) Cette valeur permet d'indiquer la couleur rouge  
5 (0101b) Cette valeur permet d'indiquer la couleur magenta  
6 (0110b) Cette valeur permet d'indiquer la couleur brune  
7 (0111b) Cette valeur permet d'indiquer la couleur gris clair  
8 (1000b) Cette valeur permet d'indiquer la couleur gris foncé  
9 (1001b) Cette valeur permet d'indiquer la couleur bleu clair  
10 (1010b) Cette valeur permet d'indiquer la couleur vert clair  
11 (1011b) Cette valeur permet d'indiquer la couleur cyan clair  
12 (1100b) Cette valeur permet d'indiquer la couleur rouge clair  
13 (1101b) Cette valeur permet d'indiquer la couleur magenta clair  
14 (1110b) Cette valeur permet d'indiquer la couleur jaune  
15 (1111b) Cette valeur permet d'indiquer la couleur blanche  
4 à 6 Couleur de l'arrière-plan de l'écriture:
Valeur Description  
0 (000b) Cette valeur permet d'indiquer la couleur noir  
1 (001b) Cette valeur permet d'indiquer la couleur bleu  
2 (010b) Cette valeur permet d'indiquer la couleur verte  
3 (011b) Cette valeur permet d'indiquer la couleur cyan  
4 (100b) Cette valeur permet d'indiquer la couleur rouge  
5 (101b) Cette valeur permet d'indiquer la couleur magenta  
6 (110b) Cette valeur permet d'indiquer la couleur brune  
7 (111b) Cette valeur permet d'indiquer la couleur gris clair  
7 Ce bit permet d'indiquer un clignotement ou un arrière-plan de haute-intensité
Voici le format d'un attribut en monochrome :
Bits Description
0 Soulignement de l'écriture
1 à 3 Teinte de l'écriture
Valeur Description
0 (000b) Cette valeur permet d'indiquer la teinte noir
1 (001b) Cette valeur permet d'indiquer la teinte grise
2 (010b) Cette valeur permet d'indiquer la teinte grise
3 (011b) Cette valeur permet d'indiquer la teinte grise
4 (100b) Cette valeur permet d'indiquer la teinte noir
5 (101b) Cette valeur permet d'indiquer la teinte grise
6 (110b) Cette valeur permet d'indiquer la teinte grise
7 (111b) Cette valeur permet d'indiquer la teinte blanche
4 à 6 Teinte de l'arrière-plan de l'écriture
Valeur Description
0 (000b) Cette valeur permet d'indiquer la teinte noir
1 (001b) Cette valeur permet d'indiquer la teinte grise
2 (010b) Cette valeur permet d'indiquer la teinte grise
3 (011b) Cette valeur permet d'indiquer la teinte grise
4 (100b) Cette valeur permet d'indiquer la teinte grise
5 (101b) Cette valeur permet d'indiquer la teinte grise
6 (110b) Cette valeur permet d'indiquer la teinte grise
7 (111b) Cette valeur permet d'indiquer la teinte grise
7 Ce bit permet d'indiquer un clignotement ou un arrière-plan de haute-intensité
CX Ce registre permet d'indiquer le nombre de caractères à écrire (facteur de duplication)

Sortie

 Aucune

Remarques

Exemples

L'exemple suivant, en Turbo Pascal, permet d'afficher un 80 caractères de trèfle sur une ligne avec un fond vert et l'écriture verte :

  1. Program WriteTrefle;
  2.  
  3. Procedure WriteChar(C:Char;Number:Word);Assembler;ASM
  4.  MOV AH,09h
  5.  MOV AL,Byte(C)
  6.  MOV BL,2Ah { Arrière-plan vert, couleur de premier plan vert clair }
  7.  MOV BH,0
  8.  MOV CX,Number
  9.  INT 10h
  10. END;
  11.  
  12. BEGIN
  13.  WriteChar(#5,80);
  14. END.

on obtiendra le résultat suivant :

L'exemple suivant, en Turbo Pascal, permet d'afficher une chaine de caractères «Gladir.com!» en haut de l'écran avec un fond bleu et la couleur cyan clair :

  1. Program Write09hSamples;
  2.  
  3. Procedure LocateXY(X,Y:Byte);Assembler;ASM
  4.   MOV DH,Y
  5.   MOV DL,X
  6.   MOV AH,02h
  7.   MOV BH,0
  8.   INT 10h
  9. END;
  10.  
  11. Procedure WriteChar(C:Char);Assembler;ASM
  12.  MOV AH,09h
  13.  MOV AL,Byte(C)
  14.  MOV BL,1Bh { Arrière-plan bleu, couleur de premier plan cyan clair }
  15.  MOV BH,0
  16.  MOV CX,1
  17.  INT 10h
  18. END;
  19.  
  20.  
  21. Procedure WriteString(Const S:String);
  22. Var
  23.  I:Byte;
  24. Begin
  25.  For I:=1 to Length(S)do Begin
  26.   LocateXY(I-1,0);
  27.   WriteChar(S[I]);
  28.  End;
  29. End;
  30.  
  31. BEGIN
  32.  WriteString('Gladir.com!');
  33. END.

on obtiendra le résultat suivant sur la première ligne d'affichage :

Gladir.com!

Voir également

La Bible du PC: Programmation système - Sixième Edition, Edition Micro-Application, Michael Tischer, 1996, ISBN: 2-7429-0544-8, page 1583.
Aide-mémoire des interruptions du MS-DOS, Edition Marabout, Philippe Mercier, 1990, ISBN: 2-501-01297-6, page 45 à 46.
The Undocumented PC: A programmer's Guide to I/O, CPUs, and Fixed Memory Areas - Second Edition, Edition Addison-Wesley, Frank van Gilluwe, 1997, ISBN: 0-201-47950-8, page 402 à 403.

Dernière mise à jour : Jeudi, le 3 mars 2016