Seite 1 von 1

Datenbereich Bitweise ändern?

Verfasst: 24.11.2008 10:28
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?

Verfasst: 24.11.2008 13:34
von Fluid Byte
"Datenbereich"?

Verfasst: 24.11.2008 13:47
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 ;)

Verfasst: 24.11.2008 14:02
von GreyEnt
Ja. Sorry. Ich dachte nen Speicherbereich könnte man so bezeichnen.
Ich meine die reservierung mit AllocateMemory.

Verfasst: 24.11.2008 14:19
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.