Ho imparato un 68HC11 al college. Sono molto semplici da utilizzare, ma onestamente la maggior parte dei microcontrollori a bassa potenza sarà simile (AVR, 8051, PIC, MSP430). La cosa più importante che aggiungerà complessità alla programmazione ASM per i microcontrollori è il numero e il tipo di modalità di indirizzamento della memoria supportate . All'inizio dovresti evitare dispositivi più complicati come processori ARM di fascia alta.
Probabilmente consiglierei MSP430 come un buon punto di partenza. Magari scrivi un programma in C e impara sostituendo varie funzioni con assembly inline. Inizia semplice, x + y = z, ecc.
Dopo aver sostituito una funzione o un algoritmo con assembly, confronta e confronta il modo in cui è stata codificata e ciò che ha generato il compilatore C. Questo è probabilmente uno dei modi migliori per apprendere l'assemblaggio secondo me e allo stesso tempo sapere come funziona un compilatore che è incredibilmente prezioso come programmatore incorporato. Assicurati di disattivare inizialmente le ottimizzazioni nel compilatore C o probabilmente sarai molto confuso dal codice generato dal compilatore. Attiva gradualmente le ottimizzazioni e nota cosa fa il compilatore.
RISC vs CISC
RISC significa "Reduced Instruction Set Computing", non si riferisce a un particolare set di istruzioni ma solo a una strategia di progettazione che afferma che la CPU ha un set di istruzioni minimo. Poche istruzioni che fanno ciascuna qualcosa di base. Non esiste una definizione rigorosamente tecnica di ciò che serve per essere RISC. D'altra parte le architetture CISC hanno molte istruzioni, ma ognuna "fa di più".
I vantaggi proposti di RISC sono che il design della tua CPU ha bisogno di meno transistor, il che significa un minor consumo di energia (grande per i microcontrollori), meno costoso da realizzare e frequenze di clock più elevate che portano a prestazioni migliori. Un consumo di energia inferiore e una produzione più economica sono generalmente veri, prestazioni più elevate non sono state all'altezza dell'obiettivo come risultato dei miglioramenti del design nelle architetture CISC.
Quasi tutti i core della CPU sono oggi RISC o progetti di "terra di mezzo". Anche con la più famosa (o famigerata) architettura CISC, x86. Le moderne CPU x86 sono core RISC internamente come un core con un decodificatore imbullonato nella parte frontale che suddivide le istruzioni x86 in più istruzioni RISC. Penso che Intel chiami queste "micro-operazioni".
Quanto a (RISC vs CISC) è più facile da imparare in assemblea, penso che sia un rompicapo. Fare qualcosa con un set di istruzioni RISC richiede generalmente più linee di assemblaggio che fare la stessa cosa con un set di istruzioni CISC. D'altra parte, i set di istruzioni CISC sono più complicati da imparare a causa del maggior numero di istruzioni disponibili.
La maggior parte del motivo per cui CISC ha un brutto nome è che x86 è di gran lunga l'esempio più comune ed è un po 'un casino con cui lavorare. Penso che questo sia principalmente il risultato del set di istruzioni x86 molto vecchio e che è stato ampliato una mezza dozzina o più volte mantenendo la compatibilità con le versioni precedenti. Anche il tuo core i7 da 4,5 Ghz può funzionare in modalità 286 (e lo fa all'avvio).
Per quanto riguarda ARM che è un'architettura RISC, la considero moderatamente discutibile. È certamente un'architettura load-store. Il set di istruzioni di base è simile a RISC, ma nelle recenti revisioni il set di istruzioni è cresciuto abbastanza al punto da considerarlo personalmente più una via di mezzo tra RISC e CISC. Il set di istruzioni del pollice è davvero il più "RISCish" dei set di istruzioni ARM.