elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Asesoría para aprendizaje autónomo de ASM.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Asesoría para aprendizaje autónomo de ASM.  (Leído 4,168 veces)
theowl

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Asesoría para aprendizaje autónomo de ASM.
« en: 5 Agosto 2020, 16:07 pm »

Cordial saludos, chicos.

Acudo a ustedes porque estoy bastante perdido para abordar mi aprendizaje sobre asm.

Tengo varias dudas.

Mi primera duda sería, la programación de ensamblador de un procesador de 8 bits es diferente a la programación de uno de 16 bits, y este a su vez es diferente de uno de 32 o 64 bits? Es decir, si aprendo a programar ensamblador para procesadores de 32 bits no podré programar para uno de 64 bits? Cuales son las diferencias sustanciales, las interrupciones?

Mi otra duda es, he pensando en aprender de esta forma, descargar un emulador de un procesador de 8 bits y programar una aplicación para entender el procesador y demás.
Luego hacer lo propio con uno de 16 bits, de 32 y 64 bits. Todo esto con el fin de entender los procesadores. Les parece buena idea? o como aprendieron ustedes?

Que opinan de utilizar Masm32 para empezar a aprender? Para iniciar es recomendable empezar con emu8086? o mejor con DosBox?

La ultima pregunta es la siguiente, si yo aprendo a programar en ensamblador para un procesador de 16 bits y quiero posteriormente desensamblar un programa que funciona en windows para ver su funcionamiento, es posible que no entienda el código porque aprendí fue ensamblador para procesadores de 16 bits?

Muchas Gracias por la ayuda que me puedan brindar.





En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Asesoría para aprendizaje autónomo de ASM.
« Respuesta #1 en: 5 Agosto 2020, 16:42 pm »

Jamas programe en 8 bits, el procesador 8086 en el que se basan los PCs es de 1978 y ya era de 16 bits. https://en.wikipedia.org/wiki/X86

Te recomiendo arrancar con el tipico libro de Charte Ojeda sobre ensamblador, es principalmente sobre MS-DOS y 16 bits (DosBox ahi va bien) asi que no hace falta memorizar que hace cada interrupcion. Tiene un capitulo de Windows y otro de Linux (32 bits ambitos). En los mensajes fijados en el sub-foro hay muchos recursos que te vendran bien, algunos caidos (usa archive.org).

masm32 esta muy bien para Windows pero ademas de ensamblador, y principalmente, para entender un programa de Windows vas a necesitar conocer su API.




Esto que te respondo se basa en PCs, cada familia de procesadores es diferente, un ARM de 32 o 64 bits no es lo mismo que una PC de 32 o 64 bits ... https://en.wikipedia.org/wiki/ARM_architecture


« Última modificación: 5 Agosto 2020, 16:46 pm por Eternal Idol » En línea

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
Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Asesoría para aprendizaje autónomo de ASM.
« Respuesta #2 en: 6 Agosto 2020, 17:55 pm »

 
Mi primera duda sería, la programación de ensamblador de un procesador de 8 bits es diferente a la programación de uno de 16 bits, y este a su vez es diferente de uno de 32 o 64 bits?
Sí. Son diferentes. Si fueran iguales, para qué cambiar nomenclaturas...

Es decir, si aprendo a programar ensamblador para procesadores de 32 bits no podré programar para uno de 64 bits?
Correcto. Hablar de 8bits, 32bits... es una abreviatura para referirse a la arquitectura de procesadores.
Un procesador de 8 bits, podría asimilarse a un centro de salud de tu barrio (por ejemplo), y uno de 32 bits a un hospital de una ciudad... Como es fácil de entender el centro de salud tendrá ciertas limitaciones de las que el hospital dispone...

Cuales son las diferencias sustanciales, las interrupciones?
De entrada el tamaño de los buses, no solo el de direcciones, tambien el de datos y el de control... por lo que incluso una instrucción idéntica en 2 arquitecturas diferentes tendrán una codificación distinta.
Además, crece el número de capacidades disponibles, lo que implica la aparición de nuevas instrucciones (inexistentes en versiones previas), a menudo ligeros cambios en las existentes o ampliaciones, nuevos registros, etc...

Mi otra duda es, he pensando en aprender de esta forma, descargar un emulador de un procesador de 8 bits y programar una aplicación para entender el procesador y demás.
Si estuviéramos al comienzo de los 90, te diría que no solo no es mala idea empezar con un emulador de 8 bits, para empezar y familiarizarse, sino que sería incluso imprescindible... pero a fecha de hoy te diría que sea un vistazo no exhaustivo...si familiarizarte para saber qué tiene y que no un procesador de 8 bits. Una vez conozcas con cierto detalle su arquitectura te diría que avances a los 16 bits... y no pierdas tiempo en programar nada... solo limítate a diferenciar lo que tiene y que no tiene cada arquitectura, para comprender los cambios en la siguiente y como ha evolucionado, eso ofrece una pespectiva muy útil.

Luego hacer lo propio con uno de 16 bits, de 32 y 64 bits. Todo esto con el fin de entender los procesadores. Les parece buena idea? o como aprendieron ustedes?
Para iniciar es recomendable empezar con emu8086? o mejor con DosBox?
Yo te diría que no pierdas tiempo en programar en 8 ni 16 bits ni en sus ensambladores, aprende solo sobre su arquitectura, y programa solo para 32 y 64 bits...

Que opinan de utilizar Masm32 para empezar a aprender?
Sí, claro... Masm32 es una buena opción.

Aquí una pagina a consultar:
-https://www.plantation-productions.com/Webster/HighLevelAsm/

La ultima pregunta es la siguiente, si yo aprendo a programar en ensamblador para un procesador de 16 bits y quiero posteriormente desensamblar un programa que funciona en windows para ver su funcionamiento, es posible que no entienda el código porque aprendí fue ensamblador para procesadores de 16 bits?
Leer código desensamblado, es harina de otro costal.
...perder el tiempo para entender como funciona un programa, mediante código desensamblado, es lo mismo que ir a una escombrera que sabe que contiene todos los escombros de una catedral, para entender como era o estaba construída.

En general es una tarea titánica pretender 'entender el funcionamiento de un programa' en base a su desensamblado. En la práctica (individual) suele limitarse a tareas específicas. En general la mayor parte del código de un programa no tiene ningún misterio ni es preciso perder tiempo en él, son 'cosas sabidas' (por cualquier programador medio), por ejemplo el funcionamiento de un menú, o la apertura y control de ventanas. Basta centrarse en los detalles que uno (digamos que) no sabe como funcionan EXACTAMENTE, aunque esto tiene más un carácter de 'hacking' que de programar en ensamblador. Por lo que antes de meterte en faena, te diría que te contestes a tí mismo cuales son tus pretensiones:
- Aprender a programar en ensamblador.
- Aprender técnicas de hacking (para lo que es necesario cierto conocimiento de ensamblador, pero no de forma exhaustiva).
En base a tu respuesta, el camino a seguir es algo distinto.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Busco consejos o asesoria para comenzar a programar « 1 2 »
Programación General
bosterk 19 11,503 Último mensaje 22 Enero 2011, 23:43 pm
por bosterk
ASESORÍA PARA PRINCIPIANTE
Electrónica
Inter-ard 8 6,629 Último mensaje 10 Agosto 2013, 17:26 pm
por Inter-ard
¿UML para aprendizaje?
Programación C/C++
Sputnik_ 2 2,595 Último mensaje 11 Diciembre 2013, 05:10 am
por dato000
Están creando mapas HD para que el GPS de tu coche autónomo no te mate
Noticias
wolfbcn 0 2,168 Último mensaje 6 Septiembre 2019, 01:40 am
por wolfbcn
Libros de aprendizaje para linux
Hacking
prosebas 2 3,556 Último mensaje 31 Marzo 2020, 17:03 pm
por yomismo2512
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines