Busca la funcion que necesitas!

martes, 10 de mayo de 2011

FASM - Strlen, longitud de una cadena

Bueno he mejorado una función que cuenta los caracteres que hay en una cadena en FASM, dejé, creo yo, bien comentado el source, pero ya saben que cualquier duda, pregunta, crítica o problema la pueden comentar en la entrada.



Código:
include 'win32ax.inc'
.data
;variables
cadena          db "linkenOS",0
salida          db ?,0

.code
  inicio:
    ;Limpiamos registros
    XOR ESI,ESI
    XOR EDI,EDI
    XOR ECX,ECX
    ;Movemos la cadena a
    ;el registro ESI
    LEA ESI,[cadena]
    ;Llamamos a la funcion
    CALL strlen
    ;Mostramos con la API
    ;MessageBox de windows
    ;El resultado 'salida'
    invoke MessageBoxA,0,salida,"xD",0
    RET
.end inicio
;-FUNCION STRLEN-;
;Coder: Linkgl
proc strlen
   siguiente:
   ;Cortamos el primer caracter
   LODSB
   ;Comparamos si es el ultimo
   CMP AL,0
   ;Si ya no hay más saltamos a salir
   JE SALIR
   ;Incrementamos el contador
   INC ECX
   ;Entramos en bucle hasta que la
   ;comparacion retorne un flag verdadero
   JMP siguiente
   SALIR:
   ;Movemos el contador al registro AL
   ;Para trabajar con el
   MOV AL,CL
   ;Le sumamos 30(hex)
   ;para devolver valores numericos en ascii
   ADD AL,0x30
   ;Movemos el contenido de AL en la variable de salida
   MOV [salida],AL
   RET
endp   

No hay comentarios:

Publicar un comentario