Duda - Assembler es un lenguaje de programación difícil?

Iniciado por n1sen, 28 Julio 2017, 03:24 AM

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

n1sen

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:

#include <stdio.h>

int main(){

printf("Hola mundo!\n");
return 0;
}

en Python asi:

Código (python) [Seleccionar]
print("Hola Python")

y finalmente en Assembler asi:
Código (asm) [Seleccionar]
; ---------------------------------------------
; Programa que imprime un string en la pantalla
; ---------------------------------------------
.model small              ; modelo de memoria

.stack                    ; segmento del stack

.data                     ; segmento de datos
Cadena1 DB 'Hola Mundo.$' ; string a imprimir (finalizado en $)

.code                     ; segmento del código

; ---------------------------------------------
; Inicio del programa
; ---------------------------------------------
programa:
; ----------------------------------------------------------------------------------------------------
; inicia el segmento de datos
; ----------------------------------------------------------------------------------------------------
MOV AX, @data          ; carga en AX la dirección del segmento de datos
MOV DS, AX             ; mueve la dirección al registro de segmento por medio de AX

; ----------------------------------------------------------------------------------------------------
; Imprime un string en pantalla
; ----------------------------------------------------------------------------------------------------
MOV DX, offset Cadena1 ; mueve a DX la dirección del string a imprimir
MOV AH, 9              ; AH = código para indicar al MS DOS que imprima en la pantalla, el string en DS:DX
INT 21h                ; llamada al MS DOS para ejecutar la función (en este caso especificada en AH)

; ----------------------------------------------------------------------------------------------------
; Finaliza el programa
; ----------------------------------------------------------------------------------------------------
INT 20h                ; llamada al MS DOS para finalizar el programa

end programa

(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
null

PalitroqueZ

CitarDuda - Assembler es un lenguaje de programación difícil?

no
"La Economía planificada lleva de un modo gradual pero seguro a la economía dirigida, a la economía autoritaria y al totalitarismo" Ludwig Erhard

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Yuki

#3
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.

engel lex

Cita de: Yuki en 28 Julio 2017, 07:31 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


CitarMe 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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Yuki

Cita de: engel lex en 28 Julio 2017, 07:39 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 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.

n1sen

Cita de: Yuki en 28 Julio 2017, 09:59 AM
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 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?
null

engel lex

CitarPero 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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.