Game Over?

LeitfrageWie reagiert ein Programm auf zwei verschiedene Fälle?
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
020 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
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