Seite 1 von 1

Hausübung 1

Verfasst: 2. Nov 2010 17:26
von Nezir
Landen deklarierte Variablen im Speicher oder im Register?


MfG

Re: Hausübung 1

Verfasst: 2. Nov 2010 17:36
von patrik_s.stud.tu
Was genau meinst du? Welche deklarierten Variablen? a-e?

Re: Hausübung 1

Verfasst: 2. Nov 2010 17:43
von Nezir
Ja, genau (a-e).

Ich hab noch ne zweite Frage zu (div c). Wenn man diesen Befehl aufruft, werden da bestimmte Register automatisch angesprochen? Weil letztendlich ruft man den Befehl ja nur auf der Variablen auf.

Re: Hausübung 1

Verfasst: 2. Nov 2010 17:46
von sensei
Guck mal hier: DIV
Das hat mir geholfen.

Re: Hausübung 1

Verfasst: 2. Nov 2010 18:25
von FGB
Ich habe a-e mal so gewertet, als seien sie im Speicher gegeben.

An welcher Aufgabe ich gerade ein bisschen hänge ist die 2.
Ich darf ja keine konditionalen Befehle benutzen. Sprich kein Vergleiche. Hmmm

Also bei

Code: Alles auswählen

0011
0101
0110
1111
wird eine 0 von rechts drangehängt, oder? Das wäre doch dann movzbl oder?

Bei

Code: Alles auswählen

0001
0010
0100
0111
1011
1101
müsste dann die 1 von rechts drangehängt werden. In dem Fall movsbl.

Wie prüfe ich jetzt auf eine gerade bzw. ungerade Anzahl. Das ist sicherlich sooo enifach und ich komm gerade nicht drauf.

Hmmm

Re: Hausübung 1

Verfasst: 2. Nov 2010 21:13
von ivoch
FGB hat geschrieben:Ich habe a-e mal so gewertet, als seien sie im Speicher gegeben.

An welcher Aufgabe ich gerade ein bisschen hänge ist die 2.
Ich darf ja keine konditionalen Befehle benutzen. Sprich kein Vergleiche. Hmmm

Also bei

Code: Alles auswählen

0011
0101
0110
1111
wird eine 0 von rechts drangehängt, oder? Das wäre doch dann movzbl oder?
Ja, es wird eine 0 von Rechts drangehängt und nein, movzbl ist hier der falsche Befehl. movzbl macht Folgendes:

Code: Alles auswählen

Gegeben: 1010 1001
Nach Anwenden von movzbl: 0000 0000 0000 0000 0000 0000 1010 1001 (also aus dem Byte wird ein Long gemacht, indem 24 Nullen hinzugefügt werden.
Die anderen movz Befehle funktionieren genauso, nur ist die Anzahl von Nullen unterschiedlich (movzbw - 8 Nullen, movzwl - 16 Nullen) und auch die Länge des zu erweiternden Operanden (movzbw - 8 Bits, movzwl - 16 Bits)

FGB hat geschrieben:Bei

Code: Alles auswählen

0001
0010
0100
0111
1011
1101
müsste dann die 1 von rechts drangehängt werden. In dem Fall movsbl.
Die movs Befehle funktionieren genauso wie die movz Befehle oben mit dem einzigen Unterschied, dass bei negativen Zahlen Einsen hinzugefügt werden und nicht Nullen.

FGB hat geschrieben:Wie prüfe ich jetzt auf eine gerade bzw. ungerade Anzahl. Das ist sicherlich sooo enifach und ich komm gerade nicht drauf.
Hier kann ich dir leider nicht helfen, denn die Lösung IST recht einfach (wenn auch etwa 10-15 Zeilen lang) und wenn ich überhaupt etwas sagen würde, dann würde ich dir so gut wie alles verraten ;)

Re: Hausübung 1

Verfasst: 2. Nov 2010 22:25
von SaschaWinf
ivoch hat geschrieben:Hier kann ich dir leider nicht helfen, denn die Lösung IST recht einfach (wenn auch etwa 10-15 Zeilen lang) und wenn ich überhaupt etwas sagen würde, dann würde ich dir so gut wie alles verraten ;)
Der gesammte Code kann in 11 Zeilen geschrieben werden. Es geht also auch in weniger schritten.

Tip.: Betrachte jede 1 für sich und zähle sie dann irgendwie ;) (klingt nicht sehr hilfreich, aber ist es)

Re: Hausübung 1

Verfasst: 2. Nov 2010 22:42
von FGB
SaschaWinf hat geschrieben:
ivoch hat geschrieben:Hier kann ich dir leider nicht helfen, denn die Lösung IST recht einfach (wenn auch etwa 10-15 Zeilen lang) und wenn ich überhaupt etwas sagen würde, dann würde ich dir so gut wie alles verraten ;)
Der gesammte Code kann in 11 Zeilen geschrieben werden. Es geht also auch in weniger schritten.

Tip.: Betrachte jede 1 für sich und zähle sie dann irgendwie ;) (klingt nicht sehr hilfreich, aber ist es)
Danke für eure Antworten :)
Zählen wollte ich auch, aber ich muss ja irgendwie prüfen, ob "dort" eine 1 steht. Ist das nicht schon wieder ein Vergleich, sprich ein konditionaler Befehl? Das darf ich ja nicht benutzen. Deswegen überlege ich die ganze Zeit, wie ich das am Besten anstelle :D

*grübel*

Grüße und danke,
Felix

Re: Hausübung 1

Verfasst: 2. Nov 2010 22:49
von cofi
FGB hat geschrieben:Ist das nicht schon wieder ein Vergleich, sprich ein konditionaler Befehl? Das darf ich ja nicht benutzen.
Ja, Spruenge braucht man deshalb aber nicht. Es gibt auch Befehle die im Erfolgsfall das richtige haben und sonst auch nichts kaputtmachen.

Re: Hausübung 1

Verfasst: 2. Nov 2010 23:41
von ivoch
SaschaWinf hat geschrieben:
ivoch hat geschrieben:Hier kann ich dir leider nicht helfen, denn die Lösung IST recht einfach (wenn auch etwa 10-15 Zeilen lang) und wenn ich überhaupt etwas sagen würde, dann würde ich dir so gut wie alles verraten ;)
Der gesammte Code kann in 11 Zeilen geschrieben werden. Es geht also auch in weniger schritten.

Tip.: Betrachte jede 1 für sich und zähle sie dann irgendwie ;) (klingt nicht sehr hilfreich, aber ist es)
Es würde mich interessieren, wie du alles in 11 Zeilen hingekriegt hast. Kannst du mir mal deinen Code per PN schicken? :)

Re: Hausübung 1

Verfasst: 3. Nov 2010 08:37
von SaschaWinf
ivoch hat geschrieben:
SaschaWinf hat geschrieben:
ivoch hat geschrieben:Hier kann ich dir leider nicht helfen, denn die Lösung IST recht einfach (wenn auch etwa 10-15 Zeilen lang) und wenn ich überhaupt etwas sagen würde, dann würde ich dir so gut wie alles verraten ;)
Der gesammte Code kann in 11 Zeilen geschrieben werden. Es geht also auch in weniger schritten.

Tip.: Betrachte jede 1 für sich und zähle sie dann irgendwie ;) (klingt nicht sehr hilfreich, aber ist es)
Es würde mich interessieren, wie du alles in 11 Zeilen hingekriegt hast. Kannst du mir mal deinen Code per PN schicken? :)
Gerne nach dem Abgabetermin ;) schreib mir am besten dann nochmal eine PN, ich versuch aber dran zu denken