Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#2

Re: [MASM] strlen Funktion

  Alt 24. Jan 2009, 11:08
ist dir schon aufgefallen, daß du auf meißt nur AX setzt und mit EAX prüfst?

Code:
STRLEN_DATA_TO_CX macro
   @@loop:
   inc eax      <<<<< hier
   inc cx
   cmp DATA[eax], 0
   jnz @@loop
   dec cx
endm
was glaubst du denn, was passiert, wenn beim weiterechnen die WORD-Grenze überschritten wird?

z.B.
String fängt an Adresse $0040fff8 an und ist 32 Zeichen lang
dann ergibt das eine schöne Endlosschleife,
denn die #0 ist dann an Adresse $00410018, aber da nur AX geändert wird, kommst du nur an Adresse $00400018 vorbei.

Code:
STRLEN_DATA_TO_CX macro
   xor cx, cx
   cmp eax, 0    // prüfen ob EAX = nil
   jz @@end    //

   @@loop:
   inc eax
   inc cx
   cmp DATA[eax], 0
   jnz @@loop
   dec cx
   @@end:
endm
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat