Mangels Musterlösung würde ich gerne meine Lösung zur Aufgabe 3 aus der Klausur 2008f hier zur Diskussion stellen:
Code: Alles auswählen
Section .data
length dd 0
Section .text
parseStr:
push ebp
mov ebp, esp
pusha
push [ebp-12]
call strlen
add esp, 4
inc eax ; strlen zählt ohne \0
mov dword[length], eax
push 1
push dword[length]
call calloc
mov [ebp-8], eax
add esp, 8
mov esi, dword[ebp-12] ; source string
mov edi, dword[ebp-8] ; destination string
mov edx, 0 ; counter für die Schleife
mov eax, 0
mov ecx, 0
schleife:
cmp edx, dword[length]
jae ende
mov ebx, [esi+edx]
cmp ebx, 48
jb nan
cmp ebx, 57
ja, nan
imul ecx, 10
sub ebx, 48
add ecx, ebx
inc edx
jmp schleife
nan:
add eax, ecx
mov ecx, 0
mov [edi], ebx
inc edi
inc edx
jmp schleife
ende:
popa
pop ebp
ret
Edit: Achja, was ich auf jeden Fall nicht berücksichtigt habe, ist, dass der zweite übergebene Parameter p_dest ein Zeiger auf ein Zeiger ist... Weiß einer, wo/wie ich das unterbringen kann/muss?