MIXAL – Wikipedia
MIXAL ist die Assemblersprache des fiktiven MIX-Computers.
Der MIX-Computer ist ein hypothetischer Computer aus Donald E. Knuths The Art of Computer Programming, welcher mittels MIXAL programmiert werden kann. Eine Emulation dieses Computers ist bei den Weblinks unter Dan's MIX Simulator and MIXAL Compiler zu finden.
Beispielprogramme
[Bearbeiten | Quelltext bearbeiten]hello world
[Bearbeiten | Quelltext bearbeiten]TERM EQU 19 console device no. (19 = typewriter) ORIG 1000 start address START OUT MSG(TERM) output data at address MSG HLT halt execution MSG ALF "HELLO" ALF " WORL" ALF "D " END START end of program
Bildung der Fakultätsfunktion
[Bearbeiten | Quelltext bearbeiten]Eingabe CON 10 Variable "Eingabe" wird auf "10" gesetzt Zaehler CON 0 Variable "Zaehler" wird auf "0" gesetzt Produkt CON 1 Variable "Produkt" wird auf "1" gesetzt Start Start des Programms (Label für den nächsten Befehl) LDA Eingabe "Load A-Register" Lädt den Inhalt der Variablen in das A-Register STA Zaehler "Store A-Register" Speichert Inhalt des A-Registers in Variable "Zaehler" Schleife LDA Produkt "Load A-Register" Lädt den Inhalt der Variablen "Produkt" in das A-Register MUL Zaehler Multipliziert A-Registerinhalt mit Variable "Zaehler". Ergebnis wird in A- und X-Register geschrieben STX Produkt "Store X-Register" Speichert Inhalt des X-Registers in Variable "Produkt" LDA Zaehler "Load A-Register" Lädt den Inhalt der Variable "Zaehler" in das A-Register DECA 1 "Decrement at 1" Inhalt des A-Registers wird um 1 verringert STA Zaehler "Store A-Register" Speichert Inhalt des A-Registers in Variable "Zaehler" JAP Schleife "Jump if A Positive" Wenn A>0, springe zurück nach "Schleife" HLT "Halt" END Start Ende des Programmes, welches bei Start beginnt. Das Resultat steht in Variable "Produkt"
Beschreibung
[Bearbeiten | Quelltext bearbeiten]Für das Verständnis dieser Beschreibung ist Praxis im Umgang mit Assemblersprache hilfreich.
Flags
[Bearbeiten | Quelltext bearbeiten]Der MIX-Computer hat einige Prozessor-Flags, die dazu eingesetzt werden, den Programmablauf zu steuern.
E-Flag
[Bearbeiten | Quelltext bearbeiten]Gesetzt, wenn der Inhalt des A-Registers dem Inhalt der Adresse beim Befehl CMPA (CMPA wird stets zuvor ausgeführt) gleicht.
L-Flag
[Bearbeiten | Quelltext bearbeiten]Gesetzt, wenn der Inhalt des A-Registers kleiner ist als der Inhalt der Adresse beim Befehl CMPA (CMPA wird stets zuvor ausgeführt).
G-Flag
[Bearbeiten | Quelltext bearbeiten]Gesetzt, wenn der Inhalt des A-Registers größer ist als der Inhalt der Adresse beim Befehl CMPA (CMPA wird stets zuvor ausgeführt).