Найти количество положительных чисел (тип данных: слово) - Assembler
Формулировка задачи:
Найти количество положительных чисел (тип данных: слово)
Решение задачи: «Найти количество положительных чисел (тип данных: слово)»
textual
Листинг программы
mov bx,0; счетчик отрицательных чисел
mov si,offset Mass
mov cx,N; общее количество чисел
a1: lodsw; mov ax,[si] si:=si+2
cwd; if ax<0 then dx:=-1 else dx:=0
add bx,dx; if ax<0 then bx:=bx-1 else bx:=bx
loop a1; в начало цикла
add bx,N; общее количество чисел минус количество отрицательных равно количеству положительных
Объяснение кода листинга программы
- В начале программы инициализируются две переменные: bx = 0 (счетчик отрицательных чисел) и si = offset Mass (смещение массива).
- Затем инициализируется переменная cx = N (общее количество чисел).
- Далее начинается цикл, который будет выполняться до тех пор, пока не будет выполнено условие для выхода из цикла.
- Внутри цикла происходит следующее: — lods sw (загрузка слова из памяти по смещению si и перевод его в регистр ax). — cwd (перевод регистра ax из формата счисления с фиксированной точкой в формат счисления с плавающей точкой). — если ax < 0, то dx = -1 (отрицательное число), иначе dx = 0 (положительное или ноль). — add bx, dx (увеличение bx на dx). — если ax < 0, то bx = bx - 1 (уменьшение bx на 1), иначе bx = bx (без изменений).
- После окончания цикла вычисляется общее количество положительных чисел: add bx, N.