cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 2007
-
30 déc. 2002 à 01:02
cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 2007
-
31 déc. 2002 à 01:44
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
cs_Nemesis
Messages postés22Date d'inscriptiondimanche 6 octobre 2002StatutMembreDernière intervention18 avril 2003 30 déc. 2002 à 14:35
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
cs_Kaid
Messages postés949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 30 déc. 2002 à 16:33
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 :