Seite 1 von 2

[gelöst] Wie High & Low - Nibble setzen?

Verfasst: 06.09.2017 20:45
von Mijikai
Wie kann ich mit Purebasic Low & High-Nibbels (Halbbytes) setzen :| ?
Hab damit noch nie gearbeitet.

Re: [Hilfe] Wie High & Low - Nibble setzen?

Verfasst: 06.09.2017 20:51
von NicTheQuick
Mit bitweisen Operationen. Ich würde dafür zwei Macros empfehlen. Was hältst du davon?

Code: Alles auswählen

Define.a byte = 0

Macro setHighNibble(a, b)
	a = (a & $f) | ((b & $f) << 4)
EndMacro

Macro setLowNibble(a, b)
	a = (a & $f0) | (b & $f)
EndMacro

Debug Hex(byte)
setHighNibble(byte, $a)
Debug Hex(byte)
setLowNibble(byte, $5)
Debug Hex(byte)

Re: [gelöst] Wie High & Low - Nibble setzen?

Verfasst: 06.09.2017 21:31
von Mijikai
Super hat mir geholfen :allright:

Ich mag Proceduren mehr aber das liegt wohl daran, dass ich bisher kaum was mit Makros gemacht habe.

Hier das Ganze als Procedure falls es jemand braucht:

Code: Alles auswählen

Procedure setHighNibble2(*a.Ascii, b)
   *a\a = (*a\a & $f) | ((b & $f) << 4)
EndProcedure

Procedure setLowNibble2(*a.Ascii, b)
   *a\a = (*a\a & $f0) | (b & $f)
EndProcedure


Hab das ganze (für ein Objektmodul) auch nach fasm übersetzt :)

Code: Alles auswählen

proc SetLowNibble
     mov rax,[rcx]
     and rax,0F0h
     or rax,rdx
     mov [rcx],rax
     ret
endp

proc SetHighNibble
     mov rax,[rcx]
     and rdx,0Fh
     shl rdx,04h
     or rax,rdx
     mov [rcx],rax
     ret
endp 
Danke für die schnelle Hilfe :D

Re: [gelöst] Wie High & Low - Nibble setzen?

Verfasst: 07.09.2017 21:47
von GlassJoe
Halbbytes ? :freak:

Für welche Andwendungen bräuchte mann sowas ?

Re: [gelöst] Wie High & Low - Nibble setzen?

Verfasst: 07.09.2017 22:07
von mk-soft
7-Segment Anzeige zum Beispiel...

Re: [gelöst] Wie High & Low - Nibble setzen?

Verfasst: 07.09.2017 22:14
von GlassJoe
mk-soft hat geschrieben:7-Segment Anzeige zum Beispiel...
Was fürn Zufall, über die 7 Segment Anzeige hab ich erst letztens zum ersten mal was gelesen :mrgreen:

Also der Sinn von dieser Halbbyte Sache dürfte dann sein, so wenig Ram wie möglich zu beanspruchen oder ?

Re: [gelöst] Wie High & Low - Nibble setzen?

Verfasst: 08.09.2017 13:08
von GPI
Geschwindigkeit könnte auch ein Grund sein. Man muss so weniger Bytes übertragen und ich denke mal, das die meisten Displays eher langsammer sind.

Da ja 4 Bit Werte von 0-15 ermöglichen, kann man so ganz einfach die Zahlen 0-9 übertragen und hat sogar noch Platz für Sonderzeichen wie Punkt, Komma, Doppelpunkt etc. Verarbeiten kann man es auch leicht, weil man nur 4 Bits rüberschieben muss. Das sollte jeder Prozessor können.

Re: [gelöst] Wie High & Low - Nibble setzen?

Verfasst: 08.09.2017 14:13
von GlassJoe
GPI hat geschrieben:Geschwindigkeit könnte auch ein Grund sein. Man muss so weniger Bytes übertragen und ich denke mal, das die meisten Displays eher langsammer sind.

Da ja 4 Bit Werte von 0-15 ermöglichen, kann man so ganz einfach die Zahlen 0-9 übertragen und hat sogar noch Platz für Sonderzeichen wie Punkt, Komma, Doppelpunkt etc. Verarbeiten kann man es auch leicht, weil man nur 4 Bits rüberschieben muss. Das sollte jeder Prozessor können.
Danke für die Erklärung.

Dann müsste es ja ziehmlich langsam sein oder nicht ? weil ja pro 4 Bit nur ein Zeichen, ausser die 4 Bit Segmente werden irgendwie am Stück als ein 8 x 4 32Bit Segment übertragen...................vl schau ich mir doch irgendwann mal ein 64Bit Windows an.

Re: [gelöst] Wie High & Low - Nibble setzen?

Verfasst: 08.09.2017 16:18
von GPI
Ich weiss zwar nicht, warum du jetzt auf 64Bit Os kommst....

aber was solche Displays angeht, fand ich das Video ganz interessant
https://www.youtube.com/watch?v=hZRL8luuPb8

Wobei das Ding eher mit Ascii arbeitet.

Re: [gelöst] Wie High & Low - Nibble setzen?

Verfasst: 08.09.2017 17:15
von GlassJoe
GPI hat geschrieben:Ich weiss zwar nicht, warum du jetzt auf 64Bit Os kommst....

aber was solche Displays angeht, fand ich das Video ganz interessant
https://www.youtube.com/watch?v=hZRL8luuPb8

Wobei das Ding eher mit Ascii arbeitet.
Weil ja 64 Bit auf einem Rutsch mehr überträgt, und Performance bei gleichzeitiger beibehaltener Funktionalität, im zusammenspiel mit einem kleinen OS bin ich nicht abgeneigt. Schätze mal dieses Windows über das wir uns gefezt haben als x64 das auf Windows 2003 basiert werde ich mal auf'm 2. Rechner ausprobieren, hab mal geschaut hab für alles was ich da habe auch Treiber. Es soll zwar irgendwas mit wow64 und irgeneinem api aufruf den ich noch nie benutzt hab sein, aber egal, mann kann ja mal ausprobieren.

EDIT: 8 Bit Guy, den schau ich auch immer :D