Je vous suggère fortement de reconsidérer votre objectif et voici pourquoi:
J'ai d'abord appris le langage d'assemblage 6502 sur le micro-ordinateur BBC (modèle B, 32K). Il avait une implémentation BASIC impressionnante qui comprenait un assembleur de macros. Nous les avions à l'école, alors j'ai écrit toutes sortes de programmes espiègles qui feraient des choses comme la manipulation directe du tampon d'écran pour faire un Lemming marcher sur chaque écran, autour de la pièce (ils étaient en réseau) si les machines n'avaient pas été utilisées pendant 10 minutes . Cela a provoqué des crises de rires chez mes amis de la 7e année.
Quand j'ai eu un Commodore 64 à la maison, j'ai appris qu'il avait un processeur 6510 qui exécutait également le langage d'assemblage 6502 mais avec quelques extras intéressants. J'ai dû acheter un assembleur (venu sur une cartouche ) et appeler les programmes via BASIC. Avec de grandes visions d'écrire un jeu à succès, j'ai finalement réussi à créer plusieurs démos que le matériel d'affichage vidéo twiddled enregistre sur interruption pour faire des effets de barre de couleur intéressants qui s'animaient à la musique à puce funky. Impressionnant, mais pas très utile.
J'ai ensuite obtenu un Acorn Archimedes A310 qui avait un processeur ARM2, j'ai donc utilisé la même implémentation géniale BASIC avec un assembleur de macros intégré que le BBC Micro (même héritage). J'ai réussi à assembler quelques jeux pour lesquels un ami arty a fourni des graphiques, ainsi que des démos trippy à base de sinusoïdes. Les deux étaient difficiles à programmer et un mauvais code pouvait détruire la machine (déclencher accidentellement le registre de réinitialisation du matériel, etc.), tout perdre si je n'avais pas enregistré (sur disquette!).
À l'université, j'ai été initié au C ++ et donc au C. J'ai pu l'utiliser pour programmer Sun / Solaris et d'autres gros ordinateurs centraux. Je n'ai aucune idée des architectures CPU sur lesquelles ces machines fonctionnaient - je n'ai jamais eu besoin d'utiliser l'assembleur ou de lire le code machine car les outils C ++ m'ont donné la puissance dont j'avais besoin pour produire des applications professionnelles.
Après Uni, j'ai travaillé sur Windows et plusieurs versions d'Unix. C et C ++ ont travaillé sur toutes ces machines et finalement Java aussi.
J'ai ensuite travaillé sur Windows et Dreamcast en utilisant C ++ avec DirectX avec une chaîne d'outils complète pour le débogage.
J'ai ensuite pris un travail en travaillant avec des chipsets ARM pour Smart TV (en 2000). Bien que mon expérience avec ARM2 ait pu être pertinente ici, le travail était basé sur C. J'ai trouvé que tous les fouilles avec le matériel que j'avais faites sur Archimède pouvaient également être faites en C en utilisant des opérations de twiddling simples. Une partie de mon rôle consistait à migrer la base de code vers Windows, Playstation 2, Linux, d'autres jeux de puces TV et mobiles. Toutes ces plates-formes étaient disponibles avec un compilateur C (souvent GCC) et un certain niveau d'API pour écrire sur la machine sous-jacente - le monde embarqué est rarement un noyau O / S. Je n'ai jamais eu besoin de connaître le code machine complet pour une plate-forme particulière au-delà de l'écriture d'un chargeur de démarrage et d'un mini-BIOS, qui ont tous deux sauté dans le code C à la première occasion disponible (après avoir configuré des vecteurs de déroutement,
Le travail suivant consistait à travailler avec C ++, C # et JavaScript sur Windows. Pas de code machine.
Le travail actuel fonctionne avec C ++, JavaScript, Python, LUA, HTML et d'autres langages sur diverses plates-formes. Je n'ai aucune idée du code machine que ces plateformes exécutent, et je n'ai pas besoin de le savoir - le compilateur traduit notre code en ce qu'il doit être. S'il se bloque, j'attrape l'erreur dans un débogueur ou via des diagnostics d'exécution (exceptions, signaux, etc.).
Pour le plaisir, je développe des applications iOS sur le peu de temps libre que j'ai à la maison. Il utilise Objective-C et une API qui fonctionne sur plusieurs chipsets. Apparemment, ils sont basés sur ARM, mais je n'ai jamais vu de code machine dans mon développement.
Bien que ce soit un exercice fascinant pour apprendre le langage d'assemblage, il existe maintenant des outils et des langages de niveau supérieur qui vous permettent d'être d'un ordre de grandeur (ou deux) plus productif.
Le nombre de possibilités d'emploi disponibles pour un incroyable programmeur de langage d'assemblage / code machine est minuscule par rapport à quelque chose comme JavaScript, Java, C #, C ++ ou ObjC.
Je vous conseillerais d'en faire un passe-temps / un intérêt secondaire plutôt qu'un objectif principal.