Problem dans le segment .data (NASM)

Signaler
Messages postés
518
Date d'inscription
dimanche 2 décembre 2001
Statut
Membre
Dernière intervention
10 novembre 2007
-
Messages postés
518
Date d'inscription
dimanche 2 décembre 2001
Statut
Membre
Dernière intervention
10 novembre 2007
-
J'ai commencé aujourd'hui la programmation en Assembleur
Mon premier programme est classique, le "Hello world!".
J'utilise NASM sous Linux (Red Hat 7.3, kernel 2.2 si ca pe être utile)
Le problème est que j'ai créer 3 "variable msg1, msg2, msg3 dans le segment .data
et je souhaite n'afficher que la première à l'écran mais les trois s'affiche.
Merci de m'aider afin que je n'affiche qu'une seule variable.

segment .data
msg1 db 'Hello, world!','$',0,0xa
msg2 db 'Salut à tous!','$',0,0xa
msg3 db 'Ca va bien!','$',0,0xa
len equ $ - msg1

segment .dss

segment .text
global _start

_start:
mov eax,4
mov edx,[len]
mov dword ecx,[msg1]
int 0x80
mov eax,1
int 0x80

3 réponses

Messages postés
22
Date d'inscription
dimanche 6 octobre 2002
Statut
Membre
Dernière intervention
18 avril 2003

Je connais pas trop la programmation sous linux, mais ça doit pas être très différent de windows. La chaine doit se terminer par le signe $.
voilà ton programme (a toi de voir si il marche):

segment .data
msg1 db 'Hello, world!','$'
msg2 db 'Salut à tous!','$'
msg3 db 'Ca va bien!','$'
len equ $ - msg1

segment .dss

segment .text
global _start

_start:
mov eax,4
mov edx,[len]
mov dword ecx,[msg1]
int 0x80
mov eax,1
int 0x80
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Tu as peut-être un problème de taille (celle que tu passes à l'intéruption dans EDX). Ton "len" englobe les trois chaines, tu peux essayer pour la première chaine par exemple :

// ....
msg1 db 'Hello, world!','$',0,0xa
len1 equ $ - msg1
// ...
Messages postés
518
Date d'inscription
dimanche 2 décembre 2001
Statut
Membre
Dernière intervention
10 novembre 2007
3
Merci, j'ai résolu mon problème, c'était bien un problème de taille.