Посчитать количество элементов массива, равных нулю - Assembler

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

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

Посчитать количество элементов массива, равных нулю, и записать их в Rg AX (формат элементов массива - слово)

Решение задачи: «Посчитать количество элементов массива, равных нулю»

textual
Листинг программы
model   tiny
.code
org 100h
szMas   equ 20
begin:  lea si,dwMas
    mov cx,szMas
@@01:   lodsw
    or  ax,ax
    jnz @@02
    inc bx
@@02:   loop    @@01
    ret
dwMas   label   word
num =   0
    rept    szMas
    dw  num
num =   (num+1) mod 4
    endm
    end begin

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

  1. Объявляется директива model с параметром tiny.
  2. Начало кода программы задается с помощью org 100h.
  3. Определяется константа szMas (размер массива), которая равна 20.
  4. Метка begin обозначает начало блока кода.
  5. Помещается адрес массива в регистр SI с помощью lea si,dwMas.
  6. В регистр CX помещается размер массива szMas.
  7. Идет цикл @@01: для обработки элементов массива в регистре AX.
  8. Проверяется значение элемента на равенство нулю с помощью or ax,ax.
  9. Если значение элемента не равно нулю, выполняется переход к метке @@02: с помощью jnz @@02.
  10. Инкрементируется регистр BX, который хранит количество элементов массива, равных нулю с помощью inc bx.
  11. Происходит обратный переход к метке @@01: для обработки следующего элемента массива с помощью loop @@01.
  12. Программа завершается с помощью ret.
  13. Объявляется метка dwMas для массива.
  14. Переменная num инициализируется значением 0.
  15. С помощью директив rept и endm в массив помещаются элементы, начиная с 0 и увеличивая значение по модулю 4.
  16. Окончание программы указывается с помощью end begin.

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

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