Déconcaténation de chaîne sous masm32v8

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

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.