Eu aprendi em um 68HC11 na faculdade. Eles são muito simples de trabalhar, mas honestamente a maioria dos microcontroladores de baixa potência será semelhante (AVR, 8051, PIC, MSP430). A maior coisa que adicionará complexidade à programação ASM para microcontroladores é o número e o tipo de modos de endereçamento de memória suportados . Você deve evitar dispositivos mais complicados a princípio, como processadores ARM de ponta.
Eu provavelmente recomendaria o MSP430 como um bom ponto de partida. Talvez escreva um programa em C e aprenda substituindo várias funções pela montagem em linha. Comece simples, x + y = z, etc.
Depois de substituir uma função ou algoritmo pelo assembly, compare e compare como você o codificou e o que o compilador C gerou. Essa é provavelmente uma das melhores maneiras de aprender montagem na minha opinião e, ao mesmo tempo, aprender sobre como funciona um compilador, o que é incrivelmente valioso como programador incorporado. Apenas certifique-se de desativar as otimizações no compilador C primeiro, ou você provavelmente ficará muito confuso com o código gerado pelo compilador. Ative gradualmente as otimizações e observe o que o compilador faz.
RISC vs CISC
RISC significa 'Computação com Conjunto de Instruções Reduzidas', não se refere a um conjunto de instruções em particular, mas apenas a uma estratégia de design que diz que a CPU possui um conjunto de instruções mínimo. Poucas instruções para que cada um faça algo básico. Não existe uma definição estritamente técnica do que é necessário 'para ser RISC'. Por outro lado, as arquiteturas CISC têm muitas instruções, mas cada uma 'faz mais'.
As vantagens propostas pelo RISC são que o design de sua CPU precisa de menos transistores, o que significa menos uso de energia (grande para microcontroladores), fabricação mais barata e taxas de clock mais altas, resultando em melhor desempenho. Geralmente, o menor uso de energia e a fabricação mais barata são verdadeiros; o desempenho ainda não alcançou a meta como resultado de melhorias no projeto das arquiteturas CISC.
Atualmente, quase todos os núcleos da CPU são de RISC ou "meio termo". Mesmo com a arquitetura CISC mais famosa (ou infame), x86. As CPUs x86 modernas são núcleos internamente semelhantes a RISC, com um decodificador aparafusado na extremidade frontal que divide as instruções x86 em várias instruções semelhantes a RISC. Eu acho que a Intel chama isso de 'micro-ops'.
Quanto a qual (RISC vs CISC) é mais fácil de aprender na montagem, acho que é uma brincadeira. Fazer algo com um conjunto de instruções RISC geralmente requer mais linhas de montagem do que fazer o mesmo com um conjunto de instruções CISC. Por outro lado, os conjuntos de instruções CISC são mais complicados de aprender devido ao maior número de instruções disponíveis.
A maior parte do motivo pelo qual o CISC tem um nome ruim é que o x86 é, de longe, o exemplo mais comum e é uma bagunça para se trabalhar. Eu acho que isso é principalmente resultado do conjunto de instruções x86 ser muito antigo e ter sido expandido meia dúzia ou mais de vezes, mantendo a compatibilidade com versões anteriores. Até o seu Core i7 de 4.5Ghz pode ser executado no modo 286 (e é inicializado).
Quanto ao ARM ser uma arquitetura RISC, consideraria isso moderadamente discutível. Certamente é uma arquitetura de armazenamento de carga. O conjunto de instruções base é semelhante ao RISC, mas nas revisões recentes o conjunto de instruções cresceu bastante até o ponto em que eu consideraria pessoalmente mais um meio termo entre o RISC e o CISC. O conjunto de instruções do polegar é realmente o mais 'RISCish' dos conjuntos de instruções do ARM.