IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Помогите исправить програмку (assembler) (https://www.imho.ws/showthread.php?t=76972)

phill 04.01.2005 19:37

Помогите исправить програмку (assembler)
 
надо посчитать выражение: =)
//типо константы все, вводить ниче не надо
_http://w3.lvivonline.com:8080/boria/666.jpg
нет возможгости написать, там рисунок (формула) :Р

вот я набросал, но чето не работает, писал .386, тоже не работает чето, помогите плиз !

Код:


%TITLE "666"
IDEAL
MODEL small
STACK 256
DATASEG
x dq 13.45
y dq 1.57
z dq 2.13e2
CODESEG
START:        mov ax, @data
                mov ds,ax
                mov es, ax
finit               
        fld x
        fmul st(0), st(0)
        fmul st(0), 4
        fdiv st(0), 3
        fstp eax
ffree st(0)
        fld y
        fmul st(0), st(0)
        fld eax
        fadd st(0), st(1)
        fsqrt
        fstp eax

        neg eax

        fld z
        fcos

        fmul st(0), (0)
        fld x
        fdiv st(0), st(1)
ffree st(0)
        fld eax
        fsub st(0), st(1)

fstp eax
fstp eax

EXIT:        mov ax, 4C00h
        int 21h
        END START

на асемблере естественно :) !!

phill 06.01.2005 12:32

посмотрите те кто знает асемблер, пжалуста ! тут пару сек работы при мин знаниях FPU

Madness 06.01.2005 22:03

phill
У меня получилось так:
Код:

x dq 13.45
y dq 1.57
z dq 2.13e2
a4 dd 4.0
a3 dd 3.0
tmp dq ?

finit
fld x
fmul st(0), st(0)
fmul a4
fdiv a3
fstp tmp
fld y
fmul st(0), st(0)
fld tmp
fadd st(0), st(1)
ffree st(1)

fsqrt

fldz ;neg tmp
fsub st(0), st(1)
ffree st(1)

fld z
fcos

fmul st(0), st(0)
fmul st(0), st(0)
fld x
fdiv st(1), st(0)
fstp tmp
fsub st(1), st(0)

fstp tmp
fstp tmp

Можно написать короче. + fadd/sub st(0), st(1); ffree st(1) можно попробовать заменить на faddp/fsubp, только у меня компилятор ругался. А так с виду работает. Результат в [tmp].

phill 07.01.2005 20:53

Код:

fldz ;neg tmp
fsub st(0), st(1)
ffree st(1)

тут надо поменять знак, neg tmp .. а зачем отнимать от tmp z ?
Код:

fmul st(0), st(0)
fmul st(0), st(0)
fld x
fdiv st(1), st(0)
fstp tmp
fsub st(1), st(0)

тут наверно наоборот - fdiv st(0), st(1), мы ж делим косинус на х, или я чето не допонял ? :)

спасибо большое

Madness 08.01.2005 03:45

phill
Отладчик юзай чтоб все не объяснять.

>тут надо поменять знак, neg tmp .. а зачем отнимать от tmp z ?
В st(0) грузится 0 и от него отнимается параметр, типа отрицательное число получаем :)

>тут наверно наоборот
Возможно, я значения все не сверял, мож че и перепутал.


Часовой пояс GMT +4, время: 10:59.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.