Déconcaténation de chaîne sous masm32v8

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 187 fois - Téléchargée 30 fois

Contenu du snippet

Il s'agit d'une simple opération de déconcaténantion de chaîne pour extraire un ensemble de caractères. Le repère est le caractère *. Lorque AL est à 0, nous sommes au terme de la recherche (première lettre). Pour exemple, j'ai utilisé une simple MessageBox dont OFFSET réservé au texte subit la susdite transformation. ++

Source / Exemple :


.386
.model flat, stdcall
option casemap :none     

  include    \masm32\include\windows.inc
  include    \masm32\include\user32.inc
  include    \masm32\include\kernel32.inc
  
  includelib \masm32\lib\user32.lib
  includelib \masm32\lib\kernel32.lib

.data
 MsgBoxCaption   db "ASM",0
 MsgBoxText      db "kikou*Déconcaténation de chaîne",0
 Stripped        BYTE MAX_PATH dup(?)

.code

start:
 push OFFSET Stripped
 push OFFSET MsgBoxText
 call Stripper
 
 push MB_OK 
 push OFFSET MsgBoxCaption
 push OFFSET Stripped
 push 0
 call MessageBox
 
 push 0
 call ExitProcess

Stripper:
 push esi
 push edi
 push ebx
 push eax
 mov esi,OFFSET MsgBoxText
 mov ebx,esi

@@:
 lodsb
 cmp al,0
 je EOF
 cmp al,'*'
 jne @b
 mov ebx,esi
 jmp @b

EOF:
 mov edi,OFFSET Stripped
 mov esi,ebx

@@:
 lodsb
 stosb
 cmp al,0
 jne @b
 pop eax
 pop ebx
 pop edi
 pop esi
 ret

End start

Conclusion :


Simple mais cela peut toujours servir à quelqu'un...

A voir également

Ajouter un commentaire Commentaire
Messages postés
16
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
2 juin 2005

Merci, il m'a été utile. Et aussi pour comprendre le killer de Illwill d'où est pris le code.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.