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!
 

 

Kein Ansatz bei Ausgabe angeben und Funktion darstellen in Assemblersprachen

+2 Punkte
232 Aufrufe
Hallo,

wie komme ich darauf, dass in der a) die Lösung n^2 ist  und in b) x^2 für 1...8 ? Darüber hinaus wollte ich fragen, ob es denn "Tricks oder Tipps" gibt, die Funktion bzw. eine solche Ausgabe mit n ablesen zu können, denn bei Eingaben mit Zahlen für Variablen, ist das ganze relativ einfach. Ich komme mit den "n " nicht klar.

Danke!
Gefragt 11, Feb 2016 in 2015-H-10 von uodjt uodjt Eins-Komma-Null-Anwärter(in) (3,710 Punkte)  

Eine Antwort

+3 Punkte
 
Beste Antwort
Hallo,

ganz allgemein gibt es hier nur ein paar Hilfsmittel, die ich die empfehlen kann. Erstens würde ich deinen Ansatz mit konkreten Zahlen ruhig weiter verfolgen, am besten erstellst du dir dazu eine Tabelle, in der die jeweils aktuellen Werte der Speicherstellen bzw. Register eingetragen werden. Nach zwei bis drei verschiedenen Beispielen bekommt man doch zumeist einen guten Eindruck, was das Programm berechnet (siehe auch die Tut-Aufgaben dazu).

Einfacher Grundsatz (auch hier mal wieder): Üben, dann kommt das Gefühl dafür!

Zur Aufgabe:

Für die a) ist ja insbesondere der Teil der "innerloop" interessant, dank der Kommentare nebendran wird recht schnell klar, dass hier die Zahl (n) so oft aufaddiert wird, bis der Zähler R1 bei 0 steht. Da R1 zu Beginn ebenfalls n ist, sind das n Durchläufe, also n+n+n+n+... (n-mal) -> n^2.

Bei der b) wird dann erst wirklich die indirekte Adressierung benötigt. Am Ende der "innerloop" (JUMPZERO) kommen wir zu "store". Dort wird in der ersten Zeile der Wert in R3 (unser aktuelles Ergebnis n^2) indirekt in R2 gespeichert, also in das Hauptspeicherfeld, dessen Adresse in R2 enthalten ist. Da R2 = n ist, wird unser Ergebnis n^2 an die Hauptspeicherstelle n gespeichert. Danach wird dann R8 von n auf n-1 verringert und die "outerloop" startet mit diesem Wert von vorn.

Soweit zu diesem Programm, allgemein einfach ein paar Mal üben, die Funktionen abzulesen (Tipp: Es kommt wohl kaum sowas wie 3x^2+7x+5 raus, die Funktionen sind eher schmal gehalten ;) ).

Viele Grüße

Max (Tutor)
Beantwortet 11, Feb 2016 von udebm udebm Tutor(in) (105,070 Punkte)  
ausgewählt 12, Feb 2016 von uodjt uodjt
Vorgehen
...