C'est vraiment deux questions en une ...
Premièrement, quelle est la différence entre un microcontrôleur et un microprocesseur?
Le microprocesseur est purement un CPU qui suit un ensemble d'instructions lues à partir d'un bus mémoire externe. Il contrôle les périphériques externes (tels que l'écran, le clavier, la souris, le disque dur, etc.) via un bus de communication externe. Lorsque vous programmez un microprocesseur, votre programme est externe à l'appareil. Dans un ordinateur, cette mémoire est initialement la ROM du BIOS de démarrage qui lit initialement le système d'exploitation du disque dur dans la mémoire RAM, puis continue de l'exécuter à partir de là.
Le microcontrôleur est un peu comme un processeur + mémoire tout-en-un, avec quelques ports externes pour communiquer avec le monde extérieur. Il est autonome et n'utilise pas de mémoire externe pour contenir son programme (bien que si nécessaire, il peut lire et écrire des données de travail dans la mémoire externe).
Deuxièmement, la programmation d'un microcontrôleur et d'un microprocesseur est-elle la même?
À certains égards, oui et à certains égards, non.
Le langage d'assemblage est un terme large qui décrit un ensemble d'instructions que le processeur peut comprendre directement. Lorsque vous «compilez» le langage d'assemblage, il ne compile vraiment rien, tout ce qu'il fait, il le convertit en une séquence d'octets qui représentent les commandes et les prises dans certains emplacements de mémoire relatifs. Ceci est commun aux microprocesseurs et aux microcontrôleurs.
Cependant, différents types de CPU comprennent un ensemble différent d'instructions de CPU. Par exemple, si vous écrivez un programme en langage assembleur qui fonctionne avec un microcontrôleur pic 16F877, ce sera un non-sens pour un microprocesseur ou tout autre microcontrôleur en dehors de la famille de microcontrôleurs pic 16Fxxx.
Ainsi, bien que l'assemblage fonctionne de manière similaire sur tous les microprocesseurs et microcontrôleurs, la liste réelle des instructions que vous écrivez est très différente. Pour écrire en langage assembleur, vous devez avoir une connaissance approfondie de l'architecture de l'appareil, que vous pouvez normalement obtenir de la fiche technique dans le cas d'un microcontrôleur.