В цикле найти сумму целочисленного ряда - Assembler

Узнай цену своей работы

Формулировка задачи:

Требуется помощь с заданием. Заранее спасибо! Тема: Циклы сумма Задание: Найти сумму, заданных формулой n/2, где n=2,4,6,8,10 Примерно я пытался сделать. Вот что получилось(но это неправильно!):
masm
model small
.stack 256
.data
.code
.startup
jmp main
include io1.inc
main:
 
mov cx,10
mov ax,00
mov bx, 2  ;шаг
summa:
cmp dx,cx
add ax, bx ;шаг
mov dx,ax
add dx,ax
jnp summa
 
mov ax,dx
mov dh,1
mov dl,5
call ProcOutNum
.exit
end

Решение задачи: «В цикле найти сумму целочисленного ряда»

textual
Листинг программы
masm
model small
.stack 256
.data
.code
.startup
jmp main
include io1.inc
main:
 
mov bx, 2 ;делитель
mov si, 0 ;сумма
mov di, 2 ;n
mov cx, 10 ;последний n
summa:
mov ax, di ;ax=n/2
mov dx, 0
div bx
add si, ax ;summa=summa+n/2
add di, 2 ;n=n+2
cmp di, cx
jbe summa
 
mov ax,dx
mov dh,1
mov dl,5
call ProcOutNum
.exit
end

Объяснение кода листинга программы

  1. Устанавливается значение 2 в регистр bx (делитель).
  2. Устанавливается значение 0 в регистр si (сумма).
  3. Устанавливается значение 2 в регистр di (n).
  4. Устанавливается значение 10 в регистр cx (последний n).
  5. Начинается цикл, помеченный как summa.
  6. Значение n/2 сохраняется в регистре ax.
  7. Сумма в регистре si увеличивается на значение в регистре ax.
  8. Значение 2 добавляется к регистру di (увеличение n на 2).
  9. Сравнивается значение в регистре di с значением в регистре cx (последний n).
  10. Если значение в регистре di меньше или равно значению в регистре cx, то происходит возврат к метке summa и выполняются шаги 6-9.
  11. Если значение в регистре di больше значения в регистре cx, то цикл завершается.
  12. Значение из регистра dx копируется в регистр ax.
  13. Устанавливаются значения 1 и 5 в регистры dh и dl соответственно.
  14. Вызывается процедура ProcOutNum для вывода значения из регистра ax на экран.
  15. Завершение программы.

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы