Форум программистов, компьютерный форум, киберфорум
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
12 / 12 / 2
Регистрация: 18.10.2009
Сообщений: 158
1
FASM

Вычислить выражение по формуле

22.05.2010, 19:55. Показов 971. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан пример: 2,25/1.125-0,5*0,875/(2,75+0,75). Не выходит верный ответ вообще, все что знал перепробовал. Помогите пожалуйста ещё раз. Вот код программы.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
org    100h
 section .data
    b    dd 2.25
    c    dd 1.125
    d    dd 0.5
    e    dd 0.875
    f    dd 2.75
    g    dd 0.75
section       .text
Start: 
    fninit            ;Инициализируем FPU без ожидания 
    fld      dword[ds:b]  ; st0 = B   
    fdiv     dword[cs:c]  ; st0 = B/C 
    fld     dword[ds:d]  ; st1 = st0, st0 =D
    fmul     dword[ds:e]  ; st0 = E * F  
    fsubp    st1,st0      ; st0 = (B/C) - (D*E)
    fdiv   dword [ds:f] ; st0 = (B/C) - (D*E)/F
    fld    dword [ds:g] 
    fadd    dword [ds:g]
  fdivp st0
    int 20h
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2010, 19:55
Ответы с готовыми решениями:

Вычислить выражение по формуле
Не могу решить задачу на ассемблере. Пример нужно решить в программе Microsoft Visual Studio в C++ ...

Вычислить выражение по формуле
Помогите вычислить на ассемблере, именно сам код вычисления

Вычислить выражение по формуле
Здрвствуйте у меня возникла такая проблема, в общем дан пример см. во вложения. Последняя строчка...

Вычислить выражение по формуле
\huge y=\frac{{x^2}-ax}{b+2}-\frac{x^3}{3}+{a^2}x format PE GUI 4.0 include...

1
28 / 24 / 0
Регистрация: 03.02.2010
Сообщений: 66
22.05.2010, 20:45 2
fdivp st0 - это бред. st0 делится на st0, дефолтным аргументом выступает всегда верх стека.
Assembler
1
2
3
4
5
6
7
8
9
    ; B/C - D*E/(F+G)
    fld [B]        ; st0 = B
    fdiv [C]       ; st0 = B / C
    fld [D]        ; st1 = st0, st0 = D
    fmul [E]       ; st0 = D * E
    fld [F]        ; st2 = st1, st1 = st0, st0 = F
    fadd [G]       ; st0 = F + G
    fdivp st1,st0  ; st1 = D*E; st0 = F+G; st0 = st1/st0; st0=st1 ; st1=st2 
    fsubp st1,st0  ; st1 = B/C; st0 = (D*E)/F+G; st0 = st1-st0 = B/C - D*E/(F+G)
У меня получилось 1.875. Вроде бы правильно.
PS: st-регистры кроме st0 и st1 - недоступны для прямого доступа. Можно крутить и двигать стек, но прямого доступа как к st0 и st1 к ним нет. Можно прокрутить/сдвинуть стек регистров так что они сдвинутся на место текущих st0 и st1. Это как барабан где доступны только две ячейки и вы крутите этот барабан что б получить доступ к этим ячейкам. Впрочем вам этим не обязательно забивать себе голову(хотя полезно бы изучить что да как с этим FPU)

Вот есть хорошая статья по FPU
PPS: Я тестировал вышеозначенные инструкции в такой программе. Компилятор Fasm for Windows.
1
22.05.2010, 20:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2010, 20:45
Помогаю со студенческими работами здесь

Вычислить выражение по формуле
Посчитать, используя FPU, следующее: 1+|y-x|+(|y-x|^2)/2+(|y-x|^3)/3 Данные должны вводиться с...

Вычислить выражение по формуле
Помогите, пожалуйста, составить программу, а то сессия уже идет :cry: Составить программу на...

Вычислить выражение по формуле
Помогите пожалуйста решить пример на паскале все отлично могу решить, а вот с ассемблером мы явно...

Вычислить выражение по формуле
Помогите написать программу с арифметическими командами на сопроцессоре. ( что бы были +,-,*,/)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru