Ecrire du texte sans 21h

zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 - 8 oct. 2005 à 20:18
BLUEBIBUBBLE Messages postés 116 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 10 avril 2013 - 29 janv. 2006 à 03:10
Je débute en ASM, et je me pose les questions suivantes.

- Est-ce que l'interruption 21h dépend de Dos ?

- Si oui, comment faut-il faire pour écrire du texte sans utiliser l'interruption 21h ?

- Comment écrire un caractère a n'importe quel endroit de l'écran ?



Tout cela en mode texte, bien sûr.

Bon, ca doit être tout simple, mais je débute vraiment tout juste.

Merci d'avance

7 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 oct. 2005 à 07:56
Pour les 2 dernières questions, voir les API Win32 de gestion de la console
WriteConsole/WriteConsoleOutput
0
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
10 oct. 2005 à 09:23
Bonjour,



Tu pourra trouver des infos pour ce que tu cherches sur le site suivant:


C'est essentiellement du 16 bits. Mais faut-il commencer par le 16 bits
qui commence à être un peu dépassé depuis les 32 et 64 bits.



Bonne prog
0
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
10 oct. 2005 à 17:44
En fait mon but c'est d'écrire un prog qui s'execute en autarcie (donc sans l'aide d'aucune API), et je crois que 21h est une interruption DOS, non ? Mais je peux me tromper...
0
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
10 oct. 2005 à 18:00
Ha ça y est j'ai trouvé, il faut utiliser l'int 10h, en passant 0Eh en paramètre (segment AH). Je vait essayer ça. Merci pour l'adresse du site(http://opecheux.free.fr), je crois que ça va bien m'aider .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
11 oct. 2005 à 09:27
Bonjour,

Pour répondre à une de tes questions, l'interruption 21h est
effectivement l'interruption du DOS. C'est une interruption logicielle
dont le vecteur d'interruption est situé en 0084h (4x21h car 4 octets
par interruption - le vecteur d'interruption de l'int 10h est en 0040h).

A priori rien n'empêche que le vecteur pointe vers un autre programme
que DOS mais il est dangereux d'y toucher (Des interruptions sont
d'ailleurs prévues pour changer des vecteurs d'interruptions).

Selon la valeur de AH, (et parfois d'autres registres) une fonction
particulière sera exécutée du genre saisie d'un caractère au clavier,
sortie d'un caractère, ou de plein d'autres choses encore. En règle
générale les interruptions BIOS sont très dépendantes du matériel, les
interruptions DOS le sont un peu moins (elles font appel au BIOS).



Pour accéder à l'écran texte il faut écrire dans la mémoire écran qui commence en B800:0000

Le codage est le suivant : caractère ascii, code couleur (2 octets pour un caractère).

Pour la couleur, certains bits codent le texte affiché, d'autres sont pour le fond - Il faut essayer.

Bons essais
0
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
12 oct. 2005 à 12:49
J'arrive a écrire dans la mémoire d'affichage avec mov... mais je n'arrive pas à écrire avec l'interruption 10h....
0
BLUEBIBUBBLE Messages postés 116 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 10 avril 2013 1
29 janv. 2006 à 03:10
Salut,
vérifie les paramètres a passer a l'interruption 10h, ça devrait fonctionner...

Interruption 10h / Function 0Eh
Ecriture de texte en mode télétype
Cette fonction traite l'écran comme un périférique ne supportant ni couleur, ni curseur.

ah = 0Eh
al = code ascii du caractère a écrire
bh = Page (mode texte uniquement) mettre 0
bl = Couleur (pas utilisé en mode texte, nombre de couleur dépendant du mode Function 00h)

Les caractères spéciaux:
BACKSPACE (ascii 8)
RETURN (ascii 13)+LINEFEED (ascii 10)
BEEP (ascii 7)
fonctionnent normalement....

La position du curseur est modifiée.
0
Rejoignez-nous