Lo aprendí de Kip Irvine's libro. Si ignoras las críticas (justas) de sus bibliotecas (irrelevantes), puedo recomendarlo como una buena introducción al idioma en sí, aunque para el realmente cosas interesantes tienes que buscar obsesivos en la red.
Creo que es útil entender lo que sucede en los niveles inferiores. A medida que investigas el ensamblador, aprenderás sobre el pipeline, predicción de bifurcación, alineación de caché, SIMD, reordenamiento de instrucciones, etc. El conocimiento de estos te ayudará a escribir un mejor código de alto nivel.
Además, la sabiduría convencional es no tratar de optimizar a mano el montaje la mayor parte del tiempo, sino dejar que el compilador se preocupe por ello. Cuando vea algunos ejemplos de las cosas retorcidas que generan los compiladores, comprenderá mejor por qué se sostiene la sabiduría convencional.
Ejemplo: los LFSR se ejecutan rápidamente con la instrucción rotar-con-cargar, para casos específicos como este, es tan fácil escribir la versión del ensamblador como descubrir si el compilador es lo suficientemente inteligente como para descubrirlo. Algunas veces you just know something que el compilador no.
También aumenta la comprensión de que los problemas de seguridad - write-o-ejecutar, los excesos de pila, etc.
Algunos concurrency cuestiones sólo se hacen evidentes cuando se da cuenta de lo que sucede en el nivel por la instrucción.
A veces puede ser útil para la depuración si no tiene el código fuente completo.
Existe la curiosidad. ¿Cómo se implementan las funciones virtuales de todos modos? ¿Has intentado alguna vez escribir programas DirectX o COM en ensamblador? ¿Cómo se devuelven las estructuras grandes? ¿Ofrece la función de llamada un espacio para ellas o viceversa?
Luego, hay idiomas especiales para el ensamblaje de hardware de gráficos, aunque los lenguajes de sombreado fueron de alto nivel hace algunos años, cualquier cosa que le permita pensar en un problema de otra manera es bueno.
Tenga en cuenta que el lenguaje ensamblador está vinculado a un procesador/controlador. – rmflow
¿Quieres decir que no es multiplataforma? – ApprenticeHacker
No. Por ejemplo: http://www.worldofspectrum.org/Z80instructions.html – rmflow