Sandbox
Johnny – frei ausprobieren
Hier steht dir Johnny mit allen Funktionen zur Verfügung: Mikrobefehle von Hand, Makroschritte, Ausführen, eigene Befehle aufnehmen, Bonsai-Modus und Dateien laden/speichern. Dein Speicherinhalt wird automatisch in diesem Browser gemerkt.
Neu hier?
Das Tutorial führt Schritt für Schritt durch alle Bauteile. Oder lade oben rechts ein Beispiel.
Speicher RAM
1000 Zellen · 000–999Adressbus ab
000
Welche Zelle?
Datenbus db
00000
Welcher Wert?
Rechenwerk ALU
Akkumulator acc
00000
=0?
Steuerwerk CU
Befehlsregister ins
Opcode00 . Adresse000
kein BefehlProgrammzähler pc
000
Mikroprogrammzähler mc
000 FETCH · Schritt 0
Mikrocode – die „Rezepte“ der Befehle
000 FETCH
0pc→ab1ram→db2db→ins3ins→mc
010 TAKE Opcode 01
0ins→ab1ram→db2db→acc3pc++4mc:=0
020 ADD Opcode 02
0ins→ab1ram→db2plus3pc++4mc:=0
030 SUB Opcode 03
0ins→ab1ram→db2minus3pc++4mc:=0
040 SAVE Opcode 04
0ins→ab1acc→db2db→ram3pc++4mc:=0
050 JMP Opcode 05
0ins→pc1mc:=0
060 TST Opcode 06
0ins→ab1ram→db2db→acc3=0:pc++4pc++5mc:=0
070 INC Opcode 07
0ins→ab1ram→db2db→acc3acc++4acc→db5db→ram6pc++7mc:=0
080 DEC Opcode 08
0ins→ab1ram→db2db→acc3acc--4acc→db5db→ram6pc++7mc:=0
090 NULL Opcode 09
0ins→ab1acc:=02acc→db3db→ram4pc++5mc:=0
100 HLT Opcode 10
0stopp1mc:=0
Protokoll – was ist gerade passiert? (0)
- Noch nichts passiert.
Befehlsübersicht – alle Makrobefehle mit ihren Mikrobefehlen
| Opcode | Befehl | Bedeutung | Mikroprogramm |
|---|---|---|---|
| 01 | TAKE xxx | Kopiert den Inhalt der Zelle in den Akkumulator. | ins→abram→dbdb→accpc++mc:=0 |
| 02 | ADD xxx | Addiert den Inhalt der Zelle zum Akkumulator. | ins→abram→dbpluspc++mc:=0 |
| 03 | SUB xxx | Subtrahiert den Inhalt der Zelle vom Akkumulator (Ergebnis mindestens 0). | ins→abram→dbminuspc++mc:=0 |
| 04 | SAVE xxx | Speichert den Akkumulator in der Zelle. | ins→abacc→dbdb→rampc++mc:=0 |
| 05 | JMP xxx | Springt zur angegebenen Adresse: Der nächste Befehl wird von dort geholt. | ins→pcmc:=0 |
| 06 | TST xxx | Ist die Zelle 0, wird der nächste Befehl übersprungen. ⚠ Überschreibt den Akkumulator mit dem Zellinhalt! | ins→abram→dbdb→acc=0:pc++pc++mc:=0 |
| 07 | INC xxx | Erhöht den Inhalt der Zelle um 1. ⚠ Überschreibt den Akkumulator! | ins→abram→dbdb→accacc++acc→dbdb→rampc++mc:=0 |
| 08 | DEC xxx | Verringert den Inhalt der Zelle um 1 (mindestens 0). ⚠ Überschreibt den Akkumulator! | ins→abram→dbdb→accacc--acc→dbdb→rampc++mc:=0 |
| 09 | NULL xxx | Setzt die Zelle auf 0. ⚠ Setzt auch den Akkumulator auf 0! | ins→abacc:=0acc→dbdb→rampc++mc:=0 |
| 10 | HLT xxx | Hält das Programm an. | stoppmc:=0 |