По формуле члена ряда найти сумму первых 13 членов - Assembler
Формулировка задачи:
Снова я , помогите с программой ( говоря простым языком , кто не занят ,или кого не затруднит , напишите ее -_-)
Команда LOOP. Обработка данных в цикле (без использования ветвлений)
По заданной формуле члена ряда с номером k: Ak=5•k+1 найти сумму первых 13 членов.
Решение задачи: «По формуле члена ряда найти сумму первых 13 членов»
textual
Листинг программы
- LOCALS
- .model small
- .stack 100h
- .data
- Sum dw ?
- .code
- main proc
- mov ax, @data
- mov ds, ax
- mov bx, 0 ;сумма
- mov cx, 13 ;cx=k - номер члена ряда
- mov di, 5
- @@For:
- mov ax, cx
- mul di ;Ak=ax=5*k+1
- add ax, 1
- add bx, ax ;S:=S+Ak
- loop @@For
- mov Sum, bx
- mov ax, 4C00h
- int 21h
- main endp
- end main
Объяснение кода листинга программы
- Выделяются переменные:
Sum
- хранит сумму первых 13 членов ряда (16-битное беззнаковое целое)
- Инициализируется сегмент данных:
ax
загружается адрес сегмента данных (@data)ds
принимает значениеax
для установки сегмента данных
- Инициализируются начальные значения переменных:
bx
устанавливается в 0 для хранения суммыcx
устанавливается в 13 для представления номера члена рядаdi
устанавливается в 5 (по-видимому для использования в вычислениях)
- Цикл для вычисления суммы первых 13 членов:
4.1. Вычисляется значение члена ряда:
ax
=cx
*di
+ 1 4.2. Это значение добавляется к общей сумме:bx
=bx
+ax
4.3. Происходит уменьшениеcx
на 1 (используя команду LOOP) и еслиcx
не равно 0, цикл продолжается - Когда цикл завершается, значение суммы сохраняется в переменной
Sum
- Программа завершается командами:
ax
устанавливается в 4C00h для завершения программы- Происходит вызов 21h прерывания для завершения программы
Итак, программа вычисляет сумму первых 13 членов ряда с использованием цикла и сохраняет эту сумму в переменной
Sum
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д