Найти количество отрицательных элементов массива - Assembler (224166)
Формулировка задачи:
В сегменте данных имеется 100 байтовый массив с отрицательными значениями. Найти сумму положительных и количество отрицательных элементов. Результаты записать в память.
Я нашла сумму положительных элементов, а на количестве отрицательных застряла, ибо в ассемблере не сильна..Помогите, пожалуйста.
masm
model small
.stack 128
.data
size equ 10
mas db size dup (?)
sum dw ?
.code
start: . . . ; ввод элементов массива
mov cx, size
lea bx, mas
xor ax,ax ; накапливается сумма в ax
begin: add ax,[bx]
inc bx ;переход к следующему элементу (размер элемента=1 байту)
loop begin
mov sum,ax
end startРешение задачи: «Найти количество отрицательных элементов массива»
textual
Листинг программы
@@: lodsw shl ax,1 adc bx,0 <-- в BX количество отрицательных элементов loop @b
Объяснение кода листинга программы
lodsw- загрузка слова из памяти в регистр AX.shl ax,1- сдвиг значения регистра AX вправо на 1 бит.adc bx,0- прибавление значения регистра BX к результату предыдущей операции. <-- в BX количество отрицательных элементовloop @b- переход к следующей итерации цикла, пока не будет выполнено условие в переменной BX.