Seite 1 von 1

WIN102, Aufgabe 4d

Verfasst: 13.06.05 10:16
von Jette
Hallo zusammen,

kann mir eventuell jemand bei der folgenden nervigen Aufgabe helfen ???

Schreiben Sie ein Programm in Assemblersprache zur Abarbeitung der Formel (a+b) * (a-b)

Als Operationen stehen Ihnen die Befehle LOAD, STORE, ADD, SUB, MUL zur Verfügung. Die Werte der Variablen a und b (jeweils 1 Byte) stehen in den Speicherzellen ab hex. A0. Eventuelle Hilfsgrößen sollen ab hex. B0 abgelegt werden. Das Ergebnis soll in hex. C0 stehen. Die Programmbefehle (je 2 Bytes) stehen in den Zellen ab hex. 00. Wie viele Bytes benötigt das Programm im Speicher (inkl. Daten und Hilfsgrößen)?

Also ich hab mir das jetzt wie folgt gedacht, da binomische Formel:

Im Arbeitsspeicher steht:

00 LOAD A0
01 MUL A0
03 STORE B0

00 LOAD A1
01 MUL A1
03 STORE B1

00 LOAD B0
02 SUB B1
03 STORE C0

ist das so ok oder fehlt da noch was??? und wieviele bytes hat das ding im Speicher?? wie kann ich denn das berechnen? Vielleicht weiß ja jemand von euch einen Lösungsansatz dazu - das wäre echt klasse..

Verfasst: 14.06.05 12:41
von purple-haze
Hmm, ich bin auch grade an dem Thema, hab das allerdings etwas anders angegangen als Du.

Bei mit sieht das so aus:

00 LOAD A1
01 MUL A1
02 STORE B0
03 LOAD A0
04 MUL A0
05 SUB B0
06 STORE C0

Hast Du schon was konkretes gefunden?

Verfasst: 14.06.05 16:46
von Gast
purple-haze hat geschrieben:Hmm, ich bin auch grade an dem Thema, hab das allerdings etwas anders angegangen als Du.

Bei mit sieht das so aus:

00 LOAD A1
01 MUL A1
02 STORE B0
03 LOAD A0
04 MUL A0
05 SUB B0
06 STORE C0

Hast Du schon was konkretes gefunden?
Das wäre (a*a)-(b*b)

Außerdem braucht man 2 Speicherstellen für den Befehl.


00 LOAD A0
02 ADD A1
04 STORE B0
06 LOAD A0
08 SUB A1
0A MUL B0
0C STORE C0

Verfasst: 14.06.05 20:17
von Hypersonic79
purple-haze hat geschrieben:Hmm, ich bin auch grade an dem Thema, hab das allerdings etwas anders angegangen als Du.

Bei mit sieht das so aus:

00 LOAD A1
01 MUL A1
02 STORE B0
03 LOAD A0
04 MUL A0
05 SUB B0
06 STORE C0

Hast Du schon was konkretes gefunden?
Hi purple-haze

Danke für deine Mail von heut morgen...
Mein Kollege war auch ganz verwuendert, wie klein die Welt ist....
komisch, die heißen auch noch gleich, dein Kollege und meiner..;-
)

Ich habe die Aufgaben schon zurück und folgendes wurde bei mir als richtig bewertet:

00 LOAD A0
02 ADD A1
04 STORE B0
06 LOAD A0
08 SUB A1
10 STORE B1
0A LOAD B0
0C MUL B1
0E STOR C0

Ich hoffe das hilft euch weiter!!

Wie gesgat benotet zurück ohne Fehler in dieser Aufgabe!

Gruß
Hypersonic79

Verfasst: 14.06.05 21:11
von Gast
00 LOAD A0
02 ADD A1
04 STORE B0
06 LOAD A0
08 SUB A1
-> 10 STORE B1
-> 0A LOAD B0
-> 0C MUL B1
0E STOR C0

Nicht notwendig, kann durch MUL B0 ersetzt werden.

Verfasst: 01.07.05 07:34
von purple-haze
Die Formel ist die 3. Binomische Formel. Und die ganzen Zwischenschritte brauche ich schlicht weg nicht. Aufgelöst lautet der String a² - b².
Das wäre (a*a)-(b*b)
Und was ist a*a - b*b ?!?

Schicke die Lösungen heute auch ein. Mal schauen was dabei raus kommt! :roll:

Verfasst: 01.07.05 07:49
von Gast
(a*a)-(b*b) ist dasselbe wie a*a-b*b !!! Die Regel Punkt vor Strich sollte man schon kennen ,wenn man studiert!!!!

Verfasst: 16.09.05 23:45
von Gast
Hi,

wie viele Bytes benötigt denn das Programm?

Verfasst: 20.10.05 20:56
von dnitsche
00 LOAD A0
02 ADD A1
04 STORE B0
06 LOAD A0
08 SUB A1
10 STORE B1
0A LOAD B0
0C MUL B1
0E STOR C0

das programm hat warscheinlich 23 bytes. Keine Ahnung ob das stimmt.

Pro befehl 2 bytes. 2*9=18
Pro a + b je 1 byte = 2
Je Store nochmal 3

hab ich da nen denkfehler fehlt da noch was?

Verfasst: 20.10.05 21:06
von andreas_67
Hallo,

je Befehl 2 Byte, macht bei 7 nötigen Befehlen 7 * 2 Byte = 14 Byte nur für die Befehle. Die Befehle werden wie folgt benötigt:

(LOAD = 2x, ADD = 1x, STORE =2x, SUB = 1x und MUL = 1x)

So, jetzt fehlen uns noch die beiden vorgegebenen Variablen zu je einem Byte. Macht also nocheinmal 2 Byte. Macht bis jetzt 14 + 2 Byte = 16 Byte.

Bei den Hilfsgrößen ist es nun so das nur eine Hilfsvariable benötigt wird (ich hatte auch zwei in meiner Variante, aber das war leider falsch. Es geht wirklich mit einer.)

Da unsere Variablen je ein Byte benötigen haben wir nun 16 + 1Byte = 17 Byte.

Bleibt nur noch unser Ergebnis (ist ja auch nur eine Variable) also noch ein Byte.

Also haben wir 17 + 1Byte = 18 Byte Fertig "HURA"

Gruß Andreas

Verfasst: 20.10.05 21:14
von dnitsche
ich denke du gehst von deinem programm aus oder?

da bei dem Programm das der Kollege angegeben hat 3x load ist ist doch die byte zahl auch hüher du hattes nur 2xmal load angegeben. Ausserdem ist 3 mal store das heisst ich hab 3 verschieden zahlen (je 1 byte).

oder nicht?

Verfasst: 20.10.05 21:22
von andreas_67
Hallo,

ja sicher, Du hast schon Recht. Ja mehr Befele und Variablen um so höher auch die Bytezahl.

Aber so wie ich es hier geschrieben habe, ist die Anzahl der Befehle und Variablen schon um meinen eigenen Fehler bereinigt. Will sagen so wie es hier steht will der Korrektor die Lösung sehen.

Gruß Andreas.

Verfasst: 20.10.05 21:46
von dnitsche
hmm. Ich weiss auch nicht in der Aufgabe steht das man ein Programm schreiben soll. Es steht dann drin das man noch benennen soll wieviel byte benötigt wird.

Eigentlich steht nix von drin, dass das programm so wenig byte wie möglich haben muss. Obwohl es eigentlich schon am sinnvollsten wäre es mit so wenig Speicher wie möglich zu machen. Aber ob das dann gleich als falsch gewertet wird. Solang es funktioniert sollte es denen hoffentlich egal sein. Hab jetzt auch keinen Bock mehr mir weiter Gedanken zu machen. Ich schick das einfach so ab. Zeit ist Geld... Und mir läuft die Zeit davon... Scheisse warum müssen das auch so viele Hefte sein... :cry:

Verfasst: 20.10.05 21:51
von andreas_67
Hi,

ja OK, Dein Einwand ist berechtigt.

Wenn das Programm funktioniert ist es wahrscheinlich egal wie viele Befehle und Variablen Du verwendest. :D

Andreas.

Verfasst: 25.11.05 19:03
von dnitsche
Übrigens wurde rals richtig bewertet. 23 bit ist ok. Es geht also nur darum ob das Programm läuft scheissegal ob es nun wenig oder viel bit hat.....:-)