Saludos.
Hace poco me llamo la atención el assembler, hace tiempo que vengo programando pero lenguajes de alto nivel y orientados a objetos.
Cuando comencé a programar en este lenguaje, chocaron muchos conceptos que tenía. Pero aún así comprendí la mayoría.
Aprendí a programar con MASM32 lo que me llevo a utilizar múltiples macros y otras emulaciones que tiene de alto nivel como los .if .else o declarar los procedimientos y utilizar los parámetros directamente.
Ejemplo:
FuncNada proc param1:DWORD, param2:DWORD
mov eax,param2
add eax,param1
ret
FuncNada endp
Me pareció excelente en el momento, pero luego de tomar un poco más de experiencia me di cuenta que no sabía que código se estaba generando y que así era una pérdida de tiempo aprender ese lenguaje. Me propuse estudiarlo a fondo a bajo nivel de verdad, entendí muchos conceptos, pero lo que aun no he terminado de entender es el manejo de la pila, si ustedes pudieran resolver mis dudas me ayudarían.
Y también sobre el direccionamiento indirecto, se como se direcciona pero siempre que trato de hacerlo el programa crashea. Necesito un ejemplo práctico porque siempre ponen:
mov eax,byte ptr [ebp+ebx*2+4] ;ejemplo si entiendo lo de byte ptr
pero si luego trato de acceder a esa posición de memoria no puedo, y yo creí que a partir del 386 se podían direccionar 4gb de memoria.
Y sobre la pila me gustaría ver como se obtienen las variables, como se reserva espacio y como se manejan estructuras(sin identificador) osea no:
lea eax,structura
push eax
sino acceder a posiciones de memoria en donde se encuentre cada elemento.
Cualquier ayuda se los agradecería de antemano.
Y Sobretodo agradecería con ejemplos prácticos.
Gracias.
Disculpen soy nuevo y publique el tema donde no era, si alguien me ayudara a moverlo de sitio se los agradecería.