Theoretische und technische Informatik - ganz praktisch
Herzlich willkommen auf der Question/Answer-Plattform zu Grundlagen der Informatik II. Wir wünschen Ihnen viel Spaß beim Lernen und Diskutieren!
Loggen Sie sich mit Ihrem KIT-Account (u...) ein, um loszulegen!
Beachten Sie auch diese Informationen zum Schnelleinstieg.
(Nicht-KIT-Studierende beachten bitte diese Informationen.)

Schöne Ferien!
 

 

Aufgabe 84

0 Punkte
34 Aufrufe
Hallo

Ich habe Probleme mit der Assembler sprache bzw mit Aufgabentypen wie diese

Vielleicht kann mir jemand erklären wie man diese Aufgabe lösst und was die einzelnen Zeilen bedeuten

 

Ich bedanke mich für jede Hilfe
Gefragt 6 Feb in Band II, Kapitel 7 von uvlpj uvlpj Lernwillige(r) (510 Punkte)  

Eine Antwort

0 Punkte

Hallo uvlpj,

Bei der Assemblersprache bedeutet jede Zeile eine Aktion, die du ausführen musst. Zu Beginn steht immer der Typ, der meistens recht selbsterklärend ist. Z.B. STORE - speichern, SUBTRACT - abziehen,... Danach stehen bis zu drei Zeichen. Die ersten beiden sind Quellregister, also aus welchen Tabellen du deine(n) Wert(e) ausliest, das dritte ist dein Zielregister, d.h. wo du das Ergebnis dieser Zeile speicherst. Wenn du einen # hast, lädst du direkt die Zahl, die dahinter steht anstatt einen Wert aus dem Register.
Dann gibt es noch Schleifen, die mit einem L bzw. LOOP angezeigt werden. Diese werden solange durchlaufen, bis die Endbedingung JUMPNOTZERO nicht mehr erfüllt ist. Also falls das Feld in der JNZ Zeile 0 ist, läufst du weiter im Code, ansonsten wird die Schleife wiederholt.

Am Besten machst du dir zu Beginn klar, wie viele Register du hast und malst sie dir auf. Wenn in einem Register ein neuer Wert gespeichert wird, musst du den alten löschen (durchstreichen) und mit dem Neuen weiterarbeiten.

Die Aufgaben 81 bis 86 im Übungsbuch beziehen sich auf Assembler, genauso wie eine Aufgabe aus Tut 6. Schaue dir die nochmal an.

Ich hoffe, es ist jetzt ein bisschen klarer geworden, sonst frag gerne noch einmal konkreter.

Viele Grüße
Hannah (Tutorin)
Beantwortet 6 Feb von uneoo uneoo Eins-Komma-Null-Anwärter(in) (1,920 Punkte)  
Ich verstehe zum Beispiel jetzt Im Tut 6 nicht wie in der Anweisung in Zeil 2
R2*R1  durchgezogen wird, es wurde doch nichts in Register 1 gespeichert.
Also z.B ich habe 3 Zahlen 1,2,3 dann ist im 1. Schritt die Zahl 1 in Register 2 ?
Hallo,
Schau dir mal die Aufgabe a) an. Dort steht: "Zu Beginn stehe in Register R1 ein Wert n>0, n element IN. Also steht hier irgendein Wert drin, den du für dein Beispiel selbst wählen kannst. Ich finde z.B. 4 praktisch, weil man dann ein paar Durchläufe benötigt, aber nicht zu viele.
In Zeile 1 deines Codes lädst du dann eine 1 (durch den #) in Register R2.
Zu Beginn der Schleife multiplizierst du den Inhalt von R2 (1) mit dem Inhalt von R1 (z.B. 4) und speicherst ihn in R2 ab. Daher verändert sich der Wert in R2 von 1 zu 4. Dann machst du weiter mit Zeile 3 usw.

Deine dritte Zeile habe ich leider nicht verstanden, aber hoffentlich hat sich die Frage damit geklärt.
Hallo erstmal vielen Dank
ich glaube ich habe es jetzt verstanden, um nochmal sicher zugehen bei der Aufgabe 84
im Register 1 befindet sich eine 4, diese wird auch in R2 und R3 gespeichert (durch LOAD) .
In der Schleife wird jetzt so vorgegangen das der Inhalt von R2 -1 subtrahiert wird, der Betrag wird dann in R2 gespeichert und mit R3 addiert was dann in R3 gespeichert wird, das passier solange bis R2 null ist
Hallo,
ich bin mir nicht sicher, ob wir aneinander vorbeigeredet haben. Ich hatte mich in meiner vorigen Antwort auf die Aufgabe im Tut 6 bezogen.

Jetzt zur 84: Hier lädst du eine Zahl 1 (Zeile 1) und speicherst sie in R3 (Zeile 2). Weiterhin ist definiert, dass a in Register R1 und b in R2 steht (siehe Aufgabe). In der dritten Zeile lädst du b aus R2 und gehst dann über in die Schleife. Falls R2 gleich null, hört der Prozess auf. Sonst lädst du die Zahl in R3 (Zeile 5), multiplizierst sie mit a aus R1 (Zeile 6) und speicherst das Ganze in R3 (Zeile 7). Dann lädst du - wie du geschrieben hast - den Inhalt von R2 (Zeile 8), ziehst 1 ab (Zeile 9) und speicherst das Ganze in R2 (Zeile 10). Dann machst du die Schleife erneut.
Was du geschrieben hast am Ende macht für mich keinen Sinn, dass man R2 und R3 addiert... Schaue dir das nochmal an.
Probiere diese Aufgabe mal mit a und b aus, z.B. 4 und 5, das ist noch machbar in akzeptabler Zeit per Hand ;)

Wenn ich deine Frage noch nicht genau beantwortet habe, schreibe einfach noch einmal.

Viele Grüße
Hannah
Vielen lieben Dank für deine Geduld
Jetzt habe ich es wirklich verstanden ;) (ich habe mich wohl falsch ausgedrückt addieren ist natürlich falsch)
Sehr gerne. Es freut mich, wenn du es verstanden hast.
Viel Erfolg beim Lernen!
Viele Grüße
Hannah
...