include 'win32ax.inc'
;*************************
;Longitud de una cadena *
;Coder: Linkgl *
;Lenguaje ASM(FASM) *
;Fecha 28/11/10 *
;Indetectables.net *
;Corp-51.net *
;*************************
.data
cadena db 'linkgl',0 ;Cadena a contar
titulo db 'La longitud de la cadena es de:',0 ;Esto no es importante
resultado db ?,0 ;aca almacenamos el contador
.code
inicio:
XOR ESI,ESI ;Seteamos los registros SI EAX Y ECX A 0
XOR ECX,ECX
XOR EAX,EAX
LEA ESI,[cadena] ;Movemos la palabra a esi
bucle:
LODSB ;Extraemos el ultimo caracter en AL
CMP AL,0 ;SI ES IGUAL A 0 SE ACABO LA PALABRA
JE salir
INC ECX ;INCREMENTAMOS EL CONTADOR
JMP bucle ;volvemos al bucle
salir:
MOV AL,CL ;movemos el contador a AL
ADD AL,0x30 ;Le sumamos 0x30 para que nos de el valor en ascii
MOV [resultado],AL ;lo copiamos a resultado
invoke MessageBoxA,0,resultado,titulo,MB_OK ;mostramos
invoke ExitProcess,0 ;nos vamos!
.end inicio
Nota importante:
Cuenta palabras hasta de 9 caracteres si sobrepasan los caracteres también las cuenta pero las cuenta en hexadecimal, no es dificil arreglar eso solo es ir sumando valores en hex para convertirlos a ascii.
me podrias ayudar con un programa en ensamblador que cuente cuantos numeros hay en una cadena?gracias.
ResponderEliminar