FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Technische Informatik

T3 Blatt 7

T3 Blatt 7 2005-12-16 10:55
Anonymer User
Moin,

eigentlich sollte die Aufgabe ja ganz einfach sein, aber irgendwie funktioniert das bei mir nicht. Kann mir jemand sagen was ich falsch mache?

[EditTri: Code gelöscht, da abzugebende Übungsaufgabe]

Re: T3 Blatt 7 2005-12-16 11:10
UncleOwen
aber irgendwie funktioniert das bei mir nicht.

Was für eine detaillierte Fehlerbeschreibung…

Re: T3 Blatt 7 2005-12-16 11:23
Anonymer User
aber irgendwie funktioniert das bei mir nicht.

Was für eine detaillierte Fehlerbeschreibung…

Bekomme die gleiche Zahl raus, die ich eingegeben habe. Genug Details?

Re: T3 Blatt 7 2005-12-16 15:22
georg
aber irgendwie funktioniert das bei mir nicht.

Was für eine detaillierte Fehlerbeschreibung…

Bekomme die gleiche Zahl raus, die ich eingegeben habe. Genug Details?

Nicht ganz. Wenn ich mich richtig erinnere, müsste das
Ergebnis in %o0 gespeichert werden, damit man es in C
von der Funktion als Rückgabewert entgegennehmen kann.
Heißt "Bekomme die gleiche Zahl raus, die ich eingegeben
habe", dass der Rückgabewert (d.h. %o0) immer x ist, oder
dass tatsächlich in %o1 wieder x drin steht? (Habe mir den
Code nicht angesehen, btw).

Edit: Genereller Tip: Bei solchen Fragen ist es immer
günstig, ein Programm anzugeben, das eine Ausgabe macht
und dann etwa dazu zu schreiben: "Das Programm sollte X
ausgeben, es gibt aber Y aus. Wo liegt das Problem?".
Damit verhinderst du, dass jemand, der antworten könnte,
das deshalb nicht tut, weil er keine Lust hat, zu raten,
was dir an deinem Programm nicht gefällt [img]http://www.fb18.de/gfx/28.gif[/img]

Re: T3 Blatt 7 2005-12-17 19:59
Anonymer User
ich hab noch immer keine Ahnung wie man diese Aufgabe angehen soll ->
wohl irgendwas mit sll oder srl oder sra ?
Wie sprecht man aber damit nur eine Stelle an, bzw bei sll fällt doch links informationen weg… ich weiss einfach nicht [img]http://www.fb18.de/gfx/19.gif[/img]

Re: T3 Blatt 7 2005-12-17 20:08
Fred
ich hab noch immer keine Ahnung wie man diese Aufgabe angehen soll
Du musst folgendes können:
- einzelne Bits isolieren
- einzelne Bits löschen
- Register hin- und herschieben
- einzelne Bits schreiben

Was davon ist Dir nicht klar? Eine Musterlösung kann ich hier leider nicht posten [img]http://www.fb18.de/gfx/25.gif[/img]

Re: T3 Blatt 7 2005-12-17 20:32
Anonymer User
ich hab noch immer keine Ahnung wie man diese Aufgabe angehen soll
Du musst folgendes können:
- einzelne Bits isolieren
- einzelne Bits löschen
- Register hin- und herschieben
- einzelne Bits schreiben

Was davon ist Dir nicht klar? Eine Musterlösung kann ich hier leider nicht posten [img]http://www.fb18.de/gfx/25.gif[/img]

alles was mit einzelnen bits geht..

Re: T3 Blatt 7 2005-12-17 21:10
Fred
Um an ein einziges Bit ranzukommen musst Du mit einer Bitmaske und-verknüpfen, in welcher nur ein einziges Bit auf 1 gesetzt ist:

00101010110101010010101101011010 Beispielwert & 00000000000000000000000001000000 Bitmaske ---------------------------------- 00000000000000000000000001000000 Ergebnis Das Ergebnis entspricht der Bitmaske, falls das Bit im Beispielwert gesetzt ist, ansonsten ist es 0.

Wenn Du jetzt entweder eine 0 oder eine 1 haben willst, dann schiebst Du das Ergebnis noch um 6 nach rechts.

Re: T3 Blatt 7 2005-12-17 22:01
Anonymer User
Um an ein einziges Bit ranzukommen musst Du mit einer Bitmaske und-verknüpfen, in welcher nur ein einziges Bit auf 1 gesetzt ist:

00101010110101010010101101011010 Beispielwert & 00000000000000000000000001000000 Bitmaske ---------------------------------- 00000000000000000000000001000000 Ergebnis Das Ergebnis entspricht der Bitmaske, falls das Bit im Beispielwert gesetzt ist, ansonsten ist es 0.

Wenn Du jetzt entweder eine 0 oder eine 1 haben willst, dann schiebst Du das Ergebnis noch um 6 nach rechts.

mmhh du meinst wenn ich nach rechts verschiebe bis es nur 0 gibt, soll dann löschen sein?

- versteh ich nicht so genau, wie soll ich dann ein einzelnes Bit löschen, wenn ich nicht weiss wie die zahl aus dieht?

Re: T3 Blatt 7 2005-12-17 22:07
Fred
Das Ergebnis entspricht der Bitmaske, falls das Bit im Beispielwert gesetzt ist, ansonsten ist es 0.

Wenn Du jetzt entweder eine 0 oder eine 1 haben willst, dann schiebst Du das Ergebnis noch um 6 nach rechts.
mmhh du meinst wenn ich nach rechts verschiebe bis es nur 0 gibt, soll dann löschen sein?
Nein. Ich meine, wenn Du Dir ein einzelnes Bit angucken willst, dann willst Du ja im Regelfall als Ergebnis eine 0 oder eine 1. Durch die bitweise und-Verknüpfung erhält man aber nur 0 oder 1<<n (also eine 1 um n Stellen nach links geschoben). Um dies auf 0 oder 1 abbilden zu können schiebt man also um n Stellen nach rechts zurück.

versteh ich nicht so genau, wie soll ich dann ein einzelnes Bit löschen, wenn ich nicht weiss wie die zahl aus dieht?
Also um das n-te Bit zu löschen musst Du einfach mit 1<<n verANDNen.

Re: T3 Blatt 7 2005-12-17 22:20
Anonymer User
ist ANDN = NAND ?

Re: T3 Blatt 7 2005-12-17 22:26
Anonymer User
Also um das n-te Bit zu löschen musst Du einfach mit 1<<n verNANDen.

1 an n-ter stelle NAND ->

beispiel:

00101010110101010010101101011010 Beispielwert
-& 00000000000000000000000001000000 Bitmaske
———————————-
00000000000000000000000000000000 Ergebnis ?
|
?
Ich versteh immer noch nicht - dann hab ich null - ich will aber nur ein Bit löschen nicht den ganzen Wert..

Re: T3 Blatt 7 2005-12-17 22:34
Fred
ist ANDN = NAND ?
Sorry, hatte mich vertan. Ich meinte ANDN (das ist nicht das gleiche wie NAND).

Re: T3 Blatt 7 2005-12-17 23:22
Anonymer User
und trotzdem bin ich noch ratlos… [img]http://www.fb18.de/gfx/19.gif[/img]

Re: T3 Blatt 7 2005-12-17 23:43
Anonymer User
wie geht das: Register hin- und herschieben ?

Re: T3 Blatt 7 2005-12-18 08:35
Fred
Dafür gibt es die drei Shift-Befehle sll, srl und sra.

Kommt jetzt etwas spät, aber irgendwann muss man ja auch mal ins Bett [img]http://www.fb18.de/gfx/25.gif[/img]

Re: T3 Blatt 7 2005-12-18 18:57
Lazy
also ich habe die aufgabe folgendermaßen gelöst:
als erstes habe ich überprüft, was an den beiden stellen der bitfolge steht. Das habe ich , wie bereits oben erklärt, mit Hilfe einer bitmaske gemacht, die ich gebildet habe, in dem ich die 1 posA mal nach links geshiftet habe, und dann mit der Bitfolge AND verknüpft habe, um sie dann wieder posA mal nach rechts zu shiften, so dass ich entweder 1 oder 0 habe, halt dem Bit an posA entsprechend. Analog habe ich auch posB herausbekommen. diese beiden habe ich dann verglichen, sind sie gleich, dann springt ich ans Ende des Programm, denn dann braucht man sie ja nicht mehr zu vertauschen. Sind sie unterschiedlich, dann verwende ich einfach wieder meine nach links geshifteten 1er bitmasken und verknüfpe beide XOR mit der bitfolge, welches ja genau die Stellen umdreht. Das Ergebnis gebe ich dann zurück.

Re: T3 Blatt 7 2005-12-19 20:00
Anonymer User
ich wüsste nicht wie man das in aaembler schreibt

Re: T3 Blatt 7 2005-12-19 22:11
Fred
Dann schreibe es in C, übersetze es nach Assembler und versuche den Code nachzuvollziehen.