J'ai écrit , il y a 15 ans, du code ASM pour lire les informations de télécommandes IR exotiques. Indispensable, quand on a besoin de maîtriser le timing à la micro-seconde près. Maintenant pour gérer une liste doublement chaînée de pointeurs sur fonctions ou le parcours récursif d'un arbre, l'assembleur est difficilement envisageable. Je garde une grande admiration pour les génies qui ont programmer le module d’atterrissage du LEM, avec très peu de mémoire ! Chapeau bas, comme on dit !
C'est appréciable de voir enfin quelqu'un qui parle de langage machine. Personnellement je suis un espèce de dinosaure, pour programmer les Pics, je préfère nettement l'assembleur au C. En revanche, j'ai essayé de me mettre à l'assembleur sur l'AtMega, mais il faut reconnaître que c'est beaucoup plus compliqué, d'autant que ceux-ci ont beaucoup de registres de travail et pas d'accès direct des instructions aux emplacements mémoire.
Super présentation! :-) Merci. Tu m'as bien rappelé ma jeunesse quand je travaillais comme "technicien-bricoleur en électronique" (sans prétentions). Sitôt rentré chez moi après le travail, je courrais vers mon ordi et je ne lâchais plus ni le 8088 ni MASM de toute la soirée, sauf éventuellement pour l'apéro ou le souper avec madame ;-) La belle époque !
J'y retrouve des astuces que j'utilisais pour programmer du code temps réel. Par exemple la multiplication par 10. Et bien, avec un compilateur C bien optimisé, il utilisait ces astuces (pour autant que l'on mettait les bonnes options de compilation: optimiser la taille code source, ou la vitesse d'exécution). Tu aurais dû parler de la puissance des calculs via les registres (les opérations directes sur mémoire RAM étant 2 à 4 fois plus lente que la même opération travaillant directement sur les registres) . Le nombre de cycles utilisés étant bien plus réduit en travaillant directement dans les registres. Bien qu'en C, il y a aussi la directive register. Et je pense que seuls les personnes ayant pratiqué l'ASM comprennent bien le langage C (qui pour moi est le plus proche de l'ASM. J'en veux pour preuve les pointeurs). Qui peux comprendre la stack sans avoir programmé en ASM ? Un des processeurs les plus épatants à programmer était le 68000, bien plus riche que le 80x86, qui exigeait l'utilisation de registres spécifiques, alors que le 68000 acceptait tous les registres. Bon, en fait, je ne programme plus du tout en ASM, la puissance des processeurs ayant été multiplié par au moins 100 depuis mon début de carrière. Je ne rencontre plus de problème pour réaliser des logiciels temps réel en C. Mais encore une fois, je soutiens que lorsque l'on connaît le langage machine, on optimise mieux ses logiciels, quels que soient les langages utilisés. Je suis dégouté quand je vois que les langages modernes utilisent 4 bytes pour une déclaration de variable booléenne ! Ou des programmeurs qui déclarent inutilement toutes leurs variables en int. Parfois, je me dit que je pourrais faire du code plus rapide avec un vieux processeur, qu'avec un jeune codeur utilisant un processeur beaucoup plus puissant...
4 года назад
Tout à fait d'accord. Je n'ai pas couvert la pile (stack) dans la vidéo, puisque ça tombe plus dans l'architecture que dans l'assembleur proprement dit.Et il aurait alors aussi fallu couvrir les interruptions.
Je rajoute que la pile (stack) est incontournable pour le passage de paramètres aux sous-programmes, la compréhension de son fonctionnement est incontournable pour maîtriser l'appel de routines écrites dans un autre langage surtout si l'ordre d'empilement n'est pas le même. quoi de mieux que de jouer un peu avec les push/pop. ici c'est exemple où la connaissance de l'assembleur permet de facilité la compréhension de mécanismes utilisés dans des langages dit de haut niveau (y compris le langage C).
Ah, les cours d’assembleur 68000 à l’université sur un vieux serveur Ampex. C’est comme ça que j’ai découvert UNIX; on éditait en mode ligne avec “ed”, on assemblait avec “as” et on faisait un “od” (octal dump) pour voir le résultat. Inutile de dire que ça décourageait beaucoup de monde!!
Bonjour! Merci tout ce contenu. Pour multiplier par 10, j'utilise la séquence suivante: MOV A,B ; B dans A RL A ; rotate A a gauche RL A ; rotate A a gauche ADD A,B ; ajouter B a A RL A ; rotate A => A = b * 10 A la prochaine!
4 года назад
Oui, c'est bien, ça sauve une instruction. Comme quoi il y a souvent amélioration possible!
mm, ceci me pousse à réfléchir "qu'aurait produit un compilateur " pour l'instruction haut niveau "resultat = A*B;" pour un processeur qui ne possède pas d'instructions de multiplication ? Aurait-il généré un code optimisé dont l'optimisation est basé sur une remarque comme vous le faite (sachant que ceci nécessite des testes supplémentaires), ou tout simplement il aurait généré bêtement une boucle d'addition successive de l'un des opérandes avec comme compteur de boule l'autre opérande. Merci Claude pour ta remarque, et merci Bertrand pour cette vidéo instructive et nostalgique (^^).
Merci, merci, merci ! Vieux souvenirs de mes débuts sur un 2650 Signetics. Mais mon préféré fut le 6809, j'adorais (et j'adore toujours) ce microprocesseur qui m'a embarqué, depuis le premier composant acheté, dans le monde informatique. J'ai toujours cette machine qui tourne maintenant sous Flex 09. Plus tard, professionnellement, j'ai dû mélanger de l'assembleur (FFT rapide), du Pascal et du C sur ce même 6809... Pas facile de coder une fonction Atan en virgule flottante en assembleur !... D'où le recourt aux bibliothèques en Pascal. Mais pour une multiplication Sin/Cos des échantillons, l'assembleur est redoutable d'efficacité (il n'y avait qu'environ 700µs entre deux interruptions du convertisseur ADC, avec un temps de cycle d'une micro-seconde, fallait pas chômer...)
Toute ma jeunesse sur 8085 d'Intel, Z80 de Zilog avec le ZX81 auquel j'avais ajouté le son avec un AY3-8912 j'avais même écrit un programme affichant les accords de guitare et les jouant. J'ai également étudié le 68000 de Motorola. C'était la belle époque. Encore merci pour cette super vidéo nostalgique.
Merci de reparler de l’assembleur! Pour ma part j’ai pratiqué sur pic16f84. Programmer avec les instructions mêmes du processeur est vraiment très intéressant.
Pour multiplier par 10 en ASM, mieux vaut faire x2, x2, +1, x2 = (2*2+1)*2 que x2, x2, x2, +1, +1 =(2*2*2+1+1).... on y gagne une addition...! = réduction taille du code et vitesse d'exécution augmentée. (Juste un souvenir de mes années Z80). Bravo pour cette vidéo, en particulier pour l'inclusion de l'ASM dans du C et l'analyse du code ASM généré par le compilateur C. ASM et C ne sont pas effectivement concurrents, à chacun son job !
4 года назад
C'est bon ça! Pourquoi ne pas y avoir pensé avant! Toutes ces années à avoir gaspillé une cycle d'horloge... Je ne dormirai plus maintenant! ;-))
Bjr à tous de Fr, EXCELLENT !!! J'ai commencé aussi par le 6502 et le Z80 (carte MPF-1P , format livre), merci Bertrand pour cette VDO qui manquera pas d'éveiller la curiosité des programmeurs amateurs.
Bonjour et merci pour cette excellente vidéo. J'ai effectivement commencé par le langage d'assemblage sur les fameux pic 16f84 et j'avoue avoir eu beaucoup de difficultés au début. Mais c'est très formateur et très proche de la puce.. Le problème, c'est qu'à chaque fois que l'on change de microcontrôleur, il faut tout réapprendre et les datasheets sont ... très longues. Alors je suis passé à autre chose : Raspberry pi et Arduino. Le python est une solution de facilité ainsi que le pseudo-langage arduino (C et C++). La datasheet de l'ATméga 328 est très longue... Toutefois, je reconnais que la maîtrise d'un langage "assembleur" permet de mieux comprendre ce que fait un programme de plus haut niveau. Encore merci.
Bonjour Déjà un grand merci pour cette vidéo, qui est très bien expliqué, on aurais pu citer Monsieur Bigonoff Qui a fait un superbe boulot sur l’apprentissage des Pics16Fxxxx et Pic18Fxxxx en ASM L'assembleur qui est un langage de bas niveau, et le sommet de tous les langages de haut niveau Et ne peut être égalé. (désolé pour les adeptes des langages de haut niveaux.) Je pratique que de l'assembleur pour mes microcontrôleurs, ce qui m'a permit de construire mes bibliothèques, et d'en comprendre leurs fonctionnement. Un désassembleur sert à trouver une erreur, ou modifier un code source qui n'existe plus. Certain l'utilise à des fins malhonnête pour cassé des clé ou numéro de série,... bref ... chose à pas faire. A+
Même si je suis content d'avoir appris à programmer en assembleur, et avoir fait quelques projets pro avec, je ne souhaite plus l'utiliser qu'en dernier recours : ce n'est pas portable, quasi impossible de travailler en équipe, super dur à maintenir et surtout (le plus gros point faible à mon avis) : peu réutilisable (car pas portable d'un micro à l'autre). Je tiens absolument à réutiliser le plus possible de code car un code réutilisé est un code déjà debuggué (ou en tout cas qui a moins de bugs qu'un code neuf)
Coucou, on va pas se mentir, je n'ai même pas eu dans l'idée une milliseconde dans une absence de réalisme, de tenter le langage assembleur. Cela dit, quelle claque que cette introduction au langage assembleur ! A la fois ça démystifie, mais en même temps montre toute la complexité de l'informatique. J'apprécie beaucoup cette vidéo, parce qu'elle raconte quelquechose auquel je n'aurais pas eu accés (comprendre le langage assembleur). Donc si elle ne me donne pas envie de pratiquer, elle me donne au moins le goût de comprendre et appréhender le langage assembleur. MERCI !!!!!!
Bonjour Bertrand et merci pour ta vidéo. J'ai commencé à programmer il y a 25 ans en assembleur sur les PIC et depuis je programme toujours en assembleur pour les choses pas trop compliqué sur les PIC. Je trouve que c'est un langage précis et prévisible. Sinon pour le projets plus ambitieux je programme en C
merci pour cette tres bonne video...que de souvenirs .....j ai fait un peu de langage assembleur sur 6502 il y a plusieurs dizaine d annees merci encore
Moi aussi j'ai programmé en l'assembleur sur 6502 .... en 1978 pour mon projet de fin détudes en BTS sur KIM1. En fait il n'y avait même pas d'assembleur, on programmait directement en Hexadécimal !
Merci pour cette vidéo. Vieux souvenir du 6502... L’assembleur est très formateur... programmer à bas niveau nécessite du temps, mais le code résultant est court et très rapide... donc utile si on manque de ressources, c’est utile. Mais la loi de Moore fait que la ressource hardware coûte moins cher que le salaire du programmeur...
Je l'assembleur, j'en ai fait à l'école. (sur motorola 6811 et intel 251). Mais depuis j'ai toujours trouvé que gcc produisait de l'assembleur de qualité, très optimisé (bravo si vous faites mieux et sans bug/effets de bords) L’intérêt pour moi est essentiellement d'imaginer ce que fait le le compilateur pour avoir une idée du nombre de cycles correspondant à ce que j'écris. Bref, l'assembleur c'est intéressant de savoir que ça existe, d'en faire un peu à l'école et d'y jeter un oeil de temps à autre. Mais je n'ai jamais trouvé que ça convienne mieux à de la production que du code C Concernant la "propreté" l'argument n'est valable que tant qu'il s'agit d'une simple procédure. Pour la doc du atmega328, je la connais presque par coeur. (bien obligé) mais par contre, j'ai jamais fait une ligne d'assembleur sur ce micro. (a noter que je n'emploie pas les librairies arduino mais uniquement avr-gcc + make)
Pourtant Bertrand à donné une des raisons: maîtriser des timings précis, ce qui est souvent nécessaire pour pas mal d'applications, et que l'on ne peut généralement pas obtenir en C. Biensûr, en réalité on n'utilise généralement qu'une section ASM dans du code en C. Et encore... j'ai encore vu sur des projets actuels des fichiers asm entiers, qui avaient une bonne raison d'être là.
@@dawnaur Et bien hors situation très spécifique, je pense qu'en général c'est le contraire. Que quasiment tout est faisable sans écrire une ligne d'assembleur. Autant c'est important de produire du code rapide, autant, il est extrêmement rare que j'ai besoin d'un timing si précis que le nombre exact de cycles d'horloge en devienne réellement important. Je n'ai encore jamais rencontré de cas où je soit réellement obligé de faire ça. Et quand j'ai cru l'être, j'ai toujours trouvé une astuce pour l'éviter.
@@pcdwarf4787 Le contraire de quoi ? Je pense que vous avez mal compris mon commentaire. Ensuite oui, quasiment tout est faisable sans écrire une ligne d'assembleur. Personne n'a dit le contraire, mais ce qui importe ici, c'est le "quasiment". L'"astuce" n'est possible que quand ce n'est pas un vrai besoin, ou quand on a assez de marge en puissance de calcul pour se permettre de faire autrement, en gâchant des ressources. En dehors de ça, dans un milieu plus industriel, ça peut aussi être une façon de s'assurer d'une constance dans certains traitements, ce qui peut devenir important pour l'assurance qualité, ou même nécessaire en fonction du matériel autour du microcontrôleur.
pour ma part l'assembleur c'etait fin années 80 debut 90. et sur les processeurs de l'époque tu etait bien obligé d'optimiser ton code. 😊 et puis comme dit dans la vidéo tu es tellement content lorsque tu trouve des astuces de programmation. comme détourner des zones mémoire ou des instruction et obtenir autre chose grace a ta créativité. et a l'epoque tu était dans ton coin avec des revues. pas de net. pas de tuto aussi accessible qu'aujourd'hui. une autre epoque. ARG chui vieux
@@dawnaur Le contraire de "souvent nécessaire pour pas mal d'applications, et que l'on ne peut généralement pas obtenir en C". Mais visiblement vous être d'accord sur le coté spécifique et surtout "limite de capacité". Disons qu'il n'y a pas tellement de marge entre pas faisable en C et pas faisable du tout. Sinon par "astuce" j'entendais un détournement de périphériques qui travaillent toujours parfaitement synchrones, comme par exemple le registre à décalage du SPI pour générer des signaux rapides.
salut Bertrand, tu viens de me plonger dans de vieux souvenirs ou , a l’époque , je m’étais amusé a faire en "langage machine" pas en assembleur ( sur Z80) le même petit programme que je faisais en basic . Resultat : pour l’exécution de la même fonction : 15 min en basic 2 sec en langage machine..... je penses que ça se passe de tout comme,taire ^^ Bonne continuation F1RIP
Bonjour, ah oui l'assembleur ca rappele le bon vieux temps, et en effet c'est toujours de rigueur pour les micro-controleurs. Ca réveil ma passion pour la collection des vieux micros. Peut-être, probablement, connais tu la chaine " the 8 Bits Guy", je viens de découvrir par hasard ce projet (abouti) très enthousiasmant, the Gigatron TTL computer ! Un ordinateur 8 bits sans microprocesseur, tout en logique TTL! C'est CPU de type RISC, peut d'inscructions, mais ca semble assez rapide! J'ai écrit pour en commander un, ca vient des pays bas.
4 года назад
Je connais en effet 8-bit Guy et j'ai vu le Gigatron TTL. Il n'y a pas de CPU proprement dit, mais il y a tout de même un EPROM qui ajoute de l'intelligence et simplifie grandement le circuit.
Bravo, bravo et encore bravo pour cette vidéo. je me suis amusé à désassembler des EEPROM dans le but de les reprogrammer. C'est un excellent exercice pour comprendre comment le MCU ou le microprocesseur travaille et, se servir de certaines instructions pour rédiger des routines soi-même. j'espère que tu feras d'autres vidéos sur l'assembleur, notamment pour des routines qui se répètent dans des programmes différents les uns des autres. BRAVO
Il n'y a qu'un électronicien pour se rendre compte que le C est un langage de haut niveau ! Mes collègues amateur de Python et autre PHP ne sont pas d'accord :-)
C'est l'approche aujourd'hui qui a changé. Et cela se comprend avec l'évolution du matériel. Avec les nouvelles architectures tu n'as plus vraiment besoin d'optimisation aux petits oignons. Tu ne travailles plus avec quelques ko ou Mo de mémoire mais avec des Go. Les problématiques ont également changé et se sont diversifiées. PHP c'est un langage serveur web et Python un couteau suisse. Un dev web par exemple aujourd'hui n'a plus besoin de connaître toutes les entrailles de sa machine. Les connaître et les comprendre sera toujours un plus mais pas une finalité pour lui.
sans même être électronicien (je consulte des datasheets pour comprendre le sens anode/cathode d'une led smd donc je suis une quille) ayant grandi avec un amiga 500 (68x POWAAAAAA ^^) je comprend que l'asm est le langage le plus proche de la machine (quoique le C était déjà répandu dans le monde Amiga), C rajoute une couche d'abstraction VS l'asm, python est bien largement plus haut niveau .. mais ... question de néophyte .... le cobol se situe ou ? de mon point de vue ayant travaillé jeune dans l'info j'ai croisé des "barbus" surtout dans le domaine bancaire .. c'est un langage "de bas niveau" mais sur une architecture particulière... je me trompe ? dans tous les cas merci à Électro-Bidouilleur de vulgariser l'électro/info
Ça me rappelle de bons souvenirs quand je programmais en assembleur 6502 avec mon apple II+ 48k de Ram. Pour économiser la mémoire il etait possible de cacher une nstruction à l'intérieur d'une autre instruction. Les premiers pas de l'optimisation! Aujourd'hui je programme en C#, la Cadillac des langages à mon humble avis. Pourquoi desassembler un programme? Aujourd'hui c'est totalement inutile jadis pour cracker des jeux 😉
j'étais bon en assembleurs intel & motorola 8bit, qd j'ai fait du C ensuite c'était un jeu d'enfant surtout niveau pointeurs qui effrayaient bcp d'étudiants en Informatique. la belle époque... j'ai bcp amélioré ma compréhension en faisant du reverse engineering pour faire des générateurs de clés des sharewares qui m'intéressaient sans en faire de profits, pur plaisir de cracker la logique. pas nombreux de victimes de Java ont connu ça :p ah oui pour la maquette motorola, on devait entrer les instructions mnémo en leur code hexa, on retient mieux ainsi les instructions simple ou à plusieurs opérandes attendus
Pour ce qui est de l'assembleur, cela me rappelle mes études où j'obtimaisai du code source en prenant compte le temps de réponse des mémoires (registre, cachés, mémoires, mémoires virtuelles, ....) , les prédictions de branchement, et les réorganisations des instructions lorsque le microprocesseur était un superscalaire, à oui j'avais oublié le pipeline. Je précise que c'était sur des processeurs puissant du style Alpha, UltraSparc, Mips, .... Il est vrai que l'on gagné 30 à 40 % de temps de calcul. Mais le problème, est que dans ma branche actuel : le logiciel embarqué critiques, nous utilisons pas l'assembleur pour plusieurs choses : - le langage est trop lié au processeur et donc souvent la plateforme est choisi en même temps que l'écriture du code donc il nous faut un langage de haut pour que l'on puisse éxecuter les tests sur un PC. -Un autre grief aux langages d'assembleur est que l'on est toujours obligé d'utiliser des sauts et des branchements conditionnel ou pas. Or ceci rende le code illisible et on casse le flux de données. On appelle cela dans le jargon un code spaghetti. Et cela est interdit par les normes de développement des autorités. Donc on utilise pas le goto dans les langages de haut niveaux. - en dernier les optimisations des compilateurs actuel produise quand même un code machine assez bien optimisé
4 года назад
Pour être un peu original, je n'ai pas fait mes premiers pas en assembleur sur 6502, mais sur le Saturn 4 bits à 1MHz qui équipait la série de calculatrices HP48. J'avais développé un jeu de voitures à 2 joueurs et scrolling vertical, le tout en 4 niveaux de gris. L'efficacité du langage était telle qu'il était possible de faire clignoter l'écran assez vite pour simuler cela sur un simple écran noir et blanc. En ce temps-là, on savait rire!
4 года назад
Ma première programmation en ASM fut sur un microprocesseur de 1 bit! J'aurais dû mentionner cela dans la vidéo...
Pour ceux mis en appétit par cette belle présentation, mais qui ont plutôt un "background" 6502, je recommande la chaîne de Ben Eater. Il commence son exposé, avec une plaquette de connexion vide, avec le 6502 planté dessus, puis complète le circuit jusqu'a afficher, sur un afficheur LCD, le fameux "Hello, world!" au bout de 6 videos. Mais son astuce de génie, c'est de commencer par cabler en dur l'opcode du NOP sur le bus de données puis de suivre pas à pas la séquence de reset, le démarrage de la CPU. ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-LnzuMJLZRdU.html
4 года назад
Oui, l'astuce du NOP câblé, c'est une excellente idée, aussi pour tester le bus d'adresse.
L'assembleur est aussi indispensable au bidouilleur qui fait un peu de reverse engineering et ça continuera encore longtemps :-) bon le code généré par le désassembleur est souvent assez compliqué à interpreter car il n'a pas été écrit par un humain mais généré par un compilateur C ou autre donc très fouillis. Mais on peut faire des choses assez bluffantes et en apprendre beaucoup. J'ai beaucoup plus souvent pris mon pied avec l'asm qu'avec d'autres langages :-)
Vidéo bien intéressante, que ce soit niveau explication comme illustration. D'ailleurs, un des autres exemples était cette fichue librairie TVout, qui était partiellement codée en assembleur justement pour maintenir des timings précis. Cependant, je ne suis pas vraiment d'accord sur le fait d'appeler le C un langage de haut niveau. S'il est plus haut niveau que l'assembleur (forcément), ça reste tout de même un des langages de plus bas niveau !
Salut très bonne vidéo et pou les personnes encore sceptique Bigonoff à fait un très beau cours gratuit sur la programmation des microcontrôleurs PIC en assembleur ;)
Excellent pour ma culture générale ! mais ça dépasse très largement mes compétences... Je bidouille l'électronique sans utilisation des microcontrôleurs sans Arduino.... etc Peut-être un jour... pas pour l'instant, il me reste beaucoup à apprendre sur les bases des composants actifs et passifs et des possibilités qu'ils m'offrent. Merci pour la vidéo Cordialement Patrick
De nos jours avec les micros un peu complexe par exemple à base de ARM. L'assembleur est intéressant pas pour le développement d'application, mais dans des cas pointus de débogages pour connaitre l'origine d'un Fault. Il peut aussi être utilisé pour des benchmarks pour optimiser des accès en vue de voir le comportement du cœur et des bus telle que AHB, AXI etc .. Dans mon cas, dans mon boulot, j'utilise l'assembleur pour les cas cités précédemment.
très bonne présentation de l'assembleur , pour ma part j'ai débuté en programmant pour 8080 et 6800 en assembleur dans les années 70/80 , à l'époque j'avais l'habitude de programmer en basic, la différence de vitesse d'exécution était flagrante . Il est vrai que la programmation en assembleur est plus contraignante et longue mais lorsque on a contraintes de temps d'exécution , il faut se jeter dans le bain.Je ne sais pas si les rudiments de la programmation en assembleur sont enseignés aux étudiants. merci.
Pour répondre à votre question... Mes deux fils ont fait des études en informatique ( en France) et ils ont à peine effleuré le sujet... A priori par manque de temps... c'est dommage à mon avis.... Cordialement
merci pour votre réponse ,effectivement, c'est bien dommage car c'est la base du fonctionnement . Mais c'est devenu une règle , ne vous occupez pas de savoir comment ça fonctionne ......
C'est en effet très triste on nous apprend un pseudo arm au lycée et en DUT, perso' j'essaye d'enseigner l'assembleur sur ma chaîne dans le but de l'orienter vers les domaines où elle est encore très utile : l'exploitation de binaires et le reverse engineering.
Merci pour la vidéo, j'avais justement envie de programmer en ASM pour comprendre le fonctionnement des CPU, et pour répondre à 25:55, ce serait pour passer d'un jeu d'instruction à un autre pour avoir une compatibilité, meme si pas optimisé, comme pour faire tournée Linux sûr un processeur Risc-V, étant à ce que j'ai vus fait en partie d'assembleur, une optimisation peut être faite plus tard.
L'assembleur est le langage le plus proche du langage machine et donc le plus puissant et le plus rapide par contre, même si il est très simple, il impose de réaliser des programmes très long. Perso j'ai commencé la programmation par l'assembleur sur Amiga 500+ et j'ai adoré.
J' ai écris un program (Pic16F) en assembleur qui à l'aide d'un comparateur devais lire a l'intérieur d'une ligne vidéo (ntsc) à un endroit précis. Un interupt étais géneré une ligne à l'avance.. Sur la ligne suivante à 4 endroit précis et selon le comparateur compter ou le signal vidéo était blanc (plus que .97 volt) la section de code qui comptait les positifs devaient le faire en 6 instructions avant de passer à la section suivante. Possible seulement en assembleur. Aujourd'hui on prendrait un micro plus rapide.
J'ai fait un truc du même genre sur un signal Secam, avec un 6802 histoire de recaler un retard pseudo aléatoire... D'autre utilisait un 68705P3... Motorola a frisé la rupture de stock à cette époque !
Si je retenais une chose, c’est la possibilité de faire des sous parties critiques d’un programme de haut niveau en assembleur. On a ainsi le meilleur des deux mondes, la maîtrise totale quand c’est indispensable, une programmation plus simple ailleurs. Une remarque toutefois, le C permet très bien de manipuler directement les registres du processeur, sans passer en assembleur. Conséquemment, j’ai utilisé la doc technique de l’ATMega328P à plusieurs reprises, sans jamais avoir écrit de langage machine. Enfin, Il ne faut pas négliger les progrès faits par les compilateurs (optimisation de la performance, taille du code). Sur Arduino, j’ai dû reprendre du code ancien, inchangé de quelques années (RFlink, pour ne pas le citer) ... parce qu’il bouclait 20% trop vite à présent!
4 года назад
Lorsque vous faites du C pour ne changer que les valeurs des registres, c'est de l'assembleur que vous faites! ;-)
C'est crai que le code assembleur est très beau. Et puis certaines très grandes entreprises paieraient une fortune pour trouver une personne sachant coder en Assembleur pour modifier le driver d'un peripherique qu'ils utilisent depuis des dizaines d'années.
pourquoi désassemblé du code assembleur ? car il son a la base de tout les driver sous windows et pas que, pour faire simple, pour chercher des faille dans des programme ou des protocole.
Je bricole un projet d'ordinateur 8 bits. Dessus, un PIC16F876 qui s'occupe des E/S : clavier et souris PS/2, port joystick et paddle. Je le programmerai en C parce que l'ASM microchip j'aime pas. Par contre, le processeur central c'est une Atmel AT89LP51 et lui je le programmerai en assembleur parce que c'est plus rapide et l'assembleur de ce microcontrôlleur est vraiment sympa et facile.
Bonjour, Après cette belle présentation du langage assembleur, pourquoi ne pas réaliser une petite bidouille avec un AY3-8912, histoire d'ajouter le son sur une carte microprocesseur?
4 года назад
Je fais déjà beaucoup de rétro.... Vous verrez d'ailleurs une vidéo sur le SP0256-AL2 bientôt.
Bonsoir ou bonjour Électro-Bidouilleur. Si vous deviez reprendre tout à zéro, quel langage d'assembleur apprendriez-vous en premier ? Sur le même registre, connaissez-vous un livre pour débuter avec ce langage ? Avec plus de 37 000 abonnés, je me doute bien que vous ne pouvez pas répondre à tout le monde, mais je tente ma chance quand même. Vos vidéos me sont bien utiles, ceci dit je n'ai pas encore le niveau pour tout comprendre, j'en suis même très loin, c'est pour cette raison que d'apprendre un peu la programmation serait bien je pense, alors autant demander conseil à un professionnel. Merci pour votre chaine. Bonne continuation.
4 года назад
Pourquoi ne pas poser vos questions sur le forum Électro-Bidouilleur? 1100 inscrits qui peuvent répondre. En effet, je n'ai pas le temps pour répondre en longueur. Merci.
Sur PC à 8MHz (vers 1990) on avait une carte convertisseur A/D (bus ISA) mais remplacer en (Borland) C sous (MS)DOS les accès I/O (inp out) par l'équivalent en assembleur n'avait rien apporté en gain de vitesse d'éxécution, ça devait être codé de façon optimale une fois compilé, rien à gagner, trop direct comme accès.
Je programme essentiellement en c, mais l’assembleur c’est la base. C’est juste une obligation pour faire de l’optimisation de code. Et aussi pour bien comprendre comment fonctionne le processeur
Bah un compilo C pourra aussi bien optimisé que de l'asm ;) (surtout qu'un optimisation sur certain processeur est difficile à évaluer). Sinon c'est un peu faux de dire "pour bien comprendre comment fonctionne le processeur" , si par exemple on prend le x86 , la façon de comment tu le programme et de comment il fonctionne est totalement différent. Le x86 se programme comme beau papa en 1980 , alors qu'un proc actuelle n'a plus rien à voir , en gros les proc actuelle ont une pipeline , sont superscalaire , font du renommage de registre , mémoire cache etc etc , bref plein de truc "invisible " pour le programmeur ,pour ça que meltdown et spectre sont apparu que 20 ans plus tard de leur apparition des premier sPentium , parce qu'un programmeur assembleur ne sait pas comment fonctionne son proc , il pense naturellement que le x86 fonctionne comme avant ,combien de fois j'ai lu "combien fait de cycle tel instruction" , n'ayant aucun sens sur un proc moderne cette question :) Les seul proco qui ne cache pas le fonctionnement interne du processeur , il y'en a deux principalement Itanium et le CELL , si tu programme sur ces deux processeurs , là oui tu pourra dire que l'asm t'apprend à comment fonctionne un processeur moderne , sinon non ;)
Sur PC les interruptions pour Contrôler les accès aux périph I/O. Et même la gestion des commerciaux cher AXA Assurance France sur de gros IBM, Que de souvenir avec ce langage de légende .
Bertrand ton programme assembler pour la variation d'intensité de ta led de manière cyclique est fausse, je l'ai recopier sur MPLABX je n'obtient que des erreur de syntaxe et des symbole non définie par le compilateur
Год назад
Vous l'avez vu dans ma vidéo, il fonctionne. Tâchez de comprendre pourquoi il y a des erreurs de votre côté.
Il faut arrêter cette légende urbaine qui dit que l'asm est difficile à apprendre. J'ai écrit mon premier programme asm en moins d'une semaine (un base 64). Je trouve l'asm beaucoup plus simple à apprendre que le c++ par exemple.
4 года назад
La perception de difficulté d'apprentissage vient du fait que le nombre d'instruction est limité, et donc que c'est plus pénible de produire des actions complexes.
L'assembleur "pas optimisé" et "pas efficace"??? 😂 C'est sûr que pour faire une interface graphique haut niveau ce n'est pas efficace en terme de ratio temps/fonction.
Beau travail yannick ! Mon collègue a fait à peu près la même chose pour un fréquencemètre, avec une précision, après divisions de 8Hz max @ 450MHz On en a vendu des centaines, mais c'était en 2006...