x86-Programmierung und -Betriebsarten (Teil 2)

Programmierung auf Prozessorebene: Mnemonics und der Assembler

Ein Assembler versteht diesen mnemonischen Code und führt eine entsprechende Kodierung in einen Maschinenbefehl aus. Maschinenbefehle sind - wie könnte es anders sein - eine Folge von Nullen und Einsen mit einem oder mehreren Byte Länge. Mit einem Assembler lassen sich aber viele Dinge erleichtern. Beispielsweise können die üblichen Assembler Makros verdauen (daher auch die Bezeichnung Makroassembler), unterschiedlichste Adressierungen ausführen und Variablen, Sprungstellen (JNZ hier_gehts_weiter) sowie Prozeduren (CALL subroutine) symbolisch ansprechen. Der Assembler setzt diese Anweisungen dann in entsprechende Maschinenbefehle um. Ein Assembler ist die maschinennaheste Möglichkeit, Programme zu erstellen. Damit können Sie auf Registerebene unmittelbar auf die Hardware einwirken. In Assembler geschriebene Programme sind im Allgemeinen sehr kompakt und äußerst schnell (wichtig bei Echtzeitanwendungen zur Maschinensteuerung). Reine Programmierung in Maschinensprache würde keine weitere Kontrolle über den Mikroprozessor bringen, sondern die Angelegenheit nur verkomplizieren und fehleranfälliger machen.

In der weiteren Beschreibung von Maschinenbefehlen werden wir daher stets die mnemonischen Codes und Elemente der Assembler-Programmierung (wie beispielsweise symbolische Sprungstellen oder Bezeichnungen von Prozeduren) benutzen.