Datenbereich Bitweise ändern?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
GreyEnt
Beiträge: 376
Registriert: 20.07.2006 19:41

Datenbereich Bitweise ändern?

Beitrag von GreyEnt »

Hallo Jungs,

wenn ich einen Datenbereich ca. 3MB festgelegt habe.
Und möchte nun Bits an verschiedenen Stellen von 0 auf 1 ändern.
Ansonsten darf sich an den Datenbereich nix ändern.

Als nächstes möchte ich den Datenbereich auslesen und zählen wieviel Bits auf 1 gestzt sind.

Kann man sowas einfach umsetzen?
Ich progge PureBasic weil Jägermeister nen dicken Kopf macht.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

"Datenbereich"?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

Ich schätze mal, er meint Speicherbereich.

Mein Vorschlag wäre, das ganze über ASM an zu gehen.

Zum Ändern einzelner Bits einfach die Bitadresse/8 an Bytes anspringen, dann das einzelne Bit ändern über:

Code: Alles auswählen

bit=Bits%8
Mov Eax,ByteAdresse
mov EBx,0
Mov bl, 1
dec bit
SAL bl,bit
Xor byte[eax],bl ;Status umkehren
AND byte[eax],bl;Setzen
NOT byte[eax],bl;Nicht setzen
Zum Durchzählen kannst du über einen AND-Vergleich arbeiten ;)
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
GreyEnt
Beiträge: 376
Registriert: 20.07.2006 19:41

Beitrag von GreyEnt »

Ja. Sorry. Ich dachte nen Speicherbereich könnte man so bezeichnen.
Ich meine die reservierung mit AllocateMemory.
Ich progge PureBasic weil Jägermeister nen dicken Kopf macht.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Franky hat geschrieben: Zum Ändern einzelner Bits einfach die Bitadresse/8 an Bytes anspringen, dann das einzelne Bit ändern über:

Code: Alles auswählen

bit=Bits%8
Mov Eax,ByteAdresse
mov EBx,0
Mov bl, 1
dec bit
SAL bl,bit
Xor byte[eax],bl ;Status umkehren
AND byte[eax],bl;Setzen
NOT byte[eax],bl;Nicht setzen
Bits zu ändern geht auch einfacher über And und Or ohne Assembler.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Antworten