In diesem Aufgabenset geht es darum, sich mit dem Instruction Set vertraut zu machen. Stelle sicher, dass du es zur Hand hast. Den eigentlichen LMC benötigst du noch nicht!
Beantworte die Fragen einigermassen ausführlich und in Deutsch. Schreibe nicht einfach Text, den du nicht verstehst, aus dem Instruction Set ab.
1) In welcher Sprache ist der Befehl LDA 42
geschrieben? Was bedeutet er?
Lösung
Assemblersprache. Lade die Zahl, die an Speicherposition 42 gespeichert ist, in den Akkumulator. Der Akkumulator ist das Register (ganz kleiner Speicher), in dem das Resultat der letzten Rechnung gespeichert wird.
2) Was bedeutet STA 91
?
Lösung
Speichere die Zahl, die aktuell im Akkumulator ist, an Speicherposition 91.
3) In welcher Sprache ist der Befehl 00011 1000011
geschrieben? Was bedeutet er?
Lösung
Maschinensprache. In Assemblersprache übersetzt: STA 67
, ähnlich wie in Aufgabe oben.
4) Was haben die beiden Befehle LDA
und STA
gemeinsam? Was ist der Unterschied?
Lösung
Gemeinsamkeit: Beide benötigt man, um Zahlen zwischen Akkumulator uns Speicher austauschen zu können.
Unterschied: Die 'Richtung'.
5) Übersetze von Assemblersprache in Maschinensprache: BRZ 33
Lösung
6) Übersetze von Maschinensprache in Assemblersprache: 01000 1010010
Lösung
BRP 82
.
Was genau BRP bedeutet, ist für den Moment egal. Dies schauen wir dann später an.
7) Was bedeutet 00001 1010101
?
Lösung
Addiere (00001
bedeutet ADD
) den Wert, der an Speicheradresse 1010101 (also 85) steht, zu dem Wert, der bereits im Akkumulator steht.
8) Subtrahiere von der Zahl, die aktuell im Akkumulator steht diejenige Zahl, die an Speicheradresse 55 steht. Vereinfacht: (Akkumulator) - (Wert an Speicheradresse 55). Schreibe die zugehörige Zeile Assemblercode?
Lösung
Das Instruction Set des LMC ist sehr kurz, es beinhaltet insgesamt nur 11 verschiedene Befehle. Diejenigen für moderne CPUs sind deutlich umfangreicher.
Vielleicht ist dir aufgefallen, dass im Instruction Set des LMC nur die beiden mathematischen Operationen ADD
$(+)$ und SUB
$(-)$ vorkommen. Heisst dies, dass man nicht multiplizieren kann?
Lösung Teil I
Nein. Es ist problemlos möglich, Zahlen zu multiplizieren, man muss einfach einen kleinen Trick anwenden. Welchen?
Lösung Teil II
Die Multiplikation ist nichts anderes, als eine Reihe von Additionen:
$$5 \cdot 7 = 5 + 5 + 5 + 5 + 5 + 5 + 5$$
Um zu Multiplizieren muss man also einfach mehrfach hintereinander Addieren.
Wie kann man eine solche mehrfaches Addition umsetzen im LMC? Welche Befehle verwendet man dafür? Notiere einfach die grobe Idee und nicht den zugehörigen Assemblercode.
Lösung Teil III
Man benötigt eine Schleife / Loop. Die Idee ist, dass man die erste Addition durchführt und nachher wieder zurückspringt usw. Sobald man die Addition genug oft wiederholt hat, springt man nicht mehr zurück. Dafür benötigt man die „Branch-„Befehle (BRA, BRZ, BRP
). Wir werden uns etwas später genauer mit diesen beschäftigen.
Im Zusammenhang mit Computern liest man oft die Begriffe x86, x64 oder ARM. Was bedeuten diese?