Afficher un nombre conteu dans un registre

RootASM Messages postés 17 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 4 avril 2006 - 28 janv. 2006 à 15:51
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 29 janv. 2006 à 16:02
bonjour,

J'aimerais afficher le nombre de caractere d'un chaine de caractere mais je ne sais pas comment m'y prendre. Sur le site il y a des messages mais je ne comprends pas comment faire.

Merci

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 janv. 2006 à 16:27
itoa PROC ; IN: EAX = INT32, ECX = *psz
push edi
test eax, eax
mov edi, ecx
jnz short noZero
lea eax, [ecx+1]
mov byte ptr[ecx], '0'
pop edi
mov byte ptr[eax], 0
ret 0
noZero:
jge short supEgZero
mov byte ptr [edi], '-'
neg eax
inc edi
supEgZero:
push esi
mov ecx, eax
mov esi, edi
supZero:
mov eax, -858993459
mul ecx
mov eax, edx
shr eax, 3 ; EAX = EAX / 10
mov edx, ecx ; EDX = old EAX
lea ecx, [eax+eax*4]
add ecx, ecx ; ECX = EAX * 10
sub edx, ecx ; EDX = EAX % 10
add dl, '0'
mov [edi], dl
mov ecx, eax
inc edi
test eax, eax
jnz short supZero
mov byte ptr[edi], 0
mov eax, edi
reverStr:
cmp esi, edi
jae i32toaExit
dec edi
mov cl, [esi]
mov dl, [edi]
mov [edi], cl
mov [esi], dl
inc esi
jmp short reverStr
i32toaExit:
pop esi
pop edi
ret 0
itoa ENDP

mets la valeur dans EAX et l'adresse d'un buffer dans ECX puis
call itoa

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
BLUEBIBUBBLE Messages postés 116 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 10 avril 2013 1
29 janv. 2006 à 01:06
Routine fournie avec MASM32:

C:\MASM32\M32LIB\DWTOA.ASM (Double Word to ASCII)
0
BLUEBIBUBBLE Messages postés 116 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 10 avril 2013 1
29 janv. 2006 à 15:39
Si c'est la longueur de la chaine (nombre de caractères), voir:

C:\MASM32\M32LIB\STRLEN.ASM
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 janv. 2006 à 16:02
Ma proc au dessus retourne dans EAX le pointeur sur le 0 final ajouté à la chaine, on a donc le strlen ensuite en 1 cycle.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
Rejoignez-nous