Die größere Zahl
LeitfrageWie trifft ein Programm eine Auswahl zwischen zwei Werten?
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
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 |