Befehle in richtige Reihenfolge bringen

Status
Für weitere Antworten geschlossen.

Study123

Newbie
Registriert
Okt. 2023
Beiträge
1
Hallo, ich habe da mal eine Aufgabe, bei der ich nicht so richtig weiß, ob meine Lösung richtig ist und hoffe das mir jemand dabei helfen kann.

Bringen Sie die folgenden Befehle in die richtige Reihenfolge, sodass dieser Ausschnitt eines Hochsprachenprogramms in Assembler umgesetzt wird.

int a=x+y;
int c=a-c;

Hinweis: Sie können davon ausgehen, dass die Variablen schon als Assemblerprogramm umgesetzt sind.
Ich habe folgende Befehle gegeben, die ich bei1-5 einsetzen muss.

LDA x, STA a, STA c, ADD y, und SUB c

LDA M -> Lädt den AC mit dem Inhalt von M
STA M -> Speichert den Inhalt von AC nach M
ADD M ->Addiert den Inhalt von M zu dem Inhalt von AC
SUB M -> Subtrahiert den Inhalt von M vom Inhalt von AC

Meine Lösung:

1 LDA x
2 STA a
3 ADD y
4 STA c
5 SUB c
 
Schließe dich doch mit Leuten kurz, die dieselbe Aufgabe lösen sollen (Kommilitionen, Mitschüler, ...) oder dem Aufgabensteller oder evtl Tutoren.

Auf jeden Fall ergibt es für mich aber wenig Sinn, 2 vor 3 zu machen. Das Speichern macht man doch jeweils am Ende?

Also nochmal zur Klarstellung: Die Befehle sind "bekannt", nur die Reihenfolge nicht?
 
Die Lösung sieht für mich nicht richtig aus und bei 'Arbeitsspeicher' als Forenbereich bist du auch nicht richtig gelandet ;).
 
Rein von meiner ^^ Logik her, eher so:

LDA x
ADD y
STA a

SUB c
STA c
 
  • Gefällt mir
Reaktionen: IlluminatusUnus, Banned und scoutone
Ne, die Reihenfolge stimmte so nicht. Simulier es doch auf einem Stück Papier. Ist immer gut.

Edit: Einfach die Lösung zu posten ist pädagogisch aber nicht so lehrreich ... Sieht nach Hausaufgabenhilfe aus.
 
Zuletzt bearbeitet von einem Moderator: (Typos)
  • Gefällt mir
Reaktionen: BAGZZlash, Aduasen, MadDog und eine weitere Person
Aus Mathematischer Sicht ist die 2. "Aufgabe" ja schon eine Fangfrage ... eine Formel c=a-c KANN nicht aufgehen da implizit Unlogisch ..... Aber das ist ja nicht Thema hier.
 
Das ist keine Formel ... da steht sinngemäß nimm a, zieh c ab und speicher in c
 
  • Gefällt mir
Reaktionen: Felix# und scoutone
Wenn er daran interessiert ist, seinen Fehler zu verstehen, wird er die Antwort nachvollziehen und daraus etwas lernen. Eine Abhandlung über Befehlsreihenfolgen und Assemblerbefehle wollte ich hier nicht schreiben ^^
Ich hab mit Absicht daruf verzichtet die Antwort zu posten, lediglich die Richtigkeit der bereits geposteten bestätigt
Ergänzung ()

NatokWa schrieb:
Aus Mathematischer Sicht ist die 2. "Aufgabe" ja schon eine Fangfrage ... eine Formel c=a-c KANN nicht aufgehen da implizit Unlogisch ..... Aber das ist ja nicht Thema hier.
Quellcode ist keine Gleichung sondern eine Reihe von Anweisungen ...
 
  • Gefällt mir
Reaktionen: Drexel, Felix#, Banned und eine weitere Person
@Incanus Das stimmt zwar, aber wenn es schon sein Lehrer nicht schafft, wie soll ich das dann vermitteln? 🙂

@Study123 Die Berechnungen finden im AC statt. a+c dienen nur der Speicherung. Also zuerst rechnen, dann speichern. Du hast es umgekehrt.
 
Zuletzt bearbeitet:
scoutone schrieb:
Quellcode ist keine Gleichung sondern eine Reihe von Anweisungen ...

Genau, sonst würde auch x=x+1 keinen Sinn machen.



Kuristina schrieb:
Rein von meiner ^^ Logik her, eher so:

LDA x
ADD y
STA a

SUB c
STA c

Wäre auch meine Lösung bzw. diese hier:

LDA x
ADD y
STA a
LDA a
SUB c
STA c

Aber wahrscheinlich funktioniert es auch ohne erneutes Laden.

@Study123

Du musst darauf achten, dass du immer nur einen Wert in den Speicher laden kannst und dass für die arithmetischen Operationen dann die Variablen verwendet werden zu diesem Wert.

Zur Überprüfung solcher Aufgaben bietet sich eine Simulation des Von-Neumann-Rechners an.

Der hier sollte gehen:
https://homepage.ruhr-uni-bochum.de/daniel.reinert/Software/von_Neumann.htm
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Felix#
Er hat nur genau diese 5 Befehle, und muss diese in die richtige Reihenfolge bringen. Die Lösung von @Kuristina war schon richtig ... einfach mal schrittweise nachvollziehen ...

Der Trick ist ja, dass a ja zur benötigten Zeit schon im AC ist.
 
  • Gefällt mir
Reaktionen: Banned
Was sagt ChatGPT dazu?
 
  • Gefällt mir
Reaktionen: Banned
IlluminatusUnus schrieb:
Er hat nur genau diese 5 Befehle,

Das hatte ich überlesen. Mit vorgegebenen Befehlen ist's natürlich noch einfacher.

Am Ende ist es wahrscheinlich auch sehr hilfreich, sich das einfach aufzuschreiben (also mit den Werten an dem jeweiligen Speicherort), wenn man keine Simulation nutzt (was ich bei größeren Aufgabenstellungen auf jeden Fall empfehlen würde).
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben