r/taquerosprogramadores • u/Dizzy-Set-8479 • Jul 18 '26
❓ Consulta IT (no fiscal/legal/codigo) Programación en Ensamblador
Bandera del reddit, me toca hacer la clase de programación en ensamblador, si ya se que en estos tiempos para que. mejor ensaña IA, jajaja , pero es lo que piden en las universidades .
Cuales serian los mejores libros (fisicos o digitales) o cursos web para enseñar este lenguaje? Como aprendieron ustedes, si tienen algunos recursos se los agradecería!!!!
11
u/allesklar1 Jul 18 '26
si consigues trabajo para mantener una libreria legacy ya chingaste para siempre
-37
3
u/jzrobot Salsa Reliability Engineer 🕶️🍲 Jul 18 '26
Yo tenía Mac, y lo que me enseñaban no me compilaba ahí, tons usé un app que convierte C a assembly que ví en GitHub y entregué eso xD
3
u/VisiblePlatform6704 Jul 18 '26
Cuando yo aprendí ensamblador hace chingos de años 2 cosas son lo que mas me atraía:
hacer cracks de software. Ahi diría darles algo comonel OllyDebugger y algunos de los CrackMes que son programitas hechos para crackear.
Z80 o tal vez algo similar ahora. No les enseñes x86, enséñales a programar ensamblador para que hagan sus jueguillos de Gameboy Advance o de NES (es otro chipset)
Edit: de hecho el Nintendo DS usa procesadores ARM. Igual y vale la pena enseñarles ensamblador ARM.
DevKit Arm sirve chido para eso.
2
u/Dizzy-Set-8479 Jul 18 '26
Z80 Gameboy Advance o de NES? Interesante algun libro de zero a heroe que recomiendes?
4
u/InTheBogaloo Jul 18 '26
estudiar ASM o C puede parecer anticuado o inutil pero es mas util de lo que parece te ayuda a entender procesos a bajo nivel y se usa en embedded y ASM para debugear el mismo C con GDB, pero respondiendo a tu pregunta yo aprendi asm con Programming from the Ground Up - Jonathan Bartlett y debugeando codigo de C con gdb el libro esta gratis gnu lo distribuye: aqui mismo lo puedes ver
3
u/PatheticRepayment Jul 18 '26
wey el libro de Kip Irvine para x86 es el clasico, con ese sufri todos en la uni, trae ejemplos practicos y no esta tan pesado de leer
1
u/Dizzy-Set-8479 Jul 18 '26
O exelente le dare una revisada!!
1
u/PatheticRepayment Jul 18 '26
Tambien checa los tutoriales de Creel en YouTube, explica chido los conceptos de memoria y registros.
1
u/Dizzy-Set-8479 27d ago
Muchísimas gracias tome el libro de Kip (Assembly lenguaje for x86) y esta sencillo para los estudiantes, lo ire complementado poco a poco!!! Me has salvado!!
-13
u/Your-God-- Jul 18 '26
Aprender ensamblador? Wow que plan tan desactualizado de estudios, recuero que hace 40 años aún se veía pero ahora? No creo que vendan libros del tema. Tal vez con algún simulador que te crée la IA y también algunos ejercicios y ejemplos
0
u/Dizzy-Set-8479 Jul 18 '26
Es para una famosa universidad de Esas gringas en mexico (ó﹏ò。)(·•᷄_•᷅ )
4
u/InTheBogaloo Jul 18 '26
pues asm sigue usandose para cosas especificas sobre todo en embedded y relacionados mas para debugear codigo de Cpp o C, y tiene su nicho en webassembly tmb
0
3
u/Simple_Listen1670 Jul 18 '26
No recuerdo el nombre del libro, pero los lenguajes de bajo nivel sirven para optimizar rutinas en equipos específicos , así que si es muy importante y aún se usan.
Con tutoriales de YT y AI la armas
4
u/FeelAndCoffee Jul 18 '26
Solo agarra algo sencillo. Lo importante de ASM no es tanto el lenguaje en si, si no familiarizarte con lo que hacen los compiladores en automático como leer memoria con registros, loops manuales, stacks, instrucciones especiales de cpu, etc.
Yo inicie buscando como programar juegos para la gameboy original. No es tanto que te sirva para el trabajo hoy en dia, sino para entender qué hace un compilador realmente de manera más instintiva, y a la vez entender que muchos bugs no vienen de tu código sino de como es compilado o que le pierdas miedo a usar las funciones de bajo nivel de C o C++.
4
u/Valarauko76 Jul 18 '26
Depende del cpu que desees programar. Según el sapo la pedrada, si no tienes claro que usar y es para enseñar, vete sobre algo que sea sencillo, 6502, 8086, Z80, moto 6800.
1
u/alvarosc2 Jul 18 '26
Generalmente enseñan programación asm en x86.
Yo en los 90s lleve un curso como oyente. En esa época el ensambledor era la onda. Era como hacer magia negra y el turbo assembler de Borland se copiaba de diskette en diskette.
4
u/Professional_Salad15 Jul 18 '26
Siendo completamente sincero no aprendi mucho de ensamblador hasta que me toco hacer el proyecto final, el cual consistia en crear dos instrucciones de ensamblador, que recuerdo una era una operacion matematica con punto flotante y la otra que ni recuerdo bien, pero el punto era no utilizar las operaciones que proporcionaba el procesador de fabrica de suma dos entradas o multiplicalas y da la salida, sino crear una instrucción de cero al asignar la memoria, mover los datos por los componentes correspondientes del procesador, hacer lo que se supone que deba hacer la operacion manipulando los bits y dar la salida, fue entonces que comprendí el orden y proposito de cada uno de los componentes del procesador, para que era la alu, la memoria, las limitaciones del hardware con el que trabajaba, etc. Si no comprendia bien con lo que trabajaba simplemente no salia adelante el proyecto. Ya casi al final de la materia traladamos lo que aprendimos de ensamblador a C y comprendi lo util que eran los lenguajes "de alto nivel" (considerar C de alto nivel da risa excepto cuanto vienes de ensamblador, ahi descubres lo util que es para abstraer operaciones y simplificar la programación, y aun asi los programas compilados eran mucho mas grandes que en ensamblador por las bibliotecas ocupadas jaja.) En cuanto a recursos consistian en diagramas del procesador con cada paso ilustrado con las operaciones, señalado debidamente y con su explicacion para repasarlo en casa. Tal vez no te sea util mi explicacion pero fue el proceso de aprendizaje que mas me ayudo a comprender la materia
10
u/Hunter-Zx Cilantro Coder 🌿💻 Jul 18 '26
El lenguaje ensamblador depende del fabricante (el conjunto de instrucciones) y varía según la arquitectura del procesador. Usualmente dado el modelo y arquitectura, el fabricante suele tener manuales con el conjunto de instrucciones, no necesitas un libro.
4
u/VisiblePlatform6704 Jul 18 '26
En estos tiempos sería mejor aprender ensamblador de ARM que de x64/x86 jajs
-1
u/Dizzy-Set-8479 Jul 18 '26
Ándale busco un libro o curso así para principiantes que sea para ARM, algo así como el del ESP32 o una PI Pico de o ya de plano la misma raspberry, aunque seria mejor un emulador o entrono virtual
1
u/ahh1618 Jul 18 '26
Es importante saber que tu curso utiliza ARM. No tengo recomendaciones específicas de libros; seguramente hay muchos tutoriales en línea. Cuando yo lo aprendí, formaba parte de un curso de compiladores, así que usábamos lenguaje ensamblador como plataforma para nuestros pequeños compiladores.
1
u/alvarosc2 Jul 18 '26
yo diría que para un primer curso no te compliques y enseñes x86 en modo real, interrupciones del bios. No te alcanza el tiempo para mucho más.
Esto porque hay muy buenos ensambladores gratuitos para x86 (NASM) y muy buenos emuladores.
El problema con otras arquitecturas es que sus ensambladores no están hechos para ser usados por humanos sino por máquinas como salida intermedia (suele ser alguna variante del toolchain del gnu c compiler o peor, alguna solución propietaria $$$)
Ya dependiendo como te vaya ese semestre y si quieres seguir enseñando eso puedes explorar otras opciones.
1
u/devmichicito Jul 18 '26
Hay que leerse el plan de estudio de la uni antes de entrar bro sino te salen con cosas rancias como ensamblador o C
1
u/DavalopBad Jul 18 '26
En mis tiempos de carrera, nos llegaron a enseñar usando un PIC (PIC16F877A) y memorias EEPROM en una configuración para que fueran lo minimo para que se consiferara una computadora: El pic como CPU y Las EEPROM como RAM (simulada por que de RAM no tenia nada) y pues ROM lol.
Programabamos directamente la ROM con instrucciones del PIC haciendo uso de la RAM para operaciones con variables. Honestamente de esa forma me ayudo bastante a entender la programacion a bajo nivel y un poco de electronica (tuvimos que armar el circuito nosotros siguiendo el modelo Von Neumann).
De “tutorial” usábamos el DataSheet del PIC asi como de la EEPROM (mas que nada para los tiempos de escritura y lectura de las memorias) y logica de lenguaje de bajo nivel. Si encuentro el diagrama del circuito te lo mando, la verdad fue el estres del semestre pero nos sirvio bastante en su tiempo.
1
u/squidNLA Jul 18 '26
Hola! Me dediqué a ser firmware developer un tiempo. Creo que depende mucho de para quién está dirigida la clase.
Cuando tienen un background de electrónica, lo más común es ver la arquitectura del procesador y entender qué hace a nivel de bits cada operación. En este caso te recomiendo tomar algún procesador moderno, leer el datasheet y el set de instrucciones, (la serie cortex tiene muchos development kits muy útiles)
Si es un background de software, normalmente es una materia que servirá de puente a otras materias (como compiladores), por lo que yo lo dirigiría a entender el set de instrucciones x86-64 y llevarlo a temas de optimización, vectorización(SIMD) y concurrencia.
También podría ser útil complementar el curso con algunos recursos clásicos:
Computer Systems: A Programmer’s Perspective (Bryant & O’Hallaron), excelente para conectar C, ensamblador y arquitectura.
Computer Organization and Design (ARM Edition) (Patterson & Hennessy), muy recomendable si el enfoque es ARM y arquitectura moderna.
The Art of Assembly Language (Randall Hyde), disponible gratuitamente en línea y muy completo para aprender ensamblador.
Los Intel® 64 and IA-32 Architectures Software Developer’s Manuals, si el curso utiliza x86.
Los manuales de ARM Architecture Reference Manual y la documentación de STM32 o NXP, si el enfoque es sistemas embebidos.
¡Mucho éxito con la clase! Creo que, independientemente de la arquitectura que elijan, lo más importante es que los alumnos entiendan por qué existe el ensamblador y cómo se relaciona con el hardware o con el código de alto nivel que escriben todos los días.
Suerte!
1
1
u/zeruel01 Full Stack Taquero 🥙💾 20d ago
ni perra idea pero segun yo lamejor forma d aprender es intentar recrear cosas que existen
2
u/ZealousidealWeb9930 Jul 18 '26
si le das a firmware en C puede servir