Лекции по ассемблеру / прим_арх2
.docПрограмма подсчета количества нулевых элементов в одномерном массиве (векторе)
TITLE prg_10_2
STACK SEGMENT PARA STACK ‘STACK’
DB 64 DUP(‘STACK’) ; Область стека
STACK ENDS
DSEG SEGMENT PARA PUBLIC ‘DATA’
Mas db 1,0,9,8,0,7,8,0,2,0 ; это заданный одномерный массив байт
Len_mas equ 10 ; количество элементов в массиве, это же количество
;можно получить как len_mas=$ - mas
DSEG ENDS
CSEG SEGMENT PARA PUBLIC ‘CODE’
ASSUME CS:CSEG, DS:DSEG, SS:STACK
START PROC FAR
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DSEG ; инициировать адрес сегмента данных
MOV DS,AX
MOV СX, LEN_MAS ; в сх – счетчик элементов массива
XOR AX,AX
XOR SI,SI
CYC1: JCXZ EXIT ; проверка сх на 0, если 0, то выход
CMP MAS[SI],0 ;сравнить очередной элемент задан. массива с 0
JNE M1 ; если не равно 0, то на m1
INC AL ; увеличение счетчика нулевых элементов
M1: INC SI ; перейти к следующему элементу
DEC CX ; уменьшить счетчик элементов на 1
JMP CYC1
EXIT: MOV AX, 4C00H
INT 21H ; возврат управления операционной системе
START ENDP
CSEG ENDS
END START
да
нет
нет
да