J'ai appris sur un 68HC11 au collège. Ils sont très simples à utiliser, mais honnêtement, la plupart des microcontrôleurs de faible puissance seront similaires (AVR, 8051, PIC, MSP430). La plus grande chose qui ajoutera de la complexité à la programmation ASM pour les microcontrôleurs est le nombre et le type de modes d'adressage de mémoire pris en charge . Vous devez d'abord éviter les appareils plus compliqués, tels que les processeurs ARM haut de gamme.
Je recommanderais probablement le MSP430 comme bon point de départ. Peut-être écrire un programme en C et apprendre en remplaçant diverses fonctions par un assemblage en ligne. Commencez simplement, x + y = z, etc.
Après avoir remplacé une fonction ou un algorithme par l'assembly, comparez et contrastez la façon dont vous l'avez codée et ce que le compilateur C a généré. C'est probablement l'une des meilleures façons d'apprendre l'assemblage à mon avis et en même temps d'apprendre comment fonctionne un compilateur qui est incroyablement précieux en tant que programmeur intégré. Assurez-vous simplement de désactiver les optimisations dans le compilateur C au début ou vous serez probablement très confus par le code généré par le compilateur. Activez progressivement les optimisations et notez ce que fait le compilateur.
RISC vs CISC
RISC signifie `` calcul d'instruction réduite '', il ne fait pas référence à un ensemble d'instructions particulier, mais simplement à une stratégie de conception qui dit que le processeur a un jeu d'instructions minimal. Peu d'instructions qui font chacune quelque chose de basique. Il n'y a pas de définition strictement technique de ce qu'il faut pour «être RISC». D'un autre côté, les architectures CISC contiennent de nombreuses instructions, mais chacune en fait plus.
Les avantages escomptés de RISC sont que la conception de votre CPU nécessite moins de transistors, ce qui signifie moins d'énergie (grosse pour les microcontrôleurs), moins cher à fabriquer et des fréquences d'horloge plus élevées conduisant à de meilleures performances. Une consommation d'énergie plus faible et une fabrication moins chère sont généralement vraies, de meilleures performances n'ont pas vraiment atteint l'objectif en raison des améliorations de conception des architectures CISC.
Aujourd'hui, presque tous les cœurs de processeur sont des modèles RISC ou «intermédiaires». Même avec l'architecture CISC la plus célèbre (ou infâme), x86. Les processeurs x86 modernes sont des cœurs de type RISC en interne avec un décodeur boulonné à l'avant qui décompose les instructions x86 en plusieurs instructions de type RISC. Je pense qu'Intel appelle ces «micro-opérations».
Quant à savoir (RISC vs CISC) est plus facile à apprendre en assemblage, je pense que c'est un tirage au sort. Faire quelque chose avec un jeu d'instructions RISC nécessite généralement plus de lignes d'assemblage que faire la même chose avec un jeu d'instructions CISC. En revanche, les jeux d'instructions du CISC sont plus compliqués à apprendre en raison du plus grand nombre d'instructions disponibles.
La plupart des raisons pour lesquelles CISC obtient une mauvaise réputation est que x86 est de loin l'exemple le plus courant et est un peu compliqué à utiliser. Je pense que c'est principalement dû au fait que le jeu d'instructions x86 est très ancien et a été étendu une demi-douzaine de fois ou plus tout en maintenant la compatibilité descendante. Même votre Core i7 4.5Ghz peut fonctionner en mode 286 (et le fait au démarrage).
Quant à ARM étant une architecture RISC, je considérerais cela comme modérément discutable. C'est certainement une architecture de magasin de charge. Le jeu d'instructions de base est similaire à RISC, mais dans les révisions récentes, le jeu d'instructions a augmenté un peu au point où je le considérerais personnellement plus comme un compromis entre RISC et CISC. Le jeu d'instructions du pouce est vraiment le plus «risqué» des jeux d'instructions ARM.