Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Suche » Suchergebnis » Hallo Gast [Anmelden|Registrieren]
Zeige Beiträge 1 bis 1 von 1 Treffern
Autor Beitrag
Thema: Indexregister
baker333

Antworten: 0
Hits: 226
Indexregister 16.12.2018 20:23 Forum: Technische Informatik


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...
Zeige Beiträge 1 bis 1 von 1 Treffern