Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: n1sen en 28 Julio 2017, 03:24 am



Título: Duda - Assembler es un lenguaje de programación difícil?
Publicado por: n1sen en 28 Julio 2017, 03:24 am
Hola otra vez, hoy me gustaría preguntarle a los desarrolladores que programan en assembler o los que lo están aprendiendo. La pregunta es si, Assembler es dificil? Me pregunto esto, ya que a veces, cuando miro ejemplos de assembler (por solo curiosidad) veo que el simple y típico "Hello World!" se me hace un lio, ya que yo programo en C,
y ahora estoy aprendiendo Python.
Digo esto, ya que como algunos sabemos, en C, un "Hello World!" seria asi:
Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  
  5. printf("Hola mundo!\n");
  6. return 0;
  7. }
  8.  
en Python asi:

Código
  1. print("Hola Python")

y finalmente en Assembler asi:
Código
  1. ; ---------------------------------------------
  2. ; Programa que imprime un string en la pantalla
  3. ; ---------------------------------------------
  4. .model small              ; modelo de memoria
  5.  
  6. .stack                    ; segmento del stack
  7.  
  8. .data                     ; segmento de datos
  9. Cadena1 DB 'Hola Mundo.$' ; string a imprimir (finalizado en $)
  10.  
  11. .code                     ; segmento del código
  12.  
  13. ; ---------------------------------------------
  14. ; Inicio del programa
  15. ; ---------------------------------------------
  16. programa:
  17. ; ----------------------------------------------------------------------------------------------------
  18. ; inicia el segmento de datos
  19. ; ----------------------------------------------------------------------------------------------------
  20. MOV AX, @data          ; carga en AX la dirección del segmento de datos
  21. MOV DS, AX             ; mueve la dirección al registro de segmento por medio de AX
  22.  
  23. ; ----------------------------------------------------------------------------------------------------
  24. ; Imprime un string en pantalla
  25. ; ----------------------------------------------------------------------------------------------------
  26. MOV DX, offset Cadena1 ; mueve a DX la dirección del string a imprimir
  27. MOV AH, 9              ; AH = código para indicar al MS DOS que imprima en la pantalla, el string en DS:DX
  28. INT 21h                ; llamada al MS DOS para ejecutar la función (en este caso especificada en AH)
  29.  
  30. ; ----------------------------------------------------------------------------------------------------
  31. ; Finaliza el programa
  32. ; ----------------------------------------------------------------------------------------------------
  33. INT 20h                ; llamada al MS DOS para finalizar el programa
  34.  
  35. end programa
  36.  
(código sacado de Wikipedia, por que como dije no se programar en assembler)  :silbar:

Aunque el primer lenguaje de programación que aprendí que es C, también es de bajo nivel, pero no se tiene que declarar el modelo de memoria (lo mas cercano a eso serian las funciones malloc, realloc y calloc, y no tiene nada que ver con lo dicho anteriormente, ya que es solo para usar la memoria dinámica). Y otra duda, en que se usa assembler actualmente?
Gracias.  :D


Título: Re: Duda - Assembler es un lenguaje de programación difícil?
Publicado por: PalitroqueZ en 28 Julio 2017, 03:27 am
Citar
Duda - Assembler es un lenguaje de programación difícil?

no


Título: Re: Duda - Assembler es un lenguaje de programación difícil?
Publicado por: engel lex en 28 Julio 2017, 03:32 am
Assembler  como lenguaje no es dificil, es sumamente basico... ojo que hacer algo funcional es harina de un costal muy diferente, eso si es complicado, porque al ser tan bajo nivel, requieres decenas de lineas de codigos para cualquier tonería... y ono lo recomiendo más que por aprendizaje, ingeniería inversa y resto, de resto sus utilidades en el mundo real son limitadas


Título: Re: Duda - Assembler es un lenguaje de programación difícil?
Publicado por: Yuki en 28 Julio 2017, 07:31 am
Como dicen nuestros compañeros, ensamblador no es difícil, puede ser si, un poco complicado de aprender, especialmente con los manuales mediocres que existen en internet.

Sin embargo, difiero con lo que dijo engel lex, hacer algo funcional en ensamblador es un poco más complicado, pero si sabes comentar bien no deberías tener problemas, yo personalmente prefiero programar en ensamblador, lo aprendí para realizar el proyecto que podes encontrar en mi firma.

Me gustaria señalarte un post que hice en otro foro que trata sobre unos tips para entender ensamblador fácil, pero como dije, es de otro foro y no creo que se permita.


Título: Re: Duda - Assembler es un lenguaje de programación difícil?
Publicado por: engel lex en 28 Julio 2017, 07:39 am
Sin embargo, difiero con lo que dijo engel lex, hacer algo funcional en ensamblador es un poco más complicado, pero si sabes comentar bien no deberías tener problemas, yo personalmente prefiero programar en ensamblador, lo aprendí para realizar el proyecto que podes encontrar en mi firma.

Yuki el problema es cuando tienes que hacer una aplicacion para el mundo real... es decir...

-intenta hacer un programa, que lea un pagina web y extraiga un dato especifico

-intenta hacer una aplicación que haga ping

-Has una aplicación que revise el espacio ocupado por los archivos de una carpeta que el usuario  indique

-Has una aplicacion que calcule el MD5 de un archivo indicado pro el usuario

terminan siendo esfuerzos titanicos para algo que usualmenet sería una función añadida en un programa


Citar
Me gustaria señalarte un post que hice en otro foro que trata sobre unos tips para entender ensamblador fácil, pero como dije, es de otro foro y no creo que se permita.

puedes compartirlo, se prohibe el spam, pero cuando los links tienen el fin de alimentar el tema y ayudar a solventar, no tienden a ser tomados como spam


Título: Re: Duda - Assembler es un lenguaje de programación difícil?
Publicado por: Yuki en 28 Julio 2017, 09:59 am
Yuki el problema es cuando tienes que hacer una aplicacion para el mundo real... es decir...

-intenta hacer un programa, que lea un pagina web y extraiga un dato especifico

-intenta hacer una aplicación que haga ping

-Has una aplicación que revise el espacio ocupado por los archivos de una carpeta que el usuario  indique

-Has una aplicacion que calcule el MD5 de un archivo indicado pro el usuario

Es verdad, no se puede esperar escribir con éxito un programa de alto nivel en ensamblador, aunque es posible, no es lo más fácil, rápido o correcto, esto ultimo por la dificultad de mantener el código.

Entonces, n1sen, te dejo este post (https://underc0de.org/foro/asm/t33114/) que te explica lo mas BASICO para entender ensamblador, también te recomiendo que ignores ese tipo de ejemplos de código ensamblador, ya que nadie (y te digo, NADIE) usa exclusivamente INT 21h para escribir programas. Si escribis para linux, busca sobre la api de linux, si es para Windows, las apis de Windows.


Título: Re: Duda - Assembler es un lenguaje de programación difícil?
Publicado por: n1sen en 28 Julio 2017, 16:26 pm
Es verdad, no se puede esperar escribir con éxito un programa de alto nivel en ensamblador, aunque es posible, no es lo más fácil, rápido o correcto, esto ultimo por la dificultad de mantener el código.

Entonces, n1sen, te dejo este post (https://underc0de.org/foro/asm/t33114/) que te explica lo mas BASICO para entender ensamblador, también te recomiendo que ignores ese tipo de ejemplos de código ensamblador, ya que nadie (y te digo, NADIE) usa exclusivamente INT 21h para escribir programas. Si escribis para linux, busca sobre la api de linux, si es para Windows, las apis de Windows.

Gracias, después aprenderé assembler, ya que ahora estoy aprendiendo Python.
Pero no me dificultara en el aprendizaje de assembler, que ahora este con un lenguaje de bajo nivel?


Título: Re: Duda - Assembler es un lenguaje de programación difícil?
Publicado por: engel lex en 28 Julio 2017, 16:49 pm
Citar
Pero no me dificultara en el aprendizaje de assembler, que ahora este con un lenguaje de bajo nivel?

no, estás con un lenguaje de alto nivel... el nivel es en referencia a "abajo" el cpu y "arriba" el usuario... entre más simple y amistoso el lenguaje usualmente mas alto el nivel, por ejemplo python... por lo contrario asm es el lenguaje de más bajo nivel posible en lenguaje humano (de ahí para abajo es lenguaje maquina)

y no, no te debería dificultar, hay poco que puedas confundir y ya habrías entendido lo basico por lo menos de algoritmia