1 Nibble = 4bit
1 byte = 2 Nibble = 8bit
1 Word = 2 byte = 4 Nibble = 16bit
1 Double Word = 2 Word = 4 byte = 8 Nibble = 32bit
1 Long Word = 2 Double Word = 4 Word = 8 byte = 16 Nibble = 64bit
und bei allen "signed"-variablen ist immer das vorderste (ganz links) bit für das vorzeichen verantwortlich. wird das gesetzt hast du ne negative zahl.
die zahl %0000 1111 wäre 15, %1000 1111 ist aber nicht -15.
ich glaub dein problem liegt wahrscheinlich nicht im $FF was ein ganzes byte wäre, es liegt im vordersten bit.
deßhalb glaub ich, reicht das hier:
Code: Alles auswählen
a.b=(a.b<<1)>>1 ; Für Byte
a.l=(a.l<<1)>>1 ; Für Long
Code: Alles auswählen
a.b=a.b & %0111 1111 ;Für Byte