Probleme d'affichage de chaine db

Résolu
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 - 8 juin 2006 à 20:47
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 - 9 juin 2006 à 14:58
Bonjour j'ai un probleme d'affichage d'une chaine
Sur le code suivant
pre db "pti message d incruste"

message db "bonjour$"  ;ma chaine a afficher
mov ax,3
int 10h
mov dx,message
mov ah,9
int 21h
mov AX,0C07h ;lire un carac ( pause )
int 21h
mov ax,4C00h
int 21h

, message ne contient pas l'adressse de bonjour mais celle quelque octets avant ... d'ailleur je pre s'affiche..
pouvez vous me dire quesqui ne va pas dans mon code ...
merci d'avance..

VIVE LES NOOBS !!

5 réponses

cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
9 juin 2006 à 14:01
Je suppose que les octets commençaient à s'afficher 256 octets avant la chaine souhaitée.
Quant à l'instruction lea, je suppose que ton assembleur doit l'accepter.
Essaie avec:
lea dx,[message]   ;avec les crochets

sinon essaie de désassembler avec le désassembleur de fasm les octets suivants:
8d 16 10 01
tu devrais avoir quelque chose comme lea dx,[0x110]
Celà te permettra de connaitre la syntaxe à employer.

Avec Nasm l'expression entre crochets est une adresse (mais ce peut être autre chose) qui est placée dans le registre.
tu peux avoir comme expression quelque chose qui puisse s'exprimer comme:
registre de base + n*index + constante      avec n=0, 1, 2, 4 ou 8
exemple lea dx,[bp +2.bx+ 0xabcd]

Bonne prog
3
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
9 juin 2006 à 08:32
Bonjour rrk275,

Pour tenter de résoudre ton problème il faudrait que tu donnes quelques indications complémentaires comme:

- format de fichier créé (.com, .exe)
- assembleur et linker utilisé avec les directives de compilation
- déclarations des différentes sections

A priori la chaine à afficher est pointée par ds:dx
Est ce que ds est bien initialisé avec le début de la section .data ?

Autre chose (qui n'explique pas le pb cependant) - Il manque le $ dans la première chaine. Si l'affichage commence avant "bonjour$", il doit continuer jusqu'au premier $ rencontré.

Peux tu mettre l'intégralité de ton code (sauf si vraiment trop gros) en incluant toutes les déclarations.

A+
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
9 juin 2006 à 13:21
salut,




essai déjà "lea dx,message" au lieu de "mov dx,message" cela pourra regler le probleme suivant l'assembleur que tu utilise.

@++
0
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
9 juin 2006 à 13:27
Merci de m'avoir repondu alors le type de fichier est *.com , assembleur : FASM (flat assembleur de asmeditor)
quand a la chaine pre je lui ai volontairement pas donne de $ car sinon il ne m'affiche pas la deuxieme..
quand a lea j'ai deja essayé... mon compilo n'accepte pas..
en fait c'est un oubli du ORG 100h ... dsl de vous avoir mobiliser...
0

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

Posez votre question
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
9 juin 2006 à 14:58
en effet lea dx,[message] marche..

rrk275
0
Rejoignez-nous