Проблема со стеком в сопроцессоре.
Добавлено: 28 ноя 2005, 22:55
Уважаемые коллеги, помогите пожалуйста! У меня на второй итерации цикла возникает ошибка о переполнении стека... Уже долго парюсь, но никак не могу найти то место. где переполняется стек. Ошибка возникает на второй итерации цикла в районе команды fyl2x. Если не трудно - подскажите!
Программа строит по точкам график 100sin(x)*(2e)^x... Пишу ввиду необходимости на встроенном ассемблере Паскаля.
Код: Выделить всё
mov cx, 639 {grafik}
@loopx:
mov x, cx
cmp cx, 300
jl @bad_x
fild x
fmul gradus
wait
{call exponent }
push cx
xor cx,cx
fld1
fld e
fyl2x
fld1
fadd
fmul
fst mem
fld1
fcom
fstsw ax
sahf
jnc @m2
xor cx, cx
@m12:
inc cx
fsub
fst mem
fld1
fcom
fstsw ax
sahf
jz @m12
jnc @m2
jmp @m12
@m2:
mov step, cx
fxch
f2xm1
fadd
fild step
fld1
fscale
fxch
fincstp
fmul
fstp y
pop cx
jmp @1
@2: jmp @loopx
@1:
fild x
fmul gradus
DB 0D9h, 0FEH
fild sto
fmul
fld y
fmul
fst y
fidiv mnogitel {rastjagivaem gfafik po y}
fchs
fadd b
frndint
fistp y2
mov ah, 0ch
mov bh,0h
mov dx, y2
mov al, 15
int 10h
@bad_x:
loop @2
mov ah, 8
int 21h