Цикл: определить количество четных элементов в массиве и индекс первого четного - Assembler

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

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

Определить количество четных элементов в массиве и индекс первого четного.

Решение задачи: «Цикл: определить количество четных элементов в массиве и индекс первого четного»

textual
Листинг программы
    use16
    org 100h
;   mov al, [massiv]        ;Первый элемент в регистр AL
 
    xor bx, bx          ;В BX - адрес начала массива
    mov cx, mas_sz      ;В CX - количество элементов
    xor dx, dx          ; результат
    xor si, si          ; первый чётный, индекс
    dec si
cycle:
    bt  word [massiv+bx],0  ;помещаем в CF младший бит элемента с адресом massiv[BX]
    cmc             ; инвертитуем флаг CF
    jnc @F          ; нечетный - дальше
    adc dx, 0           ; увеличиваем счётчик
    or  si, si
    jns @F
    mov si, bx
 
@@: inc bx
    loop    cycle           ;циклически повторяем действиe
    push    dx
    mov ah,9
    mov dx, even1
    int 21h
    mov ax, si
    call    cvt
    mov ah,9
    mov dx, even2
    int 21h
    mov al, [massiv+si]
    cbw
    call    cvt
    mov ah,9
    mov dx, even3
    int 21h
    pop ax
    call    cvt
 
    xor ax, ax          ;задержка экрана
    int 16h
    int 20h
; 0 - 99
cvt:    aam
    or  ax, 3030h
    xchg    ah,al
    int 29h
    xchg    ah,al
    int 29h
    ret
massiv: db  0,1,3,6,2,9,8,5, 4, 2   ;Объявляем массив
mas_sz  =       $ - massiv
chet:   rb 1            ;Резервируем память под переменную chet
i:  db 0
even1:  db  'Первый чётный: индекс = $'
even2:  db  0Dh, 0Ah, 'значение = $'
even3:  db  0Dh, 0Ah, 'Всего чётных: $'

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

Код выполняет следующие действия:

  1. В регистр AL записывается первый элемент массива.
  2. В BX записывается адрес начала массива.
  3. В CX записывается количество элементов в массиве.
  4. Результат инициализируется как ноль.
  5. Индекс первого четного элемента устанавливается как 1.
  6. Начинается цикл, который повторяется до тех пор, пока не будет достигнуто условие выхода из цикла.
  7. В каждом цикле выполняется проверка на четность текущего элемента массива, начиная с первого.
  8. Если элемент четный, то увеличивается счетчик четных элементов и сохраняется индекс этого элемента.
  9. Если элемент нечетный, то цикл продолжается.
  10. Если в массиве больше нет элементов, то выполняется завершающая часть программы.
  11. Выводится сообщение с количеством четных элементов и их индексом. Переменные:
  12. use16 - сегмент данных.
  13. org 100h - начало сегмента данных.
  14. masiv - массив для обработки.
  15. mas_sz - размер массива.
  16. chet - переменная для хранения результата.
  17. i - счетчик для цикла.
  18. even1, even2, even3 - строки для вывода результатов. Значения переменных:
  19. use16 = 16.
  20. org 100h - начальный адрес сегмента данных.
  21. masiv - массив с четными элементами.
  22. mas_sz = 10 - размер массива.
  23. chet = 0 - начальное значение счетчика четных элементов.
  24. i = 0 - счетчик для цикла.
  25. even1, even2, even3 - строки для вывода результатов.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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