Das sind wirklich zwei Fragen in einer ...
Was ist der Unterschied zwischen einem Mikrocontroller und einem Mikroprozessor?
Der Mikroprozessor ist eine reine CPU, die einer Reihe von Anweisungen folgt, die von einem externen Speicherbus gelesen werden. Es steuert externe Peripheriegeräte (wie Bildschirm, Tastatur, Maus, Festplatte usw.) über einen externen Kommunikationsbus. Wenn Sie einen Mikroprozessor programmieren, befindet sich Ihr Programm außerhalb des Geräts. In einem Computer ist dieser Speicher zunächst das Boot-BIOS-ROM, das das Betriebssystem zunächst von der Festplatte in den RAM-Speicher liest und von dort aus weiter ausführt.
Der Mikrocontroller ähnelt einem All-in-One-CPU + -Speicher mit einigen externen Ports für die Kommunikation mit der Außenwelt. Es ist in sich geschlossen und verwendet keinen externen Speicher, um das Programm zu speichern (obwohl es bei Bedarf Arbeitsdaten lesen und in den externen Speicher schreiben kann).
Zweitens ist die Programmierung eines Mikrocontrollers und eines Mikroprozessors gleich?
In gewisser Weise ja und in gewisser Weise nein.
Assemblersprache ist ein weit gefasster Begriff, der eine Reihe von Anweisungen beschreibt, die die CPU direkt verstehen kann. Wenn Sie die Assemblersprache "kompilieren", wird nichts wirklich kompiliert, sondern nur in eine Folge von Bytes konvertiert, die die Befehle und Stecker an einigen relativen Speicherorten darstellen. Dies ist sowohl für Mikroprozessoren als auch für Mikrocontroller gleich.
Unterschiedliche CPU-Typen verstehen jedoch unterschiedliche CPU-Anweisungen. Wenn Sie beispielsweise ein Assembler-Programm schreiben, das mit einem pic 16F877-Mikrocontroller funktioniert, ist dies für einen Mikroprozessor oder einen anderen Mikrocontroller außerhalb der 16Fxxx-Familie von pic-Mikrocontrollern ein völliger Unsinn.
Obwohl die Assemblierung für alle Mikroprozessoren und Mikrocontroller ähnlich funktioniert, ist die tatsächliche Liste der Anweisungen, die Sie schreiben, sehr unterschiedlich. Um in Assemblersprache schreiben zu können, müssen Sie über fundierte Kenntnisse der Gerätearchitektur verfügen, die Sie normalerweise bei einem Mikrocontroller aus dem Datenblatt abrufen können.