Précédent   Forum du club des développeurs et IT Pro > Autres langages > Assembleur > Contribuez
Contribuez Contribuez à la FAQ Assembleur ou partagez vos sources
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 18/06/2008, 20h02   #1
Neitsa
Rédacteur
 
Avatar de Neitsa
 
Homme Sébastien
Chercheur sécurité informatique
Inscription : octobre 2003
Messages : 1 041
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : France

Informations professionnelles :
Activité : Chercheur sécurité informatique

Informations forums :
Inscription : octobre 2003
Messages : 1 041
Points : 1 949
Points : 1 949
Par défaut [32 bits] String Reverse

Fonction de renversement de chaine de caractère (Syntaxe MASM).

Si vous n'utilisez pas MASM, enlevez "uses edi esi" et mettez :

- en début de fonction :
PUSH EDI
PUSH ESI

- avant le ret :
POP ESI
POP EDI

Code asm :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
---------------------------------------------------------------------------
; fonction : StrRev
; Renverse une chaîne de caractères.
;
; [IN] pString : Pointeur vers la chaîne à renverser 
;
; [OUT] : EAX = pointeur sur la chaîne renversée.
; 
; Registres préservés (en sortie de fonction) : EBP, ESP, ESI, EDI.
; N.B : le DF (Direction flag) est mis à 0. 
; 
; Exemple : 
; .data
; Ma_chaine byte "Ceci est un test",0
;
; .code
; invoke StrRev, addr Ma_Chaine
; ---------------------------------------------------------------------------
StrRev PROC near uses esi edi pString:DWORD
 
	MOV EDI, pString
	MOV EDX, EDI
	MOV ESI, EDI
	XOR EAX, EAX
	OR ECX, -1
	CLD
	REPNE SCASB
	CMP ECX, -2
	JE @out
	DEC EDI
	DEC EDI
@reverseLoop:
	CMP ESI, EDI
	JNB @out
	MOV AH, BYTE PTR [ESI]
	MOV AL, BYTE PTR [EDI]
	MOV BYTE PTR [ESI],AL
	MOV BYTE PTR [EDI],AH
	INC ESI
	DEC EDI
	JMP @reverseLoop
@out:
	MOV EAX,EDX
 
	ret
 
StrRev endp
Neitsa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h02.


 
 
 
 
Partenaires

Hébergement Web