Я дізнався на 68HC11 в коледжі. Працювати з ними дуже просто, але, чесно кажучи, більшість мікроконтролерів з низьким живленням будуть подібними (AVR, 8051, PIC, MSP430). Найбільше, що додасть складності програмуванню ASM для мікроконтролерів, - це кількість та тип підтримуваних режимів адреси пам'яті . Спочатку слід уникати складніших пристроїв, таких як процесори ARM вищого рівня.
Напевно, я б рекомендував MSP430 як хороший вихідний пункт. Можливо, напишіть програму на C та вивчіть, замінивши різні функції на вбудовану збірку. Почніть просто, x + y = z тощо.
Після того як ви замінили функцію чи алгоритм на складання, порівняйте та порівняйте те, як ви її кодували та що створив компілятор C. Напевно, це один з кращих способів навчитися монтажу на мою думку, і в той же час дізнатися про те, як працює компілятор, який неймовірно цінний як вбудований програміст. Просто переконайтеся, що спочатку вимкніть оптимізацію в компіляторі C, або, швидше за все, вас збентежить генерований код компілятора. Поступово ввімкніть оптимізацію та відзначте, що робить компілятор.
RISC проти CISC
RISC означає «Обчислені скорочені набори інструкцій», вона не стосується конкретного набору інструкцій, а лише стратегії проектування, яка говорить про те, що центральний процесор має мінімальний набір інструкцій. Кілька інструкцій, що кожен робить щось основне. Не є суворо технічним визначенням того, що потрібно "бути RISC". З іншого боку, архітектури CISC мають багато інструкцій, але кожна «робить більше».
Цільові переваги RISC полягають у тому, що дизайн вашого процесора потребує меншої кількості транзисторів, що означає менше енергоспоживання (великий для мікроконтролерів), дешевшого виготовлення та вищої тактової частоти, що призводить до більшої продуктивності. Зниження споживання електроенергії та дешевше виготовлення, як правило, правда, більш висока продуктивність насправді не досягла поставленої мети в результаті вдосконалення дизайну в архітектурах CISC.
Майже всі ядра процесора сьогодні є RISC або "середніми" конструкціями. Навіть з найвідомішою (або сумнозвісною) архітектурою CISC, x86. Сучасні процесори x86 внутрішньо є RISC, як ядра, з декодером, закріпленим на передньому кінці, який розбиває x86 інструкції на кілька RISC-подібних інструкцій. Я думаю, що Intel називає це «мікроопераціями».
Щодо чого (RISC vs CISC) простіше дізнатись у зборах, я думаю, що це підсумок. Для того, щоб робити щось із набором інструкцій RISC, як правило, потрібно більше ліній збірки, ніж те, що робити те ж саме з набором інструкцій CISC. З іншого боку, набори інструкцій CISC складніше вивчити через більшу кількість доступних інструкцій.
Більшість причин, по яких CISC отримує погану назву, полягає в тому, що x86 - це, безумовно, найпоширеніший приклад і трохи неприємно працювати. Я думаю, що це в основному результат того, що набір інструкцій x86 дуже старий і розширений у півдесятка чи більше разів, зберігаючи зворотну сумісність. Навіть ваш ядра 4,5 ГГц i7 може працювати в режимі 286 (і працює під час завантаження).
Що стосується ARM як архітектури RISC, я вважаю це помірно дискусійним. Це, безумовно, архітектура завантаження. Базовий набір інструкцій схожий на RISC, але в останніх редакціях набір інструкцій зріс трохи до того моменту, коли я особисто вважаю це більш середнім рівнем між RISC та CISC. Набір інструкцій великого пальця - це дійсно найбільше "RISCish" із наборів інструкцій ARM.