Aprendí en un 68HC11 en la universidad. Es muy fácil trabajar con ellos pero, honestamente, la mayoría de los microcontroladores de baja potencia serán similares (AVR, 8051, PIC, MSP430). Lo más importante que agregará complejidad a la programación de ASM para los microcontroladores es el número y el tipo de memoria soportada modos de direccionamiento . Al principio, debe evitar dispositivos más complicados, como los procesadores ARM de gama alta.
Probablemente recomendaría el MSP430 como un buen punto de partida. Tal vez escriba un programa en C y aprenda reemplazando varias funciones con ensamblaje en línea. Comience simple, x + y = z, etc.
Una vez que hayas reemplazado una función o algoritmo con ensamblaje, compara y contrasta cómo la codificaste y lo que generó el compilador de C. Esta es probablemente una de las mejores formas de aprender ensamblaje en mi opinión y al mismo tiempo aprender cómo funciona un compilador que es increíblemente valioso como programador integrado. Solo asegúrate de desactivar las optimizaciones en el compilador de C al principio o es probable que estés muy confundido por el código generado por el compilador. Gradualmente encienda las optimizaciones y observe lo que hace el compilador.
RISC vs CISC
RISC significa 'Computación de conjuntos de instrucciones reducidas' no se refiere a un conjunto de instrucciones en particular, sino a una estrategia de diseño que dice que la CPU tiene un conjunto de instrucciones mínimo. Pocas instrucciones que cada uno haga algo básico. No es una definición estrictamente técnica de lo que se necesita para ser RISC. Por otro lado, las arquitecturas CISC tienen muchas instrucciones, pero cada una 'hace más'.
Las ventajas propuestas de RISC son que el diseño de su CPU necesita menos transistores, lo que significa menos uso de energía (más grande para los microcontroladores), más económico de hacer y mayores velocidades de reloj que conducen a un mayor rendimiento. El menor consumo de energía y la fabricación más barata son generalmente ciertas, un mayor rendimiento realmente no ha alcanzado el objetivo como resultado de las mejoras de diseño en las arquitecturas CISC.
Hoy en día, casi todos los núcleos de CPU son diseños RISC o de "campo medio". Incluso con la arquitectura CISC más famosa (o infame), x86. Las CPU x86 modernas son internamente RISC como núcleos con un decodificador atornillado en la parte frontal que descompone las instrucciones x86 en múltiples instrucciones tipo RISC. Creo que Intel llama a estas 'micro-operaciones'.
En cuanto a qué (RISC vs CISC) es más fácil de aprender en ensamblaje, creo que es un lanzamiento. Hacer algo con un conjunto de instrucciones RISC generalmente requiere más líneas de ensamblaje que hacer lo mismo con un conjunto de instrucciones CISC. Por otro lado, los conjuntos de instrucciones CISC son más complicados de aprender debido a la mayor cantidad de instrucciones disponibles.
La mayor parte de la razón por la que CISC recibe un mal nombre es que x86 es por mucho el ejemplo más común y es un poco complicado trabajar con él. Creo que eso es principalmente el resultado de que el conjunto de instrucciones x86 es muy antiguo y se ha expandido media docena o más de veces manteniendo la compatibilidad con versiones anteriores. Incluso su 4.5GHz Core i7 puede ejecutarse en modo 286 (y lo hace en el arranque).
En cuanto a que ARM es una arquitectura RISC, lo consideraría moderadamente discutible. Es ciertamente una arquitectura de carga de la tienda. El conjunto de instrucciones básico es similar a RISC, pero en las revisiones recientes, el conjunto de instrucciones ha crecido bastante hasta el punto en el que personalmente lo considero un lugar intermedio entre RISC y CISC. El conjunto de instrucciones del pulgar es realmente el más "RISCO" de los conjuntos de instrucciones ARM.