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

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

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

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

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

textual
Листинг программы
  1. masm
  2. model small
  3. .stack 256
  4. .data
  5. .code
  6. .startup
  7. jmp main
  8. include io1.inc
  9. main:
  10.  
  11. mov bx, 2 ;делитель
  12. mov si, 0 ;сумма
  13. mov di, 2 ;n
  14. mov cx, 10 ;последний n
  15. summa:
  16. mov ax, di ;ax=n/2
  17. mov dx, 0
  18. div bx
  19. add si, ax ;summa=summa+n/2
  20. add di, 2 ;n=n+2
  21. cmp di, cx
  22. jbe summa
  23.  
  24. mov ax,dx
  25. mov dh,1
  26. mov dl,5
  27. call ProcOutNum
  28. .exit
  29. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы