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

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

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

Beitrag von Mijikai »

Wie kann ich mit Purebasic Low & High-Nibbels (Halbbytes) setzen :| ?
Hab damit noch nie gearbeitet.
Zuletzt geändert von Mijikai am 06.09.2017 21:31, insgesamt 1-mal geändert.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

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

Beitrag 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)
Bild
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

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

Beitrag 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
Benutzeravatar
GlassJoe
Beiträge: 108
Registriert: 11.06.2017 20:25
Computerausstattung: 2 x AMD Phenom II x4 945,2x Dell Latitude X300, Dell Latitude D410, Hp Compaq NC4400

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

Beitrag von GlassJoe »

Halbbytes ? :freak:

Für welche Andwendungen bräuchte mann sowas ?
https://www.geek.com/tech/a-commodore-6 ... s-1672510/
٩(̾●̮̮̃̾•̃̾)۶ __̴ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ ̡͌l̡̡̡̡.___٩(- ̮̮̃-̃)۶
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

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

Beitrag von mk-soft »

7-Segment Anzeige zum Beispiel...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
GlassJoe
Beiträge: 108
Registriert: 11.06.2017 20:25
Computerausstattung: 2 x AMD Phenom II x4 945,2x Dell Latitude X300, Dell Latitude D410, Hp Compaq NC4400

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

Beitrag 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 ?
https://www.geek.com/tech/a-commodore-6 ... s-1672510/
٩(̾●̮̮̃̾•̃̾)۶ __̴ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ ̡͌l̡̡̡̡.___٩(- ̮̮̃-̃)۶
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

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

Beitrag 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.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
GlassJoe
Beiträge: 108
Registriert: 11.06.2017 20:25
Computerausstattung: 2 x AMD Phenom II x4 945,2x Dell Latitude X300, Dell Latitude D410, Hp Compaq NC4400

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

Beitrag 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.
https://www.geek.com/tech/a-commodore-6 ... s-1672510/
٩(̾●̮̮̃̾•̃̾)۶ __̴ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ ̡͌l̡̡̡̡.___٩(- ̮̮̃-̃)۶
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

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

Beitrag 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.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
GlassJoe
Beiträge: 108
Registriert: 11.06.2017 20:25
Computerausstattung: 2 x AMD Phenom II x4 945,2x Dell Latitude X300, Dell Latitude D410, Hp Compaq NC4400

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

Beitrag 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
https://www.geek.com/tech/a-commodore-6 ... s-1672510/
٩(̾●̮̮̃̾•̃̾)۶ __̴ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ ̡͌l̡̡̡̡.___٩(- ̮̮̃-̃)۶
Antworten