Вычислить количество элементов массива, делящихся нацело на заданное число - Assembler

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

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

всем привет, чайник в ассемблере, буду очень благодарен, помогите плиз с задачей: вычислить количество, делящихся нацело заданным числом, элементов массива. Длина массива, сам массив и делитель(заданное число) вводятся. Массив одномерный. спасибо

Решение задачи: «Вычислить количество элементов массива, делящихся нацело на заданное число»

textual
Листинг программы
    xor cx,cx
    mov bx,10
input:  xor ax,ax
    int 16h
    cmp al,13
    jz  stop_i
    cmp al,'0'
    jb  input
    cmp al,'9'
    ja  input
    push    ax
    and ax,0fh
    xchg    ax,cx
    xor dx,dx
    mul bx
    add cx,ax
    pop ax
    int 29h
    jmp short input

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

  1. xor cx,cx - Задание начального значения счётчика
  2. mov bx,10 - Задание границы цикла
  3. input: - Начало цикла
  4. xor ax,ax - Начальное значение регистра ax равно 0
  5. int 16h - Ввод символа с клавиатуры в регистр al
  6. cmp al,13 - Проверка на нажатие клавиши Enter
  7. jz stop_i - Если нажата клавиша Enter, то прекращение цикла
  8. cmp al,'0' - Проверка на ввод цифры от 0 до 9
  9. jb input - Если введена цифра меньше 0, то повторный ввод
  10. cmp al,'9' - Проверка на ввод цифры от 0 до 9
  11. ja input - Если введена цифра больше 9, то повторный ввод
  12. push ax - Сохранение значения регистра ax в стеке
  13. and ax,0fh - Получение номера строки массива из регистра ax
  14. xchg ax,cx - Регистр cx содержит количество элементов массива
  15. xor dx,dx - Начальное значение регистра dx равно 0
  16. mul bx - Умножение количества элементов массива на значение переменной bx
  17. add cx,ax - Увеличение счётчика на количество элементов массива, получившееся при умножении
  18. pop ax - Восстановление значения регистра ax из стека
  19. int 29h - Вывод значения регистра ax на экран
  20. jmp short input - Возврат к началу цикла

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

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