Hallo,
nach ewigen herumprobieren und schließlich einen debugger bin ich auf den Fehler drauf gekommen.
Es lag eigentlich gar nicht daran das eine Word Grenze überschritten wird.
Der Fehler lag daran, das ich die aktuelle Position in eax Speicher.
Nach dem Aufruf von
Code:
invoke MessageBox, 0, ADDR DATA[eax], ADDR AppNameDefault, MB_OK
wird aber das eax Register überschrieben
Hier meine Überarbeitet strlen Funktion
Code:
STRLEN_DATA_TO_CX macro
xor cx,cx
xor eax,eax <--- Neu, lösche überschriebenes eax Register
mov ax, DATA_POINTER <--- Neu, schreibe meine aktuelle Position wieder hinein
.WHILE DATA[eax] != 0
inc cx
inc eax
.ENDW
inc cx <--- Neu, +1 dazu, wegen dem 0 Byte vom Vorstring
endm