0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 21
1

Не выполняется вычисление суммы ряда

18.04.2018, 12:24. Показов 1045. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Условие задачи: по заданным числам найти сумму ряда, где i = 1;5. Сам ряд:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\sum_{i=1}^{N=5}=i+(o*b-e)*a*d

Значение переменных: a = 25, b = 24, o = 26, d = 25, e = 29. Результатом суммы должно быть S = 1 859 390

Всё компилится, но почему-то вычисление не заканчивается, мб зацикливается, не знаю. Вопрос такой: что я делаю не так?

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
; =======================================
.Model Small    ; Малая модель памяти
.Stack 100h     ; Для стека выделяется 100h байт
.Data           ; начало сегмента данных
N dw 5      ; Определение перменной N, начальное значение 5
a dw 25     ; Определение перменной a, начальное значение 25
b dw 24     ; Определение перменной b, начальное значение 24
o dw 26     ; Определение перменной o(c), начальное значение 26
d dw 25     ; Определение перменной d, начальное значение 25
e dw 29     ; Определение перменной e, начальное значение 29
S dw 0      ; Определение перменной S, начальное значение 0
f dw 0      ; Определение перменной f, начальное значение 0
 
.Code           ; начало сегмента кода
begin:
mov ax,@Data    ; загрузка в регистр ax адреса сегмента данных
mov ds,ax   ; загрузка в регистр ds адреса сегмента данных
mov cx,N    ;cx: = N - начальный параметр цикла (=5)
 
lab1:
call Proced1    ;вычислить Proced1 для cx = i
mov bx,f
add S,bx    ;S: = S + f - прибавление к сумме текущего значения слагаемого
loop lab1   ;cx: = cx - 1(текущий параметр цикла i=i-1)
        ; пока cx>0, то на lab1:
 
nop     ; команда «нет операции»: удобно использовать 
        ;в качестве конца программы при запуске в DEBUG 
 
Proced1 proc    ;подпрограмма Proced1 - вычисления f(i)=i+(c*b-e)*a*d
        ;параметр i передается через регистр cx
 
mov ax,o    ;ax: = c
imul b      ;ax: = c*b
sub ax,e    ;ax: = (c*b-e)
imul a      ;ax: = (c*b-e)*a
imul d      ;ax: = (c*b-e)*a*d
add cx,ax   ;ax: = f(i)
mov f,ax    ;результат передается в основную программу через f
ret     ;возврат в основную программу
Proced1 endp
 
end begin   ; конец сегмента кода
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2018, 12:24
Ответы с готовыми решениями:

Вычисление суммы ряда (ассемблерные вставки)
Вычислить сумму ряда \sum_{k=1}^{n}(2k-1), (n \leq 10), используя ассемблерные вставки. Проблема в...

Вычисление суммы ряда через ассемблерную вставку
Вычислить сумму ряда , используя ассемблерные вставки. Фото вставил внизу! программа должна быть на...

Вычисление суммы ряда с заданным числом членов ряда
Разработать алгоритм и программу на языке ASSEMBLER для вычисления суммы с заданным числом N...

Вычисление суммы ряда sqrt(i + 1/2) / i^3 с заданной точностью
Вычислите используя FPU следующую сумму с точностью с точностью E=0.001 Исходные данные...

2
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
18.04.2018, 12:40 2
Лучший ответ Сообщение было отмечено ReednessFox как решение

Решение

ReednessFox, как минимум, добавьте после своего nop-а
Assembler
1
2
    mov    ax, 4c00h
    int 21h
Вообще говоря, условие странное какое-то... Индекс практически никак не связан с переменными a-e
Гораздо проще было бы посчитать 1+2+3+4+5+5*(o*b-e)*a*d

Добавлено через 3 минуты
Еще ошибка: вместо
Assembler
1
    add cx,ax   ;ax: = f(i)
надо
Assembler
1
    add ax,cx   ;ax: = f(i)
Добавлено через 1 минуту
Из-за отсутствия первых строк программа не могла завершиться.
Из-за последней - бесконечно циклила
1
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 21
18.04.2018, 17:52  [ТС] 3
Цитата Сообщение от liv Посмотреть сообщение
Вообще говоря, условие странное какое-то...
Какое есть. Воля препода - закон

liv, спасибо вам. Всё работает)
0
18.04.2018, 17:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2018, 17:52
Помогаю со студенческими работами здесь

По формуле члена ряда с номером k . Вычисление суммы всех членов ряда
По заданной формуле (k+2)/(k³+4) члена ряда с номером k составить программу вычисления суммы всех...

Вычисление суммы членов ряда с точностью до члена ряда, меньшего ε
Составить программу для вычисления суммы членов ряда с точностью до члена ряда, меньшего ε( по...

Вычисление суммы членов бесконечного ряда с точностью до члена ряда, меньшего ε
Доброе утро, форум. Если кому не сложно, то помогите с программой, вернее найти ошибку в ней Само...

Цикл: вычисление суммы членов бесконечного ряда с точностью до члена ряда, меньшего ε
Добрый вечер, помогите пожалуйста: Составить программу для вычисления суммы членов бесконечного...

Вычисление частичной суммы ряда (для n членов ряда)
Напишите пожалуйста метод вычисления частичной суммы ряда. Необходимо узнать последовательность...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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