Ich bekomme einen Speicherzugriffsfehler bei einem Teil meiner IOTA Methode. Diese Funktion ermittelt die Länge einer Zahl, die im eax Register später steht. Das funktioniert auch, das Ergebnis ist richtig, nur ich bekomme dann einen nervigen Speicherzugriffsfehler.
Die Methode wird folgendermaßen angesteuert:
push edi
push ebx
push esi
mov esi, 0 mov edi, eax
call len_count
len_count: mov eax, edi mov ebx, 10 idiv ebx call resetcalc
mov edi, eax
cmp eax, 0 je len_iszero inc esi jne len_count
len_iszero: mov eax, esi add eax, 1 pop esi pop ebx pop edi ret
Die Methode steuere ich so an:
mov eax, 15024
call len
In len_iszero ist eax beim Abschluss der Methode 5, logisch, die Zahl ist fünfstellig. len_iszero läuft komplett durch und dann gibt es einen Speicherzugriffsfehler.