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.

langsam schnell
0 Takte · 0 Befehle

Speicher RAM

1000 Zellen · 000–999
pc ab 000 00.000
001 00.000
002 00.000
003 00.000
004 00.000
005 00.000
006 00.000
007 00.000
008 00.000
009 00.000
010 00.000
011 00.000
012 00.000
013 00.000
014 00.000
015 00.000
016 00.000
017 00.000
018 00.000
019 00.000
Zelle anklicken, Wert eingeben, mit Enter schreiben.
Adressbus ab
000

Welche Zelle?

Datenbus db
00000

Welcher Wert?

Rechenwerk ALU

Akkumulator acc
00000
=0?

Steuerwerk CU

als Nächstes: pc→ab
Befehlsregister ins
Opcode00 . Adresse000
kein Befehl
Programmzä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
Eigenen Befehl aufnehmen
Protokoll – was ist gerade passiert? (0)
  1. Noch nichts passiert.
Befehlsübersicht – alle Makrobefehle mit ihren Mikrobefehlen
OpcodeBefehlBedeutungMikroprogramm
01TAKE xxxKopiert den Inhalt der Zelle in den Akkumulator. ins→abram→dbdb→accpc++mc:=0
02ADD xxxAddiert den Inhalt der Zelle zum Akkumulator. ins→abram→dbpluspc++mc:=0
03SUB xxxSubtrahiert den Inhalt der Zelle vom Akkumulator (Ergebnis mindestens 0). ins→abram→dbminuspc++mc:=0
04SAVE xxxSpeichert den Akkumulator in der Zelle. ins→abacc→dbdb→rampc++mc:=0
05JMP xxxSpringt zur angegebenen Adresse: Der nächste Befehl wird von dort geholt. ins→pcmc:=0
06TST xxxIst die Zelle 0, wird der nächste Befehl übersprungen.
⚠ Überschreibt den Akkumulator mit dem Zellinhalt!
ins→abram→dbdb→acc=0:pc++pc++mc:=0
07INC xxxErhöht den Inhalt der Zelle um 1.
⚠ Überschreibt den Akkumulator!
ins→abram→dbdb→accacc++acc→dbdb→rampc++mc:=0
08DEC xxxVerringert den Inhalt der Zelle um 1 (mindestens 0).
⚠ Überschreibt den Akkumulator!
ins→abram→dbdb→accacc--acc→dbdb→rampc++mc:=0
09NULL xxxSetzt die Zelle auf 0.
⚠ Setzt auch den Akkumulator auf 0!
ins→abacc:=0acc→dbdb→rampc++mc:=0
10HLT xxxHält das Programm an. stoppmc:=0