neo1012
Messages postés15Date d'inscriptiondimanche 3 juin 2007StatutMembreDernière intervention20 février 2009
-
13 nov. 2007 à 13:39
neo1012
Messages postés15Date d'inscriptiondimanche 3 juin 2007StatutMembreDernière intervention20 février 2009
-
13 nov. 2007 à 15:34
Salut,
J'ai commencé l'ASM il n'y a pas longtemps, et hier j'ai fait mom premier programme:
jmp string
code:
pop ecx
mov bl,1
mov dl,23
;mov al,4
int 0x80
dec bl
mov al,1
int 0x80
string:
jmp code
db 'bonjour tout le monde!',0
Et quand je l'assemble avec NASM, le prgm se lance et ca me met :
Processuer a rencontre un instruction non autorisé
CS:0000 IP:0077 OP:f0 37 050 13 02
Qu'est ce que ca veut dire et ou est l'eereur
?javascript:Insert_Emoticon('/imgs2/smile_big.gif');
-> "lock aaa" n'est pas une instruction correcte ... mais il n'apparait pas dans ton code !!
Je pense donc que ton erreur ne vient pas de ce bout de code à proprement parler, mais de ce qu'il doit impacter (je parle entre autre du "pop ecx" et du fait que ton code boucle sans cesse "jmp code" et donc doit corrompre la pile).
_dune2_
Messages postés141Date d'inscriptionmercredi 19 juillet 2006StatutMembreDernière intervention20 avril 2011 13 nov. 2007 à 15:22
ben heuu comment dire .. c'est ton code complet là ?
Si c'est le cas, il n'y a aucune référence à ta string ??
Et pourquoi tu fais un jump à "string" pour refaire un jump là où tu étais ?
Pourquoi tu utilises des registres 8 bits comme arguments à int 0x80, il serait plus judicieux d'utiliser des registres 32bits pour initialiser à 0 les poids forts de ces registres ?
Pourquoi ce "pop ecx" ?
Et si tu nous disais ce qu'est censé faire ton code ?
Ou alors j'essai de deviner ton code et je dirais que ton erreur est tout simplement le "jmp code" qui devrais être plutot "call code" de manière à pousser l'adresse de ta string dans la pile et ainsi la récupérer dans le registre ecx avec un "pop" ... ça me parait être la réponse la plus censé à ton problème .... (tout en initialisant tes registres en 32 bits) du style :
jmp string
code:
pop ecx
mov ebx,1
mov edx,23 ;
mov eax,4
int 0x80
dec ebx
mov eax,1
int 0x80
string:
call code
db 'bonjour tout le monde!',0
J'ai tout suivi ? sinon soit plus claire dans ta requête en exprimant ton besoin de manière lisible et sans devinette ;)
neo1012
Messages postés15Date d'inscriptiondimanche 3 juin 2007StatutMembreDernière intervention20 février 2009 13 nov. 2007 à 15:34
En fait j'ai recopié ca dans "coding school", un mag de programmation. ils font apparement plein de fautes mais bon...
Ce truc est censé afficher "bonjour tout le monde"
[Ou alors j'essai de deviner ton code et je dirais que ton erreur est tout simplement le "jmp code" qui devrais être plutot "call code" de manière à pousser l'adresse de ta string dans la pile et ainsi la récupérer dans le registre ecx avec un "pop" ... ça me parait être la réponse la plus censé à ton problème ....] >> C'est ca