С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/32: Рейтинг темы: голосов - 32, средняя оценка - 4.53
1 / 1 / 0
Регистрация: 01.01.2011
Сообщений: 46
1

MASM32 Вычислить значение функции f(x)

06.04.2012, 15:26. Показов 6291. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу оказания посильной помощи в решении!

Дана функция вещественного аргумента f(x), заданная с помощью указанного математического выражения. Преобразовать выражение в постфиксную запись. Создать консольную программу на языке программирования ассемблер, в которой реализовать следующее:
1. вычислить значение функции f(x) в указанной точке x,
2. вычислить и вывести сумму S значений функции при изменении аргумента на отрезке [a,b] с шагом d,
3. найти и вывести максимальное значение функции maxy и значение аргумента maxx, ему соответствующее, на отрезке [a,b] при изменении аргумента с шагом d.

Для вычислений использовать команды математического сопроцессора. Исходные данные задачи ввести с клавиатуры, запросив у пользователя.
MASM32 Вычислить значение функции f(x)
Контрольные значения для проверки
1) при x = 1.0, f(x)= 0.79570
при a=–1, b=1, d=0.01
2) S=159.33363
3) maxx = 0.80000, maxy = 0.79410
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2012, 15:26
Ответы с готовыми решениями:

[masm32] Вычислить функцию
Необходимо вычислить функцию в MASM y=2*x^2+10*x+10 x вводит пользователь...

[masm32] Вычисление кусочной функции
Помогите найти ошибки в программе. Задание следующее- 2(x-2)+y, если 2x+y=>10 Иначе- 2x+y+1 ...

[MASM32 + visual studio] Вычислить суммы столбцов матрицы
Очень нужно написать программу построить сумму стовбцив двовимирного массиву я немогу понять как...

Вычислить значение функции
Задание такое: вычислить значение функции Y = 11X – DIV(X,10) + 11 В debug'e написал код, но...

31
1 / 1 / 0
Регистрация: 01.01.2011
Сообщений: 46
06.04.2012, 16:36  [ТС] 2
Смог написать только вот это и то не работает

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
; f(x) = 1 x x * 15 (sqrt) / pi x x * (fsqrt) 14 + / (fsqrt) - cos
include \masm32\include\masm32rt.inc
 
.data
    x REAL10 0.0
    rez REAL10 0.0
 
.code
 
prog:
    push 1251
    call SetConsoleOutputCP
 
    finit 
    fld x
    fld x
    fmul
    add eax, 15
    fadd
    fsqrt
    fld1
    fdiv
    fld x
    fld x
    fmul
    fsqrt
    add eax, 14
    fadd
    fldpi
    fdiv
    fsqrt
    fsub
    fcos
    fstp rez
 
    print "Результат вычисления f(x) = 1 x x * 15 (sqrt) / pi x x * (fsqrt) 14 + / (fsqrt) - cos: rez="
    print real10$(rez)
    exit
 
end prog
Добавлено через 1 час 8 минут
Вроде начало получатьсяно считает неправильно может я неправильно функцию в обратную запись перевел,подскажите.
1 x x * 15 (fsqrt) / pi x x * (fsqrt) 14 + / (fsqrt) - cos

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
; f(x) = 1 x x * 15 (fsqrt) / pi x x * (fsqrt) 14 + / (fsqrt) - cos
include \masm32\include\masm32rt.inc
 
.data
    x REAL10 1.0
    a REAL10 15.0
    b REAL10 14.0
      
    rez REAL10 0.0
 
.code
 
prog:
    push 1251
    call SetConsoleOutputCP
 
    finit 
    fld x
    fld x
    fmul
    fld a
    fadd
    fsqrt
    fld1
    fdiv
    fld x
    fld x
    fmul
    fsqrt
    fld b
    fadd
    fldpi
    fdiv
    fsqrt
    fsub
    fcos
    fstp rez
 
    print "Результат вычисления f(x) = 1 x x * 15 (sqrt) / pi x x * (fsqrt) 14 + / (fsqrt) - cos: rez="
    print real10$(rez)
    exit
 
end prog
0
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
06.04.2012, 18:22 3
aniva_romich, я бы сделал так.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
    include \masm32\include\masm32rt.inc
; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
comment * -----------------------------------------------------
                     Build this console app with
                  "MAKEIT.BAT" on the PROJECT menu.
        ----------------------------------------------------- *
    .data?
      value dd ?
    .data
      item dd 0
      x REAL8 1.0
      a REAL8 15.0
      b REAL8 14.0
      v15 dd 15
      v14 dd 14 
      v1 REAL8 1.0 
    rez REAL8 0.0
    .code
start:
; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
    call main
    inkey
    exit
; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
main proc
.code
    finit 
    fld x
    fmul x 
    fiadd v14
    fsqrt
    fldpi
    fdiv st(0),st(1)
    fsqrt
    fstp rez
    fld x
    fmul x 
    fiadd v15
    fsqrt
    fld v1
    fdiv st(0),st(1)
    fsub rez
    fcos
    fstp rez
    ;0.795695
    cls
    ;print "Результат вычисления f(x) = 1 x x * 15 (sqrt) / pi x x * (fsqrt) 14 + / (fsqrt) - cos: rez="
    print real8$(rez),13,10
    ;print "Hello World",13,10
    ret
main endp
; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
end start
Ответ слегка не сходится, использую REAL8.
Можно и под REAL10 переделать а так подставляй след. 2 и 3 задания.
1
1 / 1 / 0
Регистрация: 01.01.2011
Сообщений: 46
07.04.2012, 12:44  [ТС] 4
Код чуток упростил
Помогите 2 задание туда внедрить:
вычислить и вывести сумму S значений функции при изменении аргумента на отрезке [a,b] с шагом d
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
; f(x) = 1 x x * 15 + (fsqrt) / pi x x * (fsqrt) 14 + / (fsqrt) - cos
 
include \masm32\include\masm32rt.inc
 
    .data?
      value dd ?
    .data
      item dd 0
      x REAL8 1.0
      a REAL8 15.0
      b REAL8 14.0
      v15 dd 15
      v14 dd 14 
      v1 REAL8 1.0 
      rez REAL8 0.0
    .code
prog:
    push 1251
    call SetConsoleOutputCP
 
.code
    finit 
    fld x
    fmul x 
    fiadd v14
    fsqrt
    fldpi
    fdiv st(0),st(1)
    fsqrt
    fstp rez
    fld x
    fmul x 
    fiadd v15
    fsqrt
    fld1
    fdiv st(0),st(1)
    fsub rez
    fcos
    fstp rez   ;0.795695
    
    cls
    
    print "Результат вычисления f(x) = "
    print real8$(rez),13,10
 
end prog
Помогите вот этот цикл внедрить в мою задачу
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
include \masm32\include\masm32rt.inc
 
.data
N dd 1
M dd 10
count dd 0
step REAL10 0.5
x REAL10 0.0
s REAL10 0.0
 
.code
prog:
    finit
 
fild M
fisub N
fld step
fdiv
fld1
fadd
fistp count
 
mov ecx, count
 
fild N
fstp x
 
DO:
 
fld x
fld s
fadd
fstp s
 
fld x
fld step
fadd
fstp x
 
loop DO
 
push 1251
call SetConsoleOutputCP
 
print "Отрезок ["
print str$(N)
 
print ", "
print str$(M)
 
print "], шаг step = "
print real10$(step),10,13
 
print "Сумма чисел равна "
print real10$(s)
 
exit
end prog
0
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
07.04.2012, 17:25 5
aniva_romich, алгоритм приведенный тобой в это задание конечно внедрить возможно, но в решении второго задания помощи от него мало. Нам здесь необходимо повторить алгоритм первого задания n количество раз и сложить результаты, а X будет меняться от a до b с шагом d. Если правильно понял задание или что-то изменилось.
1
1 / 1 / 0
Регистрация: 01.01.2011
Сообщений: 46
07.04.2012, 17:30  [ТС] 6
Дальше этого сдвинуться не могу,ввод числа x не обрабатывается ,2 задание пока не знаю как внедрить
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
; f(x) = 1 x x * 15 + (fsqrt) / pi x x * (fsqrt) 14 + / (fsqrt) - cos
 
include \masm32\include\masm32rt.inc
      
    .data
      x dd 0
      a real10 15.0
      b real10 14.0
      rez REAL10 0.0
    .code
prog:
    push 1251
    call SetConsoleOutputCP
 
 
    print "Введите x: "
    mov x, sval(input())
     
.code
    finit ; инициализация сопроцессора
 
    fld1
    fld x
    fld x
    fmul
    fld a
    fadd
    fsqrt
    fdiv
    fldpi
    fld x
    fld x
    fmul
    fld b
    fadd
    fsqrt
    fdiv
    fsqrt
    fsub
    fcos
 
    cls
   
    fstp rez   ;0.795695
    
 
    print "Результат вычисления f(x) = "
    print real10$(rez),13,10
    
exit
end prog
0
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
07.04.2012, 17:39 7
aniva_romich, ответь на вопрос.
Нам здесь необходимо повторить алгоритм первого задания n количество раз и сложить результаты, а X будет меняться от a до b с шагом d. Так или нет?
1
1 / 1 / 0
Регистрация: 01.01.2011
Сообщений: 46
07.04.2012, 17:41  [ТС] 8
Цитата Сообщение от IOAN Посмотреть сообщение
aniva_romich, ответь на вопрос.
Нам здесь необходимо повторить алгоритм первого задания n количество раз и сложить результаты, а X будет меняться от a до b с шагом d. Так или нет?
Да именно так,значения ввести с клавиатуры
0
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
07.04.2012, 21:14 9
aniva_romich, держи!
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
; f(x) = 1 x x * 15 + (fsqrt) / pi x x * (fsqrt) 14 + / (fsqrt) - cos
 include \masm32\include\masm32rt.inc
  .data
    x REAL10 1.0
    a REAL10 -1.0
    b REAL10 1.0
    d REAL10 0.01
    v15 dd 15
    v14 dd 14 
    rez REAL10 0.0
    sum REAL10 0.0
  .code
start:
    push 1251
    call SetConsoleOutputCP
 
   ;Часть второго задания начало 
    finit
  next:
 
    fld b
    fld a
    fcompp
    fstsw ax
    sahf
    ja fin
 
   
    fld a
    fstp x
   ;Часть первого задания начало
    fldpi
    fld x
    fld x
    fmulp st(1),st(0)
    fiadd v14
    fsqrt
    fdivp st(1),st(0)
    fsqrt
    fstp rez
 
    fld1
    fld x
    fld x
    fmulp st(1),st(0)
    fiadd v15
    fsqrt
    fdivp st(1),st(0)
    
    fld rez 
    fsubp st(1),st(0)
    fcos
    ;fstp rez;0.795695
   ;Часть первого задания конец 
 
    fld sum
    faddp st(1),st(0) 
    fstp sum
 
    fld d
    fld a
    faddp st(1),st(0) 
    fstp a
 
    jmp next  
 
   ;Часть второго задания конец 
  fin:  
    cls
    print real10$(sum),13,10
    inkey
    exit
end start
1
1 / 1 / 0
Регистрация: 01.01.2011
Сообщений: 46
08.04.2012, 05:02  [ТС] 10
Спасибо!Сам бы не осилил.
работает только как-то странно по отдельности fstp rez ;0.795695 и fstp sum; 159.333 выводит,а вместе не хочет.fstp rez перебивается последующими действиями с вычислением fstp sum
0
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
08.04.2012, 07:16 11
aniva_romich, делай вывод так и всё норм.
Assembler
1
2
print real10$(sum),13,10
jmp next
1
1 / 1 / 0
Регистрация: 01.01.2011
Сообщений: 46
08.04.2012, 07:26  [ТС] 12
а так нельзя сделать?
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    jmp next
  
 
fin:
 
    print "Результат вычисления S  = "
    print real10$(sum),13,10
 
    print "Результат вычисления f(x) = "
    print real10$(rez),13,10
    
 
    inkey
    exit
end prog
Добавлено через 3 минуты
Цитата Сообщение от IOAN Посмотреть сообщение
aniva_romich, делай вывод так и всё норм.
Assembler
1
2
print real10$(sum),13,10
jmp next
пробовал,так не работает
0
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
08.04.2012, 07:27 13
aniva_romich, вывод вне цикла да и rez использую как временное хранилище.
Assembler
1
2
3
4
5
6
7
8
9
10
11
   
    fstp a
    print real10$(sum),13,10
    jmp next  
    ;Часть второго задания конец 
  fin:  
    ;cls
    ;print real10$(sum),13,10
    inkey
    exit
end start
Делай так и всё норм.
1
1 / 1 / 0
Регистрация: 01.01.2011
Сообщений: 46
08.04.2012, 07:42  [ТС] 14
вот посмотри,что здесь можно сделать.не получается вывести 2 значения
помоги написать кусочек кода для ввода числа (например x) c клавиатуры
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
; f(x) = 1 x x * 15 + (fsqrt) / pi x x * (fsqrt) 14 + / (fsqrt) - cos
 
include \masm32\include\masm32rt.inc
      
    .data
    ;x dd 0
    x REAL10 1.0
    a REAL10 -1.0
    b REAL10 1.0
    d REAL10 0.01
    v15 dd 15
    v14 dd 14 
    rez REAL10 0.0
    sum REAL10 0.0
    .code
prog:
    push 1251
    call SetConsoleOutputCP
 
    ;print "Enter x:"
    ;mov x, sval(input())
    
 
finit; инициализация сопроцессора
next:
 
    fld b
    fld a
    fcompp
    fstsw ax
    sahf
    ja fin
     
.code
    fld a
    fstp x
 
    fld1
    fld x
    fld x
    fmul
    fiadd v15
    fsqrt
    fdiv
    fldpi
    fld x
    fld x
    fmul
    fiadd v14
    fsqrt
    fdiv
    fsqrt
    fsub
    fcos
 
    fstp rez   ;0.795695
    
    fld sum
    faddp st(1),st(0) 
    fstp sum
 
    fld d
    fld a
    faddp st(1),st(0) 
    fstp a
 
    jmp next
  
fin:
    
    print "Результат вычисления S  = "
    print real10$(sum),13,10
 
    print "Результат вычисления f(x) = "
    print real10$(rez),13,10
    
    inkey
    exit
end prog
0
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
08.04.2012, 07:52 15
aniva_romich, Задай буфер.
Assembler
1
2
.data
buf db 20 dup (?)
Здесь сделай по порядку:
Assembler
1
2
    ;print "Enter x:"
    ;mov x, sval(input())
Ввод текста в buf.
Перевод в нужную переменную при помощи макросов.
1
1 / 1 / 0
Регистрация: 01.01.2011
Сообщений: 46
09.04.2012, 11:01  [ТС] 16
Конечный вариант.Осталось найти наименьшее и наибольшее значение на отрезке[a,b]
Подскажите,чуток осталось

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
; f(x) = 1 x x * 15 + (fsqrt) / pi x x * (fsqrt) 14 + / (fsqrt) - cos
 
include \masm32\include\masm32rt.inc
;================================================================================
    .data
             
    x REAL10 1.0
    a REAL10 -1.0
    b REAL10 1.0
    d REAL10 0.01
    v15 dd 15
    v14 dd 14
    rez REAL10 0.0
    sum REAL10 0.0
    min dd 0
    max dd 0
;================================================================================ 
    .code
prog:
 
    push 1251
    call SetConsoleOutputCP
 
    print "Отрезок ["
    print real10$(a)
 
    print ", "
    print real10$(b)
 
    print "], шаг d = "
    print real10$(d),10, 13
 
;================================================================================
    finit; инициализация сопроцессора
 
    fld1     ;вычисление f(x)
    fld x
    fld x
    fmul
    fiadd v15
    fsqrt
    fdiv
    fldpi
    fld x
    fld x
    fmul
    fiadd v14
    fsqrt
    fdiv
    fsqrt
    fsub
    fcos
 
    fstp rez   ;0.795695
    
    print "Результат вычисления f(x) = "
    print real10$(rez), 13, 10
;================================================================================
 
next:    ;  начало цикла.  Вычисление суммы
  
    fld b
    fld a
    fcompp   ; сравнение значения в регистре st(0) и операнда в памяти,после происходит выталкивание из стека значений st(0) и st(1) 
    fstsw ax ; перенос результата сравнения в регистр ax 
    sahf     ; копирование флагов состояния в регистр флагов eflags
    ja fin   ; переход если значение st(0) не равно 0
    
    fld a
    fstp x 
    
    fld1
    fld x
    fld x
    fmul
    fiadd v15
    fsqrt
    fdiv
    fldpi
    fld x
    fld x
    fmul
    fiadd v14
    fsqrt
    fdiv
    fsqrt
    fsub
    fcos
  
    fld sum
    faddp st(1),st(0) 
    fstp sum          ;вытолкнуть сумму в sum
    fld d             ;увеличить a на текущее значение d
    fld a
    faddp st(1),st(0)
    fstp a            ;вытолкнуть сумму в a
    jmp next          ;переход на метку next
  
fin:
    print "Результат вычисления S = "
    print real10$(sum), 13, 10
;================================================================================
 
; вычисление минимального - максимального значения на отрезке [а,b]
     
   
 
 
    
    exit
end prog
0
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
09.04.2012, 11:51 17
aniva_romich,
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
; f(x) = 1 x x * 15 + (fsqrt) / pi x x * (fsqrt) 14 + / (fsqrt) - cos
include \masm32\include\masm32rt.inc
;================================================================================
    .data
    x REAL10 1.0
    a REAL10 -1.0
    b REAL10 1.0
    d REAL10 0.01
    v15 dd 15
    v14 dd 14
    rez REAL10 0.0
    sum REAL10 0.0
    min REAL10 0.0
    max REAL10 0.0
;================================================================================ 
    .code
funct:
    fld1
    fld x
    fld x
    fmul
    fiadd v15
    fsqrt
    fdiv
    fldpi
    fld x
    fld x
    fmul
    fiadd v14
    fsqrt
    fdiv
    fsqrt
    fsub
    fcos
    ret
prog:
    push 1251
    call SetConsoleOutputCP
 
    print "Отрезок ["
    print real10$(a)
 
    print ", "
    print real10$(b)
 
    print "], шаг d = "
    print real10$(d),10, 13
 
;================================================================================
    finit; инициализация сопроцессора
    call funct 
    fld st(0)
    fld st(0)
    fstp min
    fstp max
    fstp rez   ;0.795695
    print "Результат вычисления f(x) = "
    print real10$(rez), 13, 10
;================================================================================
next:    ;  начало цикла.  Вычисление суммы
 
    fld b
    fld a
    fcompp   ; сравнение значения в регистре st(0) и st(1)
             ; после происходит выталкивание из стека значений st(0) и st(1) 
    fstsw ax ; перенос результата сравнения в регистр ax 
    sahf     ; копирование флагов состояния в регистр флагов eflags из ax
    ja fin   ; переход если значение a > b
    
    fld a
    fstp x 
    
    call funct
 
    fld min
    fcomp st(1)
    fstsw ax
    sahf
    jbe no_min
    fld st(0)
    fstp min
no_min: 
 
    fld max
    fcomp st(1)
    fstsw ax
    sahf
    jae no_max
    fld st(0)
    fstp max
no_max: 
   
    fld sum
    faddp st(1),st(0) 
    fstp sum          ;вытолкнуть сумму в sum
    fld d             ;увеличить a на текущее значение d
    fld a
    faddp st(1),st(0)
    fstp a            ;вытолкнуть сумму в a
    jmp next          ;переход на метку next
fin:
    print "Результат вычисления S = "
    print real10$(sum), 13, 10
    print real10$(min), 13, 10
    print real10$(max), 13, 10
;================================================================================
; вычисление минимального - максимального значения на отрезке [а,b]
    inkey
    exit
end prog
1
1 / 1 / 0
Регистрация: 01.01.2011
Сообщений: 46
09.04.2012, 11:53  [ТС] 18
Огромное спасибо наш курс спасен!!!
0
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
09.04.2012, 11:57 19
aniva_romich, что за курс. Напиши поподробнее где задают ето?
1
1 / 1 / 0
Регистрация: 01.01.2011
Сообщений: 46
09.04.2012, 12:09  [ТС] 20
Ю-Сахалинск ЮСИЭПИ 3 курс
0
09.04.2012, 12:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2012, 12:09
Помогаю со студенческими работами здесь

Вычислить значение функции
собственно есть упражнение: F(a,b,c)= (a xor b) and (a or c) результат выполнения должен...

Вычислить значение функции
Здраствуйте! значит, нужно вычислить значение функции ((x+2)^2)/15 вычисления можно проводить...

Вычислить значение функции
Напишите программу на assembler для вычисления значения функции F(x)={3x+5 если x больше или...

Вычислить значение кусочной функции
Вычислить значение функции у= х^2, если 1<=х<=4 у(х) = х^2-5*х+1, если 5<=х<=10 0 в остальных...


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

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