Función que pasa un número entero a cadena:
proc NumToString,Numero
;Función creada por Drinky94. Agradecimientos a Jep.
locals
divisor dw ?
; buffer rb 20 Agregar esta variable en la sección data
; El numero 20 es la longitud que tendra la cadena
;si nuestro numero tiene 4 cifras tendremos que poner 4
; CadenaFinal rb 20 ; lo mismo que con la variable buffer.
endl
mov [divisor],10
xor eax,eax
xor ebx,ebx
mov eax,[Numero]
bucle:
xor edx,edx
div [divisor]
add dl,0x30
mov byte[buffer+ebx],dl
inc ebx
cmp eax,0
jne bucle
inc ebx
mov byte[buffer+ebx],0x0
mov eax,buffer
mov ecx,-1
buclelen:
inc ecx
cmp byte[eax+ecx],0
jne buclelen
xor ebx,ebx
dec ecx
reverse:
xor edx,edx
mov dl,byte[eax+ecx]
mov byte[CadenaFinal+ebx],dl
inc ebx
sub ecx,1
cmp ecx,-1
jne reverse
mov eax,CadenaFinal
ret
endp
Ejemplo de su uso:
include 'win32ax.inc'
.data
buffer rb 4
CadenaFinal rb 4
.code
start:
stdcall NumToString,1994
invoke MessageBoxA,0,eax,0,0
ret
proc NumToString,Numero
;Función creada por Drinky94. Agradecimientos a Jep.
locals
divisor dw ?
; buffer rb 20 Agregar esta variable en la sección data
; El numero 20 es la longitud que tendra la cadena
;si nuestro numero tiene 4 cifras tendremos que poner 4
; CadenaFinal rb 20 ; lo mismo que con la variable buffer.
endl
mov [divisor],10
xor eax,eax
xor ebx,ebx
mov eax,[Numero]
bucle:
xor edx,edx
div [divisor]
add dl,0x30
mov byte[buffer+ebx],dl
inc ebx
cmp eax,0
jne bucle
inc ebx
mov byte[buffer+ebx],0x0
mov eax,buffer
mov ecx,-1
buclelen:
inc ecx
cmp byte[eax+ecx],0
jne buclelen
xor ebx,ebx
dec ecx
reverse:
xor edx,edx
mov dl,byte[eax+ecx]
mov byte[CadenaFinal+ebx],dl
inc ebx
sub ecx,1
cmp ecx,-1
jne reverse
mov eax,CadenaFinal
ret
endp
.end start