;*****************************************************************
; определение  области памяти, используемой для хранения данных
;
SDATA SEGMENT WORD PUBLIC 'DATA'
ARRAY_X	DB 0,-1,22,-34,43,-51,-63,17,8,-95; - массив чисел X
ARRAY_Y	DB 10  DUP(0)	; - массив чисел Y
SDATA ENDS
;*****************************************************************
; определение  области стека
SSTACK SEGMENT PARA STACK 'STACK'
DW 64 DUP (?)
STACK_POINT LABEL WORD
SSTACK ENDS
;*****************************************************************
; определение программного сегмента
SCODE SEGMENT WORD PUBLIC 'CODE'
ASSUME CS:SCODE,DS:SDATA,SS:SSTACK
START:  MOV AX,SDATA	;запись сегментного адреса
MOV DS,AX	;данных в регистр DS
MOV AX,SSTACK	; Определение сегмента стека
MOV SS,AX	; и указателя стека
MOV SP,OFFSET STACK_POINT
; Инициализация исходных данных
MOV SI,0	;- SI содержит индекс массива X
MOV DI,0	;- DI содержит индекс массива Y
MOV CX,10       ;- CX:= число элементов массива X
; Начало цикла
M1:	MOV AL,ARRAY_X[SI] ;- занесение очередного элемента
;  массива X в аккумулятор
test AL,al	;- сравнение содержимого AL
;с числом 12
Jpo M2          ;- переход на M2 если паритет нечетный
MOV ARRAY_Y[DI],AL    ;- запись в массив Y
INC DI	        ;- увеличение DI на 1
M2:  INC SI     ;- увеличение SI на 1
LOOP M1	        ;- переход на метку M1
MOV AX,4C00H	;- выход из программы
INT 21H	        ;- выполняется функция DOS, номер
;  которой находится в AH
SCODE   ENDS	;- конец кодового сегмента программы
END START	;- конец программы

