Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2014, 21:49   #1
Astronomer
 
Регистрация: 03.04.2014
Сообщений: 5
По умолчанию Количество положительных элементов массива

Написал прогу нахождения количества положительных и отрицательных элементов массива, но она что-то не считает, помогите разобраться.
Код:
    TITLE MASSIV  
   
   DATA SEGMENT
       
       K1   DW   0  ; кол-во положительных элементов
       K2   DW   0  ; кол-во отрицательных элементов
       
        M   DW   6  DUP(4,-3,6,7,-9)
        
        N   DW   30 
   
   DATA  ENDS
   
   
        PROG SEGMENT
             ASSUME CS: PROG, DS: DATA
             
  START:
         MOV AX, DATA	    ; инициализация сегментного
		 MOV DS, AX		; регистра DS
         MOV AX, 0             ; обнуляем регистр
         LEA BX, M              ; загрузка адреса очередного элемента массива
         MOV CX, N             ; заносим кол-во элем. массива в рег-р.
         
         
  BEGIN: MOV AX, [BX]       ; заносим элемент массива в регистр
         CMP AX, 0               ; если рег-р >= 0 , 
         JAE SUM                  ; тогда  команда SUM
         DEC CX                 ; иначе понижаем содерж. рег-ра, т.к            обработка массива  выполняется сзади. 
         CMP CX, 0               ; т.е переходим к следующему элемету
         JG  BEGIN
         
         MOV DX, K1 
         MOV CX, 30
         SUB CX, DX
          
          
  SUM:   
         INC K1          ; увелич. кол-во полож. эл-ов 
         DEC CX         ; переход к след. элементу
         CMP CX, 0     ; если содерж. ркг-ра > нуля, то команда бегин.
         JG  BEGIN      
                        
         
      PROG  ENDS                                            
           
      END START

Последний раз редактировалось Stilet; 23.06.2014 в 22:01.
Astronomer вне форума Ответить с цитированием
Старый 24.06.2014, 08:52   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а кто BX будет наращивать?! Вы одно и то же первое число всё время проверяете!

и ещё, логика страдает.

вот нашли вы положительное число, перешли по метке SUM, уменьшили счётчик cx, проверили, что он не ноль, ушли на начало цикла.
А если уже ноль?!
тогда выполнится следующий за командой JG BEGIN оператор.
А что у Вас после JG BEGIN в случае положительного числа?! (p.s. сделайте переход на вывод результата)
и после вывода результатов куда управление попадёт, опять на SUM и переход на цикл?!

да и считать что количество отрицательных элементов равно 30 - K1 это не верно. Насколько я понимаю, нулевые значения не должны считаться ни как положительные, ни как отрицательные!

Последний раз редактировалось Serge_Bliznykov; 24.06.2014 в 08:58.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Записать положительные элементы массива X подряд в массив Y. Определить k – количество положительных элементов. Вычислит сумму programmerr Общие вопросы C/C++ 7 16.02.2013 16:40
Дан двумерный массив [4..7]. Hайти количество и сумму квадpатов положительных элементов массива, имеющих четные номера в строках Oraner Паскаль, Turbo Pascal, PascalABC.NET 3 04.11.2012 21:22
найти количество положительных и кратные 7 элементов массива. только простым способом. Паскаль D1SK Помощь студентам 1 06.12.2011 22:04
QBasic. Сумма и количество положительных элементов столбца массива hohol90 Помощь студентам 2 22.10.2011 11:22
Найти количество положительных и нулевых элементов массива Rec0rd Помощь студентам 2 31.01.2010 20:24