Indexregister |
16.12.2018, 20:23 | Auf diesen Beitrag antworten » |
baker333 | Indexregister Meine Frage: Hallo, ich bin komplett neu in der Informatik und habe Probleme mit der ersten Selbsttestaufgabe des Studiums: In Speicherzelle 0 steht die Startadresse und in Speicherzelle 1 steht die Länge eines Speicherbereichs, der kopiert werden soll. Die Startadresse des Zielbereichs steht in Speicherzelle 2. Skizzieren Sie ein Programm, d.h. eine Folge von Maschinenbefehlen, die den Speicherbereich kopiert. Hierbei sollen Lade? und Schreib-Befehle die Speicheradresse als Summe aus einem Registerinhalt und einer Konstanten (Offset) bilden. Alle Register können als Daten? oder als Adress-Register benutzt werden. Meine Ideen: Folgende Lösung wird angegeben. Im Skript wird lediglich vorher erklärt was es für Prozessorregister gibt. Wieso man allerdings R4 zu Anfang definiert ist mir völlig schleierhaft. Herzlichen Dank! Lösung Subtrahiere R4 = R4 - R4 ; R4 enthält jetzt Wert 0 Lade R1 mit dem Inhalt der Speicherzelle mit Adresse R4 + 0 ; R1 enthält Inhalt der Speicherzelle 0 Lade R2 mit dem Inhalt der Speicherzelle mit Adresse R4 + 1 ; R2 enthält Inhalt von Speicherzelle 1 Lade R3 mit dem Inhalt der Speicherzelle mit Adresse R4 + 2 ; R3 enthält Inhalt von Speicherzelle 2 ; die folgenden 6 Befehle bilden eine Schleife. ; R1 enthält stets die Adresse der aktuell zu kopierenden Speicherzelle ; R3 enthält stets die Ziel-Adresse der aktuell zu kopierenden Speicherzelle ; R2 enthält stets die noch verbleibende Anzahl von zu kopierenden Speicherzellen Lade R5 mit dem Inhalt der Speicherzelle mit Adresse R1 + 0 ; R5 enthält jetzt ein Element des Blocks Speichere R5 in die Speicherzelle mit Adresse R3 + 0 ; Schreibe Element an Zieladresse Addiere R1 = R1 + 1 ; erhöhe R1, d.h. zeigt auf nächstes Element des Blocks Addiere R3 = R3 + 1 ; erhöhe R3 Subtrahiere R2 = R2 - 1 ; erniedrige R2, d.h. reduziere verbleibende Blocklänge Springe um 6 zurück falls Ergebnis der Subtraktion nicht 0 ; Falls Subtraktion nicht 0 ergibt, Rücksprung zu Lade R5... |
|
|