- Beiträge
- 15.404
- Reaktionspunkte
- 4.039
-> Hier kostenlos registrieren
Ich muß mal aus gegebenem Anlaß ein Stück Code korrigieren, daß wir recht oft hier im Forum verwenden.
ITD an dieser Stelle ist falsch.
Grund: Wenn man mit iOffset über 32767 kommt, (Ist ja dann ein negativer Wert, wenn man die Zahl als Int betrachtet), dann bewirkt ITD ein Verschieben des negativen Vorzeichens (Bit 16) nach Bit 32. Wenn man z.Bsp. Daten in Datenbausteinen > 32K adressieren will, geht das nicht.
Lösung: Das IDT kann man einfach weglassen.
PS: Für Datenbausteine < 32K macht das ITD nichts aus.
Code:
// Pointerformat für indirekte Adressierung
L #iOffset
[COLOR="Red"][B] ITD [/B][/COLOR]
SLD 3
T #dwAddr
ITD an dieser Stelle ist falsch.
Grund: Wenn man mit iOffset über 32767 kommt, (Ist ja dann ein negativer Wert, wenn man die Zahl als Int betrachtet), dann bewirkt ITD ein Verschieben des negativen Vorzeichens (Bit 16) nach Bit 32. Wenn man z.Bsp. Daten in Datenbausteinen > 32K adressieren will, geht das nicht.
Lösung: Das IDT kann man einfach weglassen.
PS: Für Datenbausteine < 32K macht das ITD nichts aus.