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

Informatiker Board » Themengebiete » Technische Informatik » Indexregister » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Der letzte Beitrag
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...