Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: RAFA_LAMB en 25 Noviembre 2011, 03:24 am



Título: Ayuda con comparacion con un "ENTER"
Publicado por: RAFA_LAMB en 25 Noviembre 2011, 03:24 am
Lo que sucede es que deseo comparar una cadena ingresada. Esta cadena sera "ELSE" pero si el usuario ingresa "ELSE*" o algun otro caracter distinto hasta el final, me debe de decir que no es una palabra correcta. Para saber esto supongo que tengo que comparar el ultimo caracter con un "enter" pero no se como hacer eso. Mi codigo es el siguiente:

       CLD
    MOV AL,
   MOV CX,1
   LEA DI,RESER1+4
   REPNE SCASB
   JNE X1
   JE EEE

En MOV AL, "Aqui debe de ir el valor de enter
RESER1+4 es donde guardo "ELSE"

Espero puedan ayudarme


Título: Re: Ayuda con comparacion con un "ENTER"
Publicado por: .:UND3R:. en 25 Noviembre 2011, 05:15 am
Sería más factible tomar como primera instancia el número de caracteres y compararlo con 4 (número de caracteres de la palabra "ELSE") si no se cumple automáticamente se dirige a la función de palabra incorrecta, en caso contrario compara cada letra con cada letra de ELSE.

Saludos


Título: Re: Ayuda con comparacion con un "ENTER"
Publicado por: fary en 25 Noviembre 2011, 15:29 pm
Para comparar dos cadenas tienes que ir comparandolas caracter a caracter, ejemplo:

Código
  1. proc Comparar,cadena1,cadena2
  2.        ;Si son iguales  EAX = 1
  3.        ;Si son diferentes EAX = 0
  4.        mov esi,[cadena1]
  5.        mov ecx,[cadena2]
  6.        dec ecx
  7.        bucle:
  8.            inc ecx
  9.            lodsb
  10.            cmp byte[ecx],al
  11.            jne diferentes
  12.            cmp al,0
  13.            je comprovar
  14.            jmp bucle
  15.        comprovar:
  16.            cmp byte[ecx],0
  17.            je iguales
  18.            jne diferentes
  19.        diferentes:
  20.            mov eax,0
  21.            ret
  22.        iguales:
  23.            mov eax,1
  24.            ret
  25.     endp

saludos.