Probleme d'affichage de chaine db

Résolu
Signaler
Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
-
Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
-
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

Messages postés
202
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
29 septembre 2008
3
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
Messages postés
202
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
29 septembre 2008
3
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+
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,




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

@++
Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2
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...
Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2
en effet lea dx,[message] marche..

rrk275