Pido Tutorial ASM x86 Windows

Iniciado por lubo, 4 Noviembre 2013, 02:44 AM

0 Miembros y 1 Visitante están viendo este tema.

lubo

Buenos días.

Después de buscar un buen rato, les tengo que pedir algún tutorial de ensamblador de 32 bits para Windows. Todos los que encuentro son de 16 bits o sólo son cosas superbásicas (como los registros, los AND, OR... o llamar a MessageBoxA).

Me he comprado un libro de ensamblador con ejercicios, pero no entiendo nada. Tiene ejercicios del tipo invertir cadenas, etc.

Quisiera algún tutorial con algunos ejercicios o que expliquen cómo solucionar algunas cosas.

Gracias de antemano:).

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

lubo

#2
Cita de: Eternal Idol en  4 Noviembre 2013, 02:46 AM
Iczelion:
http://win32assembly.programminghorizon.com/tutorials.html

Perdón, iba a editar ahora el tema...
Ese lo tengo en marcadores, pero es un tutorial para crear gráficos y tal...

Lo que quiero (si es posible) es que esté en castellano. Por ejemplo, no sé crear ifs (sin el .IF de MASM) o bucles, o por qué en los programas al entrar a un procedimiento hace push...

Por ejemplo, quiero que se le reste 1 a number hasta que sea 5, entonces llamaré al procedimiento "salir" (número inicialmente vale 10)

palabra db "este es el programa", 0

Código (asm) [Seleccionar]
programa:
 invoke MessageBoxA, NULL, palabra, palabra, MB_OK
 cmp number, 5 ; Si es 5, se activará el flag Z, pero si no es 5 no se cómo hacer que vuelva a ejecutar el cmp
 jz salir ; por qué en los programas pone "jz short salir" ???
  ; dec number

salir:
 invoke ExitProcess, 0


Pido este tipo de cosas jeje..

Eternal Idol

No, no es eso, tenes que leer mas, sin esfuerzo no vas a aprender nada.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

cpu2

Cita de: lubo en  4 Noviembre 2013, 03:19 AM
Perdón, iba a editar ahora el tema...
Ese lo tengo en marcadores, pero es un tutorial para crear gráficos y tal...

Lo que quiero (si es posible) es que esté en castellano. Por ejemplo, no sé crear ifs (sin el .IF de MASM) o bucles, o por qué en los programas al entrar a un procedimiento hace push...

La informacion buena esta toda en ingles, pero los bucles evitalos para hacer mas rapidos tus codigos, a lo de entrar a un procedimiento no se si te refieres a cuando llamas a una funcion. Push decrementa el stack y copia el valor que le dijiste en el mismo, si es para las funciones de windows lo que hace es pasar los parametros a esas.

Y sobre el codigo, pues usa un salto incondicional.

Un saludo.

x64core

Bueno EI lo dijó: sin esfuerzo no vas a aprender nada.
Comó se supone que uno sabrá como funciona todo si no haz leído como lo hace, vamos...
Se toma un libro de ensamblador basico: se memoriza el proposito de todas las instrucciones, practicar, sintaxis del ensamblador
y se empieza a leer ensamblador orientado a un S.O. El que EI dejo es bueno.

@cpu2: push no decrementa la stack... *Stack pointer*


Vaagish

CitarTodos los que encuentro son de 16 bits o sólo son cosas superbásicas

Mmm.. lo que pedís no es superexperto, me parece que queres aprender todo rápido, y el problema es que no se aprende así, es mas.. son tantas cosas que es imposible.. es cuestión de tiempo mi amigo..

Saludos!

PD: A, por cierto,, yo pido un auto y nadie me lo da.. pedir es facil, trabajar es dificil..  :xD

LikeVodka

Yo soy bastante ignorante en la materia, hace mucho que no toco asm y sinceramente no me acuerdo de muchas instrucciones, pero te recomiendo empezar por otro lenguaje menos complejo, para pensar un poco como programador, lo que quieres hacer es algo sencillo y si tuvieras unas nociones básicas sobre condicionales bucles, incrementos te seria mucho mas sencillo.

Sobre el código yo haría algo así: (Pero no se si funcionara)

programa:
  invoke MessageBoxA, NULL, palabra, palabra, MB_OK
  cmp number, 5 ; Si es 5, se activará el flag Z, pero si no es 5 no se cómo hacer que vuelva a ejecutar el cmp
  dec number
  ja programa ; por qué en los programas pone "jz short salir" ???
 
  invoke ExitProcess, 0



Sobre el tema de los flags, creo que tendrías que profundizar un poco mas si quieres seguir con esto, pues se puedo volver algo incomprensible hacer condicionales si no sabes que hace la instrucción cmp y que tipos de flags hay.

Por cierto si te ayuda en le tema de invertir cadenas puedes buscar el método burbuja por Internet.