Affichage caractere par caractere d'une variable DT

Eclipz Messages postés 6 Date d'inscription mardi 21 mai 2002 Statut Membre Dernière intervention 30 mars 2004 - 19 mai 2003 à 15:26
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 - 22 mai 2003 à 20:39
Bonjour

Voila, un souci en MASM, j'ai une variable nommée Resultat de type DT et je voudrais afficher, caractere par caractere, son résultat... le problème est que je ne vois pas comment faire... je sais qu'il y a une interruption (je sais plus laquelle) qui affiche le contenu de dl (1 caractere) mais je n'arrive pas à mettre caractere par caractere le contenu de Resultat dans dl.
Comment feriez-vous pour afficher caractere par caractere le contenu de Resultat ? A noter que ce qui est dans Resultat est au format DCB Compacté...

Par avance merci pour vos réponses

Vincent

4 réponses

CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
20 mai 2003 à 01:46
Aff db 21 dup(0);
Resultat dt 0
Flag db 1

...

mov si, offset Resultat + 9
mov di, offset Aff
mov cx, 10

boucle:
mov ah, [si]
mov al, ah
shl al, 4
and ah, 0Fh
or al, al
jnz suite1
test byte ptr [Flag], 1
jnz suite3
jmp suite2
suite1:
mov byte ptr [Flag], 0
suite2:
add al, '0'
stosb
suite3:
shl ax, 8
or al, al
jnz suite4
test byte ptr [Flag], 1
jnz suite6
jmp suite5
suite4:
mov byte ptr [Flag], 0
suite5:
add al, '0'
stosb
suite6:
dec si
loop boucle
mov byte ptr [di], '$'
mov ah, 9
mov dx, offset Aff
int 21h

Mais bien sûr il faut que DS et ES pointent sur le segment des données même si c'est CS.

Core Breaker :)
0
Eclipz Messages postés 6 Date d'inscription mardi 21 mai 2002 Statut Membre Dernière intervention 30 mars 2004
22 mai 2003 à 10:33
salut ! merci beaucoup pour ta réponse mais qu'est-ce que tu veux dire avec ce qui suit ?

> Mais bien sûr il faut que DS et ES pointent sur le segment des données même si c'est CS.
>
> Core Breaker :)
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjour
> >
> > Voila, un souci en MASM, j'ai une variable nommée Resultat de type DT et je voudrais afficher, caractere par caractere, son résultat... le problème est que je ne vois pas comment faire... je sais qu'il y a une interruption (je sais plus laquelle) qui affiche le contenu de dl (1 caractere) mais je n'arrive pas à mettre caractere par caractere le contenu de Resultat dans dl.
> > Comment feriez-vous pour afficher caractere par caractere le contenu de Resultat ? A noter que ce qui est dans Resultat est au format DCB Compacté...
> >
> > Par avance merci pour vos réponses
> >
> > Vincent
>
0
TangiX Messages postés 59 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 2 juin 2004
22 mai 2003 à 11:03
> salut ! merci beaucoup pour ta réponse mais qu'est-ce que tu veux dire avec ce qui suit ?
>
>
> > Mais bien sûr il faut que DS et ES pointent sur le segment des données même si c'est CS.
> >
> > Core Breaker :)
> >

Si tu a mis tes variable dans le meme segment que le code alors DS = CS
De plus Core Breaker à utilisé l'instruction stosb dans son code qui écrit à ES:DI donc il faut que ES=DS

TangiX
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
22 mai 2003 à 20:39
Plus simplement que je n'ai pas initialiser les registres de segments donc que tu dois t'assurer qu'il sont correctement initialisés. Je ne les ai pas initialisés car cela dépend du modèle mémoire:

tiny: ds==es==cs
small: ds==es et cs!=ds
...

Core Breaker :)
0
Rejoignez-nous