Forum: Offtopic Vergleichen


von zugvogel1 (Gast)


Lesenswert?

Hallo
also ich möchte folgendes vergleichen und weis nicht wie.
deshalb bin ich für jeden Tip dankbar.
Vergleich das Bit aaa mit den Wert d aus bb
bbbbbbbb 1110daaa
wenn gleich dann goto.

aaa=Bit0-Bit7
d=1oder0
bb=Zahl von 0-255

dank an alle

von Wegstabenverbuchsler (Gast)


Lesenswert?

Definition: Bit_0 = das ganz rechte bit ... bit_7=das höchstwertigste
Bit

1. Du hast ein Bitmuster bbbbbbbb (8 Bit), in dem du feststellen
möchtest ob bestimmte Bits einen bestimmten Zustand haben.

2. du hast ein Zähler aaa, welcher Werte zwischen 0 .. 7 (gleich:
Bitposition 0..7) annehmen kann. Das Bit aus "bbbbbbbb" soll an der
Zählerposition "aaa" verglichen werden ob es identisch ist zum Wert
von "d". Fals ja: Tue dies, falls nein: tue jenes

Frage 1: wielviele verschiedene Situationen werden mit "tue_dies bzw.
tue_jenes" abgebildet? Gibt es nur 2 Alternativen, oder wird es
mehrere geben?

Frage 2: In welcher Hochsprache, Pseudo-Hochsprache, Assemblersprache
hättest du es denn gerne ?

von zugvogel1 (Gast)


Lesenswert?

Hallo.

es gibt nur zwei antworten (ja oder nein)
Fals ja: Tue dies
falls nein: tue jenes

ich schreibe in Assemblersprache

danke schon mal!!!

von zugvogel1 (Gast)


Lesenswert?

Ich noch mal

hier noch mal eine andere beschreibung meines Anliegens.
Vergleich das Bit aaa mit den Wert d aus bb
bbbbbbbb 1110daaa
wenn gleich dann goto

lese welches bit in aaa gemeint ist dann schaue in d ob das der wert 0
oder 1 und nun gehe an das Bit in bbbbbbbb und vergleiche auch den
Wert d also ob 0 oder 1 ist.

von Wegstabenverbuchsler (Gast)


Lesenswert?

Deine Langbeschreibung deines 2. Postings beschreibt ja genau, was du
machen sollst (und ist auch nix anderes wie das im ersten Posting
benannte, also insofern sind die Beschreibungen konsistent.

Die Aufgabe ist schon soweit klar, blos wenn du_ nicht weist was _du
für einen Prozessor benutzt dann wird dir keiner helfen können
......

"ich schreibe in Assemblersprache"

Dir ist aber schon bekannt, daß es mehr wie einen Prozessor gibt?

Möchtest du nun Assembler für eine Cray XMP, oder für HAL 2000 aus
"Odyssee im Weltraum"? Ich hätt dann auch noch Assembler vom R2D2,
aber der ist in Klingonisch geschrieben und nur mit
Klingonen-Zeichensatz auf dem PC lesbar

von zugvogel1 (Gast)


Lesenswert?

sorry habe ich vergessen zu schreiben.

es ist ein Pic-12F683

von Wegstabenverbuchsler (Gast)


Lesenswert?

ich spreche kein PIC, daher sind meine Vorschläge nur theoretisch und in
"Pidgin-Programmiersprache" formuliert:

"lese welches bit in aaa gemeint ist "

>>> "irgendwo" (in einem register? von einem Port abgegriffen?) wird
ja deine Bitfolge   1110daaa  herkommen. Das nimmst du erst mal und
machst eine AND-Verknüpfung mit 00000111, um alles überflüssige
"wegzuknipsen". Das Ergebniss ist 00000aaa, mithin die Bitposition
von bbbbbbbb die du prüfen möchtest


"dann schaue in d ob das der wert 0 oder 1 "

>>> "irgendwo" (in einem register? von einem Port abgegriffen?) wird
ja deine Bitfolge   1110daaa  herkommen. Das nimmst du erst mal und
machst eine AND-Verknüpfung mit 00001000, um alles überflüssige
"wegzuknipsen". Das Ergebniss ist 0000d000, mithin dein Prüfbit. Der
Wert ist entweder NULL wenn d=0, oder NICHT NULL wenn d=1 gesetzt war.


"und nun gehe an das Bit in bbbbbbbb"

>>> du weißt, daß du das aaa-te bit in dieser bitfolge benötigst. Was
du nun machst ist Prozessor-abhängig.

a) du "schiebst" dieses Datenwort durch ein geegnetes Register
hindurch, wobei gleichzeitig das herausfallende bit im Carry-bit
aufgefangen wird. Dann kannst du abhängig vom Zustand des Carry-bit
sprungmarke_0 oder sprungmarke_1 anhopsen, und dort weiter machen
oder

b) du nimmst ein leeres Initialbitmuster 00000001 und schiebst es um
aaa Stellen nach links, dann hüpft die 1 um 1 Stelle weiter bis zur
benötigten Bitposition. Anschließend machst du eine AND-Verknüpfung mit
bbbbbbbb, so daß als Ergebniss raus kommt (angenommen, aaa=3-> )

bbbbbbbb
00001000
=========
0000b000

Damit hättest du halt auch dein betreffendes b-Bit isoliert



"und vergleiche auch den Wert d also ob 0 oder 1 ist."

mit den vorherigen Operationen hast du beide Informationen isoliert:
"d" und das relevante "b". Die vergleichst du nun noch ein bischen
miteinander, und abhängig vom ergebniss hüpfts du nach "tue_dies"
oder tue_jenes"



So, jetzt zeig mir, daß man das auch in PIC programmieren kann.

von zugvogel1 (Gast)


Angehängte Dateien:

Lesenswert?

hallo
hast du das so gemeint????

von Wegstabenverbuchsler (Gast)


Lesenswert?

hattu schön gemacht - da ich ja kein PIC spreche muß jemand anderes
beurteilen ob das ein funktionsfähiger code ist.

Aber es freut mich daß mein Hinweis dir scheinbar helfen konnte

von Unbekannter (Gast)


Lesenswert?

Tja, ich spreche auch kein PIC, kann den Quellcode deshalb nicht
überprüfen.

ABER:

Im Kommentar steht:

;Vergleich das Bit aaa mit den Wert d aus der CV bb
;D2         D3         D4        ;011110bb  bbbbbbbb  1110daaa


Nun: 'aaa' sind ja nur drei Bits, kann also nur einen Wert von 0 bis
7 annehmen, also 8 verschiedene Positionen.

Aber laut Kommentar hast Du keine 8 'b'-Bits, sondern insgesammt 10
'b' Bits. Denn in D2 sollen ja die ersten zwei 'b' stehen und dann
in D3 die nächsten 8 Stück.

Dass sieht mir so aus, als ob da irgendwas faul wäre...

von zugvogel1 (Gast)


Lesenswert?

hallo

Ja das ist schon so richtig alles denn beim vergleichen reicht es
d3 zu vergleichen.
die anderen zwei b können vernachlässigt werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.