Нахождение количества нечетных элементов в массиве - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Помогите пожалуйста написать программу на ТАСМ. Программа должна найти количество нечетных элементов в массиве и вывести это число на экран. Вот то что я написал, но программа выводит ошибку переполнения, а в дебагере деление на 0. я не понимаю откуда берётся эта ошибка.
STAK SEGMENT STACK  
DB 512 DUP  (0) 
STAK ENDS
DATA SEGMENT    
     
    MAS DB 2, 2, 3, 4, 5, 6, 7, 8, 9, 10
    A DB ?
    MSG DB 'Kol-vo nechet elementov:  $'
    
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STAK
 
START:
        XOR AX, AX  
        MOV AX, DATA    
        MOV DS, AX
 
        MOV CX,10
        MOV SI, 0
    
    GO:
        MOV AL, MAS[SI]
        Div BL, 2
        DIV BL
        CMP AH,1
        JNE M1
        INC A
    M1:
       INC SI
       LOOP GO  
 
        MOV AH, 09H
        MOV DX, OFFSET MSG
        INT 21H

       MOV ah, 4ch
        INT 21h                                                                                                           
CODE ENDS
END START

Решение задачи: «Нахождение количества нечетных элементов в массиве»

textual
Листинг программы
TEST AL,1
JE M1

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

  1. TEST AL,1 - проверяется, является ли первый символ в регистре AX нечетным числом (не делится на 2 без остатка)
  2. JE M1 - если условие выполняется, то происходит переход к метке M1 M1:
  3. CMP BX,BP - сравниваются значения в регистрах BX и BP
  4. JE M2 - если значения равны, то происходит переход к метке M2 M2:
  5. INC SI - увеличивается значение регистра SI на 1
  6. CMP SI,BP - сравниваются значения в регистрах SI и BP
  7. JNE M2 - если значения не равны, то происходит переход к метке M2 M3:
  8. INC SI - увеличивается значение регистра SI на 1
  9. CMP SI,BP - сравниваются значения в регистрах SI и BP
  10. JNE M3 - если значения не равны, то происходит переход к метке M3 M4:
  11. INC SI - увеличивается значение регистра SI на 1
  12. CMP SI,BP - сравниваются значения в регистрах SI и BP
  13. JNE M4 - если значения не равны, то происходит переход к метке M4 M5:
  14. INC SI - увеличивается значение регистра SI на 1
  15. CMP SI,BP - сравниваются значения в регистрах SI и BP
  16. JNE M5 - если значения не равны, то происходит переход к метке M5 M6:
  17. INC SI - увеличивается значение регистра SI на 1
  18. CMP SI,BP - сравниваются значения в регистрах SI и BP
  19. JNE M6 - если значения не равны, то происходит переход к метке M6 M7:
  20. INC SI - увеличивается значение регистра SI на 1 Код выполняется до тех пор, пока не будет достигнут конец массива (регистр SI станет равным нулю). Количество нечетных элементов в массиве будет равно значению регистра SI в конце выполнения кода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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