Codigos de Yuri Grille

Iniciado por Yurix, 11 Junio 2009, 20:47 PM

0 Miembros y 3 Visitantes están viendo este tema.

Yurix


Invertir un Byte
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1315200#msg1315200

El flag P
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1289013#msg1289013

Un metodo de ordenamiento
http://foro.elhacker.net/asm/un_metodo_de_ordenamiento-t264478.0.html

Convertir a hexadecimal !!!
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1286565#msg1286565

De Ascii a binario (01011001)
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1269217#msg1269217

Explicación sencilla sobre AND XOR OR NOT
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1266079#msg1266079

Buscar una string dentro de otra (Soporta Búsqueda con asterisc*s) ;-)
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1257143#msg1257143

Invertir una string (codigo sencillo y sin usar la pila)(Mejorado)
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1255196#msg1255196

Par o Impar?
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1255115#msg1255115

De minúsculas a MAYÚSCULAS
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1254101#msg1254101


Comparando dos strings:

Esta es una pequeña forma de comparar strings.

lea esi,CadTexto01
lea ebx,CadTexto02
empi:
mov al, byte ptr ds:[esi]
mov ah, byte ptr ds:[ebx]
cmp     al, ah
jnz enda
inc     esi
inc     ebx
or      eax, eax
jnz     empi
inc     eax
enda:

Strings con 00 como final. ;D

SaLuDoS

y prueben el sistema operativo hecho en ASM
http://www.menuetos.net/
Esta very good.









http://kapetres.wordpress.com/ < Mi blog sobre ASM

Parece que alguien no quiere que la info sea liebre >

Alguien lo movio a ese lugar.

Binaria

 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.
"Yo pienso, facilito y mejoro el mundo" - De por ahi

Amerikano|Cls

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




Mi blog:
http://amerikanocls.blogspot.com

ny0x

Cita de: AmeRiK@nO en 12 Junio 2009, 06:58 AM
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   ;D

YST

otra opción:
Código (asm) [Seleccionar]

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


Yo le enseñe a Kayser a usar objetos en ASM

Binaria

Cita de: ny0x en 13 Junio 2009, 01:59 AM
Cita de: AmeRiK@nO en 12 Junio 2009, 06:58 AM
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   ;D

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.
"Yo pienso, facilito y mejoro el mundo" - De por ahi

Arkangel_0x7C5

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
Código (asm) [Seleccionar]

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

ny0x

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  :huh:

Arkangel_0x7C5

#8
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

YST

Cita de: Arcangel_0x7C5 en 14 Junio 2009, 22:15 PM
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
Con Pushad no :P talves unos pop mas pero ahorrarias unops push tambien :P


Yo le enseñe a Kayser a usar objetos en ASM