В цикле найти сумму целочисленного ряда - 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
Объяснение кода листинга программы
- Устанавливается значение
2
в регистр bx (делитель). - Устанавливается значение
0
в регистр si (сумма). - Устанавливается значение
2
в регистр di (n). - Устанавливается значение
10
в регистр cx (последний n). - Начинается цикл, помеченный как
summa
. - Значение
n/2
сохраняется в регистре ax. - Сумма в регистре si увеличивается на значение в регистре ax.
- Значение
2
добавляется к регистру di (увеличение n на 2). - Сравнивается значение в регистре di с значением в регистре cx (последний n).
- Если значение в регистре di меньше или равно значению в регистре cx, то происходит возврат к метке
summa
и выполняются шаги 6-9. - Если значение в регистре di больше значения в регистре cx, то цикл завершается.
- Значение из регистра dx копируется в регистр ax.
- Устанавливаются значения
1
и5
в регистры dh и dl соответственно. - Вызывается процедура ProcOutNum для вывода значения из регистра ax на экран.
- Завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д