Посчитать количество элементов массива, равных нулю - 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
Объяснение кода листинга программы
- Объявляется директива
modelс параметромtiny. - Начало кода программы задается с помощью
org 100h. - Определяется константа
szMas(размер массива), которая равна 20. - Метка
beginобозначает начало блока кода. - Помещается адрес массива в регистр SI с помощью
lea si,dwMas. - В регистр CX помещается размер массива
szMas. - Идет цикл @@01: для обработки элементов массива в регистре AX.
- Проверяется значение элемента на равенство нулю с помощью
or ax,ax. - Если значение элемента не равно нулю, выполняется переход к метке @@02: с помощью
jnz @@02. - Инкрементируется регистр BX, который хранит количество элементов массива, равных нулю с помощью
inc bx. - Происходит обратный переход к метке @@01: для обработки следующего элемента массива с помощью
loop @@01. - Программа завершается с помощью
ret. - Объявляется метка
dwMasдля массива. - Переменная
numинициализируется значением 0. - С помощью директив
reptиendmв массив помещаются элементы, начиная с 0 и увеличивая значение по модулю 4. - Окончание программы указывается с помощью
end begin.