Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: MarcosARG en 11 Julio 2018, 03:57 am



Título: ¿como aprender ensamblador?
Publicado por: MarcosARG en 11 Julio 2018, 03:57 am
hola quisiera sabersi alguien me podria explicar como aprender ensamblador, porque hay distinto tipos, por lo que he leido y no hay mucha info o no se donde buscar, yo tengo un amd de 64 bits y no se si eso influye, no hay alguna guia para aprender los fundamentos en general, o no se aplican los fundamentos de otro lenguaje de alto nibel, y tambien si es mejor aprender ensamblador primero antes que C, porque estoy tomando un curso de fundamentos de programacion con PSeInt y luego de ese curso queria tomar o leer algun libro de C, pero me gustaria saver como funciona todo y por hay seria mejor aprender ensamblador pero hay mi pregunta tambien si los fundamentos (aclaro fundamentos de lenguajes de alto nibel)del curso que estoy tomando aplican en el lenguaje ensamblador y como es que se inicia en ese mundo y si me recomiendan algun libro de ensamblador gratis o pago graciasss!!
si alguien me pudiese responder seria genial, y disculpen si me he expresado mal o dije algo incorrecto graciassss!!!


Título: Re: ¿como aprender ensamblador?
Publicado por: BloodSharp en 11 Julio 2018, 08:57 am
Buenas compatriota, con respecto al lenguaje de ensamblador yo no recomendaría para nada a alguien que quién no sabe primero al menos un lenguaje de alto nivel como C...
Ensamblador se utiliza más que nada para ciertos casos específicos actualmente, como depurar y analizar programas u otros temas de ingeniería inversa, crear un programa o parte de lógica de software extremadamente reducidos en tamaño y firmware y/o drivers donde no haya alternativa para aplicar alguna operación específica que no pueda desarrollarse en lenguaje de alto nivel.

Mi recomendación para aprender a utilizar ensamblador de "computadoras génericas normales" (CISC IA32 / CISC AMD64) es aprendiendo ingeniería inversa analizando programas y depurando...


B#


Título: Re: ¿como aprender ensamblador?
Publicado por: Mr.Moonlight en 11 Julio 2018, 12:49 pm
Como bien dice el compa de arriba , es recomendable que empieces con un lenguaje de alto nivel , una vez hecho eso te resultará mucho más sencillo entender y aprender como dios manda un lenguaje asm , el lenguaje , pues tienes para elegir de sobra , son bastantes similares y una vez domines uno , entenderas sin lugar a dudas el 90% de la sintaxis de otros , ya que es bastante similar


Título: Re: ¿como aprender ensamblador?
Publicado por: Serapis en 11 Julio 2018, 15:00 pm
Pués yo disiento por completo, recomiendo justamente al revés . Si uno aprende algo aunque sea básico en ensamblador, luego a cualquier lenguaje de alto nivel, le sabrás sacar mucho más provecho, y te costará mucho menos de aprender...

...y jamás se me ocurriría recomendar a nadie aprender C, ni C++ (si C#), antes que eso recomendaría aprender un par de lenguajes alternativos, precisamente ensamblador y algún otro de alto nivel como Visual Basic, Phyton (y en menor medida Java).

La curva de aprendizaje de C, es tan alta, que vale más aprender ensamblador (que a fin de cuentas es más potente y la curva de aprendizaje es considerablemente menor), y para hacer cosas rápidas y no enfangarse cada vez, un segundo lenguaje de alto nivel, cuya curva de aprendizaje tampoco resulte elevada.

Ademas, si alguien sabe aunque solo sea lo básico en ensamblador, siempre le resultará mucho más asequible, aprender adecuadamente un lenguaje de alto nivel, que si es al revés.

Libros hay a patadas para aprender ensamblador...
Te dejo un par de imágenes de uno de mis estantes...
(https://i.imgur.com/ylqD67K.jpg)


(https://i.imgur.com/Bw4aauo.jpg)

Así que lo mejor para inciarse es empezar con 80x86, porque ahí reside gran parte de la base... luego es ya ir ampliando y actualizando, cuando tengas nociones más o menos sólidas aprender por ejemplo el ensamblador de otros procesadores (RISC por ejemplo), será mucho más llevadero...


Título: Re: ¿como aprender ensamblador?
Publicado por: Eternal Idol en 12 Julio 2018, 00:12 am
No se como saber ensamblador per se te puede ayudar a comprender conceptos de POO (lo que no quita que se puedan aplicar) pero ensamblador no escala, cualquier programa que no sea trivial se torna demasiado complejo de escribir y mantener, es una de las principales razones por las cuales es infimo el porcentaje de software escrito con el (otra: no es portable en lo absoluto).
Eso no quiere decir que no sea util manejarlo, la capacidad de depurar tu codigo a bajo nivel es invaluable y nunca esta de mas entender como funciona algo internamente (mi primer modulo de modo Kernel - lo que se suele denominar driver - lo escribi en ensamblador).

Estoy con la recomendacion casi unanime de empezar por un lenguaje de alto nivel (nunca Visual Basic ni lenguajes interpretados como Python) como C y a la larga no hay nada como dominar C++ que es el lenguaje mas versatil donde podes aprovechar la tradicional programacion estructurada, la programacion orientada a objetos y la programacion generica de acuerdo al problema a resolver. Si bien ya no es como antes que practicamente cualquier sistema complejo estaba implementado en C/C++ si lo sigue siendo si hablamos de bajo nivel (herramientas del sistema, Kernels, drivers, etc.).


El libro de Charte Ojeda esta bien y tiene un poco de Windows y Linux (las interrupciones de la BIOS o de MS-DOS no las vas a usar jamas en un software real aunque si podes hacer huevadas por hobby):

https://foro.elhacker.net/asm/libro_de_ensamblador-t255032.0.html

Si despues queres seguir con Windows:
http://win32assembly.programminghorizon.com/tutorials.html

De nuevo es bueno aprender al detalle como funciona pero tarde o temprano si te dedicas a esto profesionalmente vas a pasarte a un lenguaje de alto nivel.


Título: Re: ¿como aprender ensamblador?
Publicado por: srWhiteSkull en 18 Julio 2018, 16:59 pm
Pués yo disiento por completo, recomiendo justamente al revés . Si uno aprende algo aunque sea básico en ensamblador, luego a cualquier lenguaje de alto nivel, le sabrás sacar mucho más provecho, y te costará mucho menos de aprender...

...y jamás se me ocurriría recomendar a nadie aprender C, ni C++ (si C#), antes que eso recomendaría aprender un par de lenguajes alternativos, precisamente ensamblador y algún otro de alto nivel como Visual Basic, Phyton (y en menor medida Java).

La curva de aprendizaje de C, es tan alta, que vale más aprender ensamblador (que a fin de cuentas es más potente y la curva de aprendizaje es considerablemente menor), y para hacer cosas rápidas y no enfangarse cada vez, un segundo lenguaje de alto nivel, cuya curva de aprendizaje tampoco resulte elevada.

Ademas, si alguien sabe aunque solo sea lo básico en ensamblador, siempre le resultará mucho más asequible, aprender adecuadamente un lenguaje de alto nivel, que si es al revés.

Libros hay a patadas para aprender ensamblador...
Te dejo un par de imágenes de uno de mis estantes...
(https://i.imgur.com/ylqD67K.jpg)


(https://i.imgur.com/Bw4aauo.jpg)

Así que lo mejor para inciarse es empezar con 80x86, porque ahí reside gran parte de la base... luego es ya ir ampliando y actualizando, cuando tengas nociones más o menos sólidas aprender por ejemplo el ensamblador de otros procesadores (RISC por ejemplo), será mucho más llevadero...

Totalmente de acuerdo. ASM ese gran marginado  :xD


Título: Re: ¿como aprender ensamblador?
Publicado por: MarcosARG en 18 Agosto 2018, 20:03 pm
Gracias a todos por sus opiniones, hoy dia estoy tomando un curso de algoritmos digamos que enseña todo lo de la programacion estructurada en pseudocodigo y esta bueno como para arrancar, luego de eso tenia pensado ir hacia C pero haora que veo todo esto no se si ir hacia ASM si alguien me dice q seria mejor, ya que de todas maneras tarde o temprano quiero aprender C y asm el problema es que no se con cual arrancar igual estoy con este curso todavía si quieren saber cual es este  (https://programacionats.zenler.com/courses/fundamentos-de-programaci-n

pero cuando lo termine no se que hacer, se cual sea lo que me recomienden, si me dejan un  libro especifico seria bueno gracias igual!!!


Título: Re: ¿como aprender ensamblador?
Publicado por: Eternal Idol en 18 Agosto 2018, 22:36 pm
Relee el hilo, la respuesta ya te la dimos.