Ist mit ~10 -10 gemeint oder das Einerkomplement zu 10? das Einerkomplement zu 1010 ist doch 0101?
Was das Einerkomplement ist, hängt ganz von der Zahl der Bits ab. 10 kannst du wohl als 1010 darstellen, aber auch z.B. als 00001010. Das Einerkomplement ist je nachdem dann 0101 oder 11110101. Da es um Assembelraufgaben geht, würde ich schätzen, dass eine Zahl jeweils 32 Bit hat. Mit ~10 ist das Einerkomplement von 10 gemeint, mit ~(-10) das Einerkomplement von -10
also ist das Einerkomplement von 10 mit 32 bits gleich 11111111111111111111111111110101 ? was ist dann 166 % ~10 ?
Ist mit ~10 -10 gemeint oder das Einerkomplement zu 10?
Tilde (~) bedeutet Negation in Sprachen wie C. Ich nehme mal
an, hier ist das Einerkomplement gemeint.
das Einerkomplement zu 1010 ist doch 0101?
Yep.
also ist das Einerkomplement von 10 mit 32 bits gleich 11111111111111111111111111110101 ?
Sehe ich auch so.
was ist dann 166 % ~10 ?
Sollte 166 sein.
11111111111111111111111111110101_2 = 4294967285_10
und
166 % 4294967285 = 166 [img]
http://www.fb18.de/gfx/22.gif[/img]
Das Ergebnis hängt davon ab, ob man die Zahlen vorzeichenbehaftet interpretiert oder nicht (weil es verschiedene Divisionsbefehle für vorzeichenlos und vorzeichenbehaftet gibt).
int a = 166;
int b = ~10;
int c = a%b;
wird wahrscheinlich (nicht getestet) etwas anderes ergeben als
unsigned int a = 166;
unsigned int b = ~10;
unsigned int c = a%b;
Davon abgesehen ist die Aufgabenstellung verwirrend, da 166 % ~10 ganz sicher kein "Assemblerausdruck" ist. Und nach "Die Aufgaben bestehen darin" fehlt ein Komma [img]
http://www.fb18.de/gfx/24.gif[/img]
und wie soll ich die Aufgabe dann eurer Meinung nach lösen?
Ich würde die Zahlen vorzeichenbehaftet interpretieren, da die Verwendung des Minus-Zeichens auf dem Aufgabenblatt nahelegt, dass auch negative Zahlen erlaubt sind (muss aber wie gesagt nicht).
166 % ~10 ist definitiv ein Ausdruck , den man auch verwenden kann:
Beispiel mov 166 % ~ 10 , %r1
das geht natürlich auch mit set
Dann habe ich nichts gesagt [img]
http://www.fb18.de/gfx/16.gif[/img]
Wie sieht denn ein ganzen programm, das 166 % ~10 berechnet aus? Und ist das Teil der Aufgabe?
Ich bin etwas verloren, bitte helft mir. Danke
mov 166 % ~10, %l0
Einfacher geht's doch nicht mehr, oder?
Macht mov nicht nur Register/Register? Ansonsten lieber set wegen den 32 Bit? Nebenbei glaube ich nicht, dass das so gewollt ist, dass der Assembler selber schon das Ergebnis ausrechnet, anstatt eines selbstgebauten Programmes [img]
http://www.fb18.de/gfx/25.gif[/img]
Macht mov nicht nur Register/Register?
Nein. mov ist ein synthetischer Befehl, welcher mit Registern und Direktwert funktioniert.
Ansonsten lieber set wegen den 32 Bit?
Es sind doch auf keinen Fall mehr als 9 signifikante Bits, wenn ich den Divisionsrest von 166 durch irgendwas berechnen will.
Nebenbei glaube ich nicht, dass das so gewollt ist, dass der Assembler selber schon das Ergebnis ausrechnet, anstatt eines selbstgebauten Programmes [img]http://www.fb18.de/gfx/25.gif[/img]
Ich hab's erst auch nicht geglaubt, aber auf dem Aufgabenzettel steht, dass man die Werte der Assemblerausdrücke bestimmen soll. Von Berechnen ist da keine Rede.
166 ~ 10 = 166
-166 ~ 10 = -166
166 ~-10 = 4
-166 ~-10 = -4
Weiss jemand warum ich diese Ergebnisse herausbekomme?