Zum Hauptinhalt springen
Version: Material

6. Assembler im LMC

Damit wir diese Aspekte genauer anschauen können, simulieren wir einen einfachen Rechner. Der "Little Man Computer" 👉 LMC von Peter Higginson eignet sich dazu sehr gut.

Die BenutzeroberflÀche enthÀlt drei Teile:

Editor
Im LMC Editor werden die Befehle in Form von Mnemonics eingegeben
Assembler
Der Assembler ĂŒbersetzt diese Mnemonics in die Zahlen (Opcodes und Operanden) schreibt diese in die Speicherzellen
Simulator
Der Simulator fĂŒhrt die Instruktionen dann aus.

Instruction Set​

Der LMC kennt 11 verschiedene Instruktionen und hat einen Speicher von 100 Zellen, welche von 00 bis 99 nummeriert werden. Mit diesen Instruktionen lassen sich alle Aktionen des Fetch-Decode-Execute Zyklus ausfĂŒhren.

InstruktionMnemonicOpcodeErklÀrung
HALTHLT000Programm beenden
AddierenADD1xxAddiere den Inhalt von Speicherzelle xx zum Akkumulator
SubtrahierenSUB2xxSubtrahiere den Inhalt von Speicherzelle xx vom Akkumulator
SpeichernSTA3xxSpeichere den Inhalt des Akkumulators in Speicherzelle xx
LadeLDA5xxLade den Inhalt von Speicherzelle xx in den Akkumulator
Gehe zu (Branch Always)BRA6xxSetze den ProgrammzÀhler auf xx (also spring als nÀchstes dorthin)
Gehe wenn 0 (Branch if Zero)BRZ7xxWenn der Akkumulator 0 enthÀlt spring als nÀchstes nach xx
Gehe wenn >=0 (Branch if Positive)BRP8xxWenn der Akkumulator positiv ist spring als nÀchstes nach xx
EingabeINP901Hol vom Operateur einen Eingabe und schreib sie in den Akkumulator
AusgabeOUT902Gib den Inhalt des Akkumulators aus
Freier Speicherort (Data Location)DATWeist dem nÀchstmöglichen, freien Speicherplatz im RAM einen Name zu. Optional kann auch der Zahlenwert des zugewiesenen Speicherplatzes angegeben werden.

Editor und Assembler kennen symbolische Links; Speichezellen können Namen haben und mit diesem angesprochen werden. Kommentare werden mit einem # gekennzeichnet.

Ein erstes Programm soll das veranschaulichen. Es fragt nach einer Eingabe, zÀhlt dann 5 dazu und gibt das Resultat aus.

;
; Programm Ein- und Ausgabe
;
INP ; Eingabe holen und in akk speichern
ADD five ; fĂŒnf dazu
OUT ; ausgeben
HLT ; fertig

five DAT 5 ; 5 zum Addieren

Im Speicher stehen jetzt folgende Zahlen:

00    901    (INP; Eingabe holen und in Akk laden)
01 104 (ADD 04; addiere den Inhalt von Speicherzelle 04 zum Akk)
02 902 (OUT; gib Akk aus)
03 000 (HLT; Programm beenden)
04 005 (Zahl 5; Datenzelle)

Mit "Run" kann das Programm nun ausgefĂŒhrt werden.

Kommentare

Leider können die Online-Simulatoren keine Kommentare verarbeiten. Sie mĂŒssen die Kommentare vor dem AusfĂŒhren entfernen 😓

Kommentare Entfernen

Assembler-Code

Ausprobieren

Probieren Sie es aus! Macht das Programm, was es soll? Können Sie es so abÀndern, dass es statt 5 nun eine andere Zahl addiert?

Halten Sie Ihre Erkenntnisse unten fest.

Laden...