Сложить отдельно положительные и отрицательные элементы массива - Assembler
Формулировка задачи:
В массиве С(12) сложить отдельно элементы положительные и отрицательные. Подсчитать количество элементов в каждой сумме
Решение задачи: «Сложить отдельно положительные и отрицательные элементы массива»
textual
Листинг программы
include io.asm STACK1 segment db 128 dup (?) STACK1 ends DATA segment mus dw 12 dup (?) otr dw 0 pol dw 0 sum_pol dw 0 sum_otr dw 0 text1 db 13,10 ,"kol pol: ",'$' text2 db 13,10 ,"kol otr: ",'$' text3 db 13,10 ,"sum pol: ",'$' text4 db 13,10 ,"sum otr: ",'$' DATA ENDS CODE segment START: ASSUME CS:Code, DS:Data, SS:Stack1 mov ax, Data mov ds, ax mov dx, 0 mov bx, 0 mov di, 0 mov si, 0 mov ax, 0 mov cx, 12 VVOD: ININT ax mov mus[si], ax inc si inc si loop VVOD mov ax, 0 mov si, 0 mov cx, 12 met3: mov ax, mus[si] cmp ax, 0 JL met1 add pol,1 add dx, mus[si] mov sum_pol, dx JMP met2 met1: add otr,1 add bx, mus[si] mov sum_otr, bx met2:inc si inc si loop met3 mov ah, 9h mov dx, OFFSET text1 int 21h mov dx,0 mov dx, pol OUTINT dx add dx,'0' mov ah,02h mov ah, 9h mov dx, OFFSET text2 int 21h mov dx,0 mov dx, otr OUTINT dx add DX,'0' mov ah,02h mov ah, 9h mov dx, OFFSET text3 int 21h mov dx,0 mov dx, sum_pol OUTINT dx add dx,'0' mov ah,02h mov ah, 9h mov dx, OFFSET text4 int 21h mov dx, sum_otr mov dx, dx OUTINT dx add dx,'0' mov ah,02h MOV ah, 10h INT 16h MOV ah, 4ch INT 21h CODE ends end start
Объяснение кода листинга программы
Код выполняет следующие действия:
- Считывает 12 чисел из массива mus в переменные dx, bx, di, si, ax, cx.
- Производит сложение положительных и отрицательных чисел, сохраняя результаты в переменных pol и otr соответственно.
- Выводит на экран количество положительных и отрицательных чисел, а также их сумму.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д