Найти количество отрицательных элементов массива - 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.