Affichage caractere par caractere d'une variable DT

Signaler
Messages postés
6
Date d'inscription
mardi 21 mai 2002
Statut
Membre
Dernière intervention
30 mars 2004
-
Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
-
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

Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
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 :)
Messages postés
6
Date d'inscription
mardi 21 mai 2002
Statut
Membre
Dernière intervention
30 mars 2004

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
>
Messages postés
59
Date d'inscription
dimanche 15 décembre 2002
Statut
Membre
Dernière intervention
2 juin 2004

> 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
Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
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 :)