Sono davvero due domande in una ...
Innanzitutto, qual è la differenza tra un microcontrollore e un microprocessore?
Il microprocessore è una CPU puramente che segue una serie di istruzioni lette da un bus di memoria esterno. Controlla periferiche esterne (come schermo, tastiera, mouse, disco rigido, ecc.) Tramite un bus di comunicazione esterno. Quando si programma un microprocessore, il programma è esterno al dispositivo. In un computer, questa memoria è inizialmente la ROM del BIOS di avvio che inizialmente legge il sistema operativo dal disco rigido nella memoria RAM, quindi continua a eseguirlo da lì.
Il microcontrollore è un po 'come una CPU + memoria all-in-one, con alcune porte esterne per comunicare con il mondo esterno. È autonomo e non usa la memoria esterna per contenere il suo programma (anche se se necessario può leggere e scrivere dati di lavoro nella memoria esterna).
In secondo luogo, programmare un microcontrollore e un microprocessore è lo stesso?
In qualche modo sì, e in qualche modo no.
Il linguaggio assembly è un termine generico che descrive un insieme di istruzioni che la CPU può comprendere direttamente. Quando "compili" il linguaggio assembly, in realtà non compila nulla, ma lo converte in una sequenza di byte che rappresentano i comandi e i plug in alcune posizioni di memoria relative. Questo è comune sia ai microprocessori che ai microcontrollori.
Tuttavia, diversi tipi di CPU comprendono un diverso set di istruzioni CPU. Ad esempio, se si scrive un programma in linguaggio assembly che funziona con un microcontrollore pic 16F877, sarà completamente assurdo per un microprocessore o qualsiasi altro microcontrollore al di fuori della famiglia di microcontrollori pic 16Fxxx.
Pertanto, sebbene l'assemblaggio funzioni in modo simile su tutti i microprocessori e i microcontrollori, l'elenco effettivo delle istruzioni scritte è molto diverso. Per scrivere in un linguaggio assembly, è necessario avere una conoscenza approfondita dell'architettura del dispositivo, che normalmente è possibile ottenere dal foglio dati nel caso di un microcontrollore.