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

Объяснение кода листинга программы

  1. lodsw - загрузка слова из памяти в регистр AX.
  2. shl ax,1 - сдвиг значения регистра AX вправо на 1 бит.
  3. adc bx,0 - прибавление значения регистра BX к результату предыдущей операции. <-- в BX количество отрицательных элементов
  4. loop @b - переход к следующей итерации цикла, пока не будет выполнено условие в переменной BX.

Оцени полезность:

10   голосов , оценка 3.5 из 5
Похожие ответы