В массиве все положительные элементы массива просуммировать, а отрицательные элементы удвоить - 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
.
- Завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д