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...
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.