В массиве все положительные элементы массива просуммировать, а отрицательные элементы удвоить - Assembler
Формулировка задачи:
Добрый день, постановка задачи такая:
Дан массив А(20). Все положительные элементы массива просуммировать, а отрицательные элементы удвоить.
Я прогу написал, но не уверен, что она работает должным образом.
Кому не трудно, проверьте, пожалуйста.
Листинг программы
- data segment para 'data'
- arrayA dw 5,3,1,0,9,-1,-4,3,7,,-9,-2,2,4,5,43,-4,2,-2,1,3
- sum dw 0
- sum2 dw 2
- data ends
- assume CS:code, DS:data
- stk segment stack para 'stack'
- db 256 dup (?)
- stk ends
- code segment para 'code'
- begin: mov AX, data
- mov DS, AX
- mov cx,20
- lea bx, arrayA
- xor si,si
- M: mov ax, [bx+si]
- cmp ax,0
- jae m1
- inc si
- inc si
- loop m
- m1: add sum, Ax
- inc si
- inc si
- lea bx, arrayA
- xor si,si
- M2: mov ax, [bx+si]
- cmp ax,0
- jb me2
- inc si
- inc si
- loop m
- me2: imul sum2
- inc si
- inc si
- lea bx, arrayA
- xor si,si
- loop M
- loop M2
Решение задачи: «В массиве все положительные элементы массива просуммировать, а отрицательные элементы удвоить»
textual
Листинг программы
- var
- Sum: integer;
- i: integer
- begin
- Sum := 0;
- for i:=0 to 19 do
- if A[i]<0 then
- A[i] := 2*A[i]
- else
- Sum := Sum + A[i];
- end.
Объяснение кода листинга программы
- Объявление переменных:
Sum
- переменная типа integer для хранения суммы положительных элементов массива.i
- переменная типа integer для использования в цикле.
- Инициализация переменной
Sum
:Sum := 0;
- устанавливает начальное значение суммы равное нулю.
- Цикл:
for i:=0 to 19 do
- начинается цикл, в котором переменнаяi
принимает значения от 0 до 19.
- Проверка условия:
if A[i]<0 then
- если элемент массива A с индексом i отрицательный, то выполняется следующее действие.
- Удвоение отрицательного элемента:
A[i] := 2*A[i]
- отрицательный элемент A[i] умножается на 2.
- Суммирование положительных элементов:
Sum := Sum + A[i];
- значение положительного элемента A[i] прибавляется к переменнойSum
.
- Завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д