Autor
|
Tema: Codigos de Yuri Grille (Leído 40,285 veces)
|
Yurix
Desconectado
Mensajes: 72
Paz para la guerra y guerra por la paz
|
|
|
« Última modificación: 20 Octubre 2009, 18:47 pm por Yurix »
|
En línea
|
|
|
|
Binaria
Desconectado
Mensajes: 15
aqui va un texto personal (?)
|
Ambas hileras tienen que ser del mismo tamaño cierto? sino podria estar en crisis el or eax,eax jeje.
Lo ideal hubiese sido usar instrucciones de hilera (movs(b) con repe) pero para eso habria que conocer el tamaño de las hileras y si son del mismo tamaño, sino obviamente no son iguales.
|
|
|
En línea
|
"Yo pienso, facilito y mejoro el mundo" - De por ahi
|
|
|
Amerikano|Cls
Desconectado
Mensajes: 789
[Beyond This Life]
|
pero entonces ten encuenta la longitud de las strings como te dice Binaria y con eso tendrias una condicion inicial de si son diferentes ya no fueron y te ahorra meterse en el proc salu2
|
|
|
En línea
|
|
|
|
ny0x
Desconectado
Mensajes: 336
|
pero entonces ten encuenta la longitud de las strings como te dice Binaria y con eso tendrias una condicion inicial de si son diferentes ya no fueron y te ahorra meterse en el proc salu2 si pero para sacar la longitud tambien se necesita algo de codigo, asi que de todas maneras no te salvas del proc
|
|
|
En línea
|
|
|
|
YST
Desconectado
Mensajes: 965
I'm you
|
otra opción: proc comparar ,SRC,DST ;Funcion que compara push edi ecx esi mov ecx,-1 mov edi,[SRC] mov al,0 repnz scasb mov eax,ecx not eax mov ecx,eax mov esi,[SRC] mov edi,[DST] repz cmpsb mov eax,1 jnz Next dec eax Next: pop esi ecx edi ret endp
|
|
|
En línea
|
Yo le enseñe a Kayser a usar objetos en ASM
|
|
|
Binaria
Desconectado
Mensajes: 15
aqui va un texto personal (?)
|
pero entonces ten encuenta la longitud de las strings como te dice Binaria y con eso tendrias una condicion inicial de si son diferentes ya no fueron y te ahorra meterse en el proc salu2 si pero para sacar la longitud tambien se necesita algo de codigo, asi que de todas maneras no te salvas del proc Si, por eso no me adelante mucho a decir que mejor manejara la longitud de la hileras xq depende del caso especifico, habran ocasiones donde sea posible saberlo desde el principio y manejarla como alguna valor en memoria, que es lo que se buscaria siempre, o que el primer termino de la hilera contenga la longitud de la misma. Para leer un mensaje recibido por un usuario hay que leer caracter por caracter, ahi se puede ir contando por ejemplo. Casi no hay excusas para no llevar el dato del tamaño de la hilera.
|
|
|
En línea
|
"Yo pienso, facilito y mejoro el mundo" - De por ahi
|
|
|
Arkangel_0x7C5
Desconectado
Mensajes: 361
|
Prueba este, no hace falta saber el tamaño de la cadena si lo haces asi. Ademas que le puse la opcion de Case Sensitive. Saludos StrCmp proc str1,str2,CaseSen;CaseSen = 1 desactiva el case Sensitibe e = 0 lo activa push ebx push edx push ecx mov ebx,str1 mov edx,str2 mov ecx,CaseSen xor eax,eax comparando: mov ah,byte ptr[ebx] mov al,byte ptr[edx] test ecx,ecx je CaseSensitibe and ah, 0DFh and al, 0DFh CaseSensitibe: cmp al,ah jne diferente inc ebx inc edx test al,al jz fin test ah,ah jz fin jmp comparando diferente: inc eax fin: pop ecx pop edx pop ebx ret StrCmp endp
|
|
|
En línea
|
|
|
|
ny0x
Desconectado
Mensajes: 336
|
muy bien arkangel me sabia qua haciendo un xor 0x20 al caracter se cambia a mayusculas pero si ya esta en mayusculas lo vuelve a minisculas, muy bueno el uso de and . PD. no seria mas facil usar esi y edi
|
|
|
En línea
|
|
|
|
Arkangel_0x7C5
Desconectado
Mensajes: 361
|
si usara esi y edi tendría que añadir 2 push y 2 pop para conservar los registros. De todas maneras, si quieres puedes quitar un test si le pones ax.
Saludos
PD:Con or 0x20 lo pasarías a minúsculas
|
|
« Última modificación: 14 Junio 2009, 22:19 pm por Arcangel_0x7C5 »
|
En línea
|
|
|
|
|
|
|