ASM->koprocesor

0

Witam! mam taką procedurę:

Rot:
lea si,my_cos
lea di,my_sin
mov ax,kat
shl ax,2
add si,ax
add di,ax

finit
fld1
fmul d [si]
fmul r
fistp x2

fld1
fmul d [di]
fmul r
fistp y2

mov ax,kat
inc ax
xor ah,ah
mov kat,ax
ret

i takie zmienne:

my_cos DD 256 dup(?)
my_sin DD 256 dup(?)
d equ dword ptr
y2 DW 0
x2 DW 0
kat DW 0

Teraz w czym problem... Na początku działa super, tzn obraca punkt (1,0) dookoła punktu (0,0) i mnoży go przez promień ? w ten sposób powstaje koło o środku w punkcie (0,0) i promieniu r, ale nie w tym rzecz...
Przez pierwsze parę sekund wszystko działa ok.! ale później coś się sypie i punkty źle są obracane, czemu??

0

Przejrzałem jeszcze raz dokładnie cały kod i mnie oświeciło :P Ta procka sama w sobie nie była narzędziem zbrodni :) Wszystko psuło się przez rysowanie linii , tzn. podkusiło mnie żeby zrobić dwa wyjścia z tej procedury. Jedno wychodząc ściągało 5 bajtów(ret 5),a drugie 10 :) He he i po jakims czasie stos się zapełniał, ale dalej nie wiem dlaczego później zmieniała się zawartość x2?? Przecież nigdzie nie było zdejmowane ze stosu.. I pomyśleć że zmarnowałem nad tym 4 godziny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1