Busca la funcion que necesitas!

lunes, 10 de enero de 2011

FASM - Comparar dos cadenas

Este código FASM lo hize estudiando obviamente ensamblador (lenguaje de bajo nivel), lo que hace es comparar dos cadenas y decirte si son iguales o son diferentes, esto se puede hacer haciendo 

repe cmps
Pero ya que FASM o almenos mi FASM no soportaba la función tuve que crear un código y se los comparto para que a algun novato como yo en ensamblador le sirva de algo!.

include 'win32ax.inc'
;***********************
; Programador: Linkgl  *
; indetectables.net    *
; funcion-linkgl.blogspot.com          *
; 29/11/10             *
; Comparar cadenas     *
;***********************
.data
  cadena1 db 'linkgl',0  ;cadenas a comparar
  cadena2 db 'linkgl',0

.code
  inicio:
  MOV EAX,0 ;acomodamos nuestros registros a 0
  MOV EDX,0
  MOV ECX,0
  MOV ESI,0

  LEA ESI,[cadena1] ;obtenemos la cadena 1
  bucle:
  LODSB  ;la cortamos y la almacenamos toda en EDX
  CMP AL,0
  JE continuar
  ADD EDX,EAX
  INC ECX
  JMP bucle

  continuar:
  PUSH EDX    ;metemos edx a la pila
  MOV EDX,0
  MOV ESI,0
  LEA ESI,[cadena2]

  bucle2:   ;hacemos lo mismo con la otra cadena
  LODSB
  CMP AL,0
  JE comparar
  ADD EDX,EAX
  INC ECX
  JMP bucle2

  comparar:
  POP EBX     ;sacamos el valor de EDX de la pila a EBX
  cmp EDX,EBX   ;Comparamos
  je iguales  ;si son iguales  pues saltamos a iguales
  invoke MessageBoxA,0,"No son iguales","by linkgl",0
  invoke ExitProcess,0

  iguales:
  invoke MessageBoxA,0,"Son iguales","by linkgl",0
  invoke ExitProcess,0


  .end inicio

No hay comentarios:

Publicar un comentario