Grand débat sur la facilité ou non de l'assembleur , certain pense qu'il est abordable et d'autre pas du tout , par contre je trouve que (malheureusement) , ceux qui se mettent a la programmation assembleur ne sons pas programmeur a la base , et les programmeurs de métier fuit en général l'assembleur (le monde a l'envers xD ).
Je suis d'accord avec toi surtout a l'époque les machines était relativement simple et elle était faite pour aussi modifié le hardware a la 'main' , plus compliqué de nos jours de faire pareil sur une machine moderne.
Après je ne connait pas ta formation , mais je que j'ai pu voir quelqu'un qui commencera a faire de l'assembleur sans connaitre les conversions hexa/binaire/decimal et quelque connaissance sur le fonctionnement d'ordi , galérera un peu plus (de ce que j'ai pu voir en tout cas).
Voici le conseil que je te donne Monos
![T'inquiète ;)](./images/smilies/haha.gif)
En faite j'ai vu sur pas mal de forum assembleur des personnes qui ont une bonne connaissance technique mais en terme de programmation dur ce n'est pas très folichon , je que je veux dire c'est que si on apprend en autodidacte on risque d'avoir de grosse lacune en algorithmique , la modularité et la maitrise d'un paradigme.
La connaissance technique en soit n'est pas très compliqué , soit en sais soit on sait pas , il faut juste être un peu motivé et ne pas hésité de lire la doc.
Je te conseille donc te faire de l'assembleur sur ton PC (il y a plein d'assembleur z80 dispo sur le net) , deja un ils sont extrêmement puissant et offre pas mal de chose pour faire du code plus rapide et modulable (les macro et les label temporaire sont très utile).
Peut être de faire un peu de C a coté , bon le C est un langage pervers , il est très simple mais demande énormément de rigueur pour faire une application fiable.
C'est possible peut être de possédé cette compétence directement en assembleur mais j'ai jamais pu le confirmé , donc a toi de voir (et qui sait c'est possible d'avoir les bonnes habitudes en commençant directement en assembleur ^^).
Quoiqu'il en soit je veux juste te mettre en garde que si tu veux vraiment codé en assembleur au long terme et être bon dedans voici quelque règle a respecté :
-l'indentation est obligatoire (je le fait aussi en assembleur).
-le nommage des fonctions doit être correct , en assembleur évite les chiffre magique (chiffre dont on ne connait pas la signification , a la premier lecture) , donc tu nomme tout des variables (avec les défines/equ en général) , donne des noms au adresse spécifique du matériel (j'imagine que sur Amstrad il y a des adresse mémoire pour manipulé le matériel) , et dans une moindre mesure des noms sur les chiffre quelconque de control (par exemple un condition avec 1 afficher 0 ne pas afficher) , mais un commentaire permet de s'en passé.
-maitrisé un paradigme de programmation fonctionnel ou procédural .
Le fonctionnel est plus utile/facile en C que en assembleur , cela consiste que une fonction n'a pas d'effet de bord (donc exit les variables global) , elle a des entrées (en argument) et une sortie (en argument ou en valeur de retour).
Le procédural est aussi une fonction mais qui accepte un effet de bord , et pas forcément de sortie.
Dans les deux cas , ce genre de façon de codé tu dois voir ton code comme un ensemble de fonction au lieu de faire de l'impératif.
-La modularité , c'est la façon a savoir faire du code réutilisable et facile a utilisé sur ton programme ou sur un autre , une bonne fonction c'est une fonction que tu peux réutilisé partout.
-Dernière chose , essaye d’acquérir dans un premier temps cette rigueur privilégié toujours la 'beauté' du code (un code propre ,facile a lire , et facilement modifiable) que le résultat (erreur de beaucoup de débutant qui cherche le résultat avant tout).
Pour algorithmie , pièce central pour ma part , c'est la façon de trouvé une solution a un problème , vaste sujet mais je te dirai juste d'avoir ces 3 points en tête.
En général on a souvent le problème qu'on veut résoudre en tête (donc en français) , et donc dans un premier temps il faut maitrisé un peu la langue pour formalisé ces propos (un ordi ne comprend pas les choses implicite) et dans ce deuxième temps il faut décomposé le problème ,ensuite avec je que j'ai dit précédemment (modularité / faire des fonction) , traduire ce probleme par petit bloc.
Exemple grosso modo mais presque exhaustive du raisonnement :
Je veux afficher une image (mon image exemple.bmp )-> je formalise mon probleme explicitement je veux lire un bmp( c'est quoi un bmp ?) ensuite l'affiché et une image qu'est que c'est ? -> une image des bouts de pixel , un bmp un fichier qui possède des information sur une image-> ->donc comment afficher un pixel a l'écran , comment lire un fichier -> je sais maintenant (savoir un peu technique donc) décomposition de mon probleme lire un fichier ensuite l'affiché -> faire sa fonction load et affichage -> écriture du code -> problème réglé.
C'est un peu dur de l'expliqué peut être (je suis loin d’être pédagogue) , mais j'espere que tu vois ou je veux en venir.
Voila je pense que j'ai tout dit bonne continuation
![T'inquiète ;)](./images/smilies/haha.gif)