Из массива чисел сформировать новый массив, в который должны войти нечетные числа - Assembler
Формулировка задачи:
Дан массив чисел Х = 0,3,-15,19,-26,49,-61,18,55,4. Необходимо сформировать новый массив Y в который должны войти нечетные числа.
Сделал по примеру похожей программы, но что-то не правильно и не могу понять где
SDATA SEGMENT WORD PUBLIC 'DATA'
ARRAY_X DB 0,3,-15,19,-26,49,-61,18,55,4 ; - массив чисел X
ARRAY_Y DB 10 DUP(0) ; - массив чисел Y
SDATA ENDS
SSTACK SEGMENT PARA STACK 'STACK'
DW 64 DUP(?)
STACK_POINT LABEL WORD
SSTACK ENDS
START: MOV AX,SDATA
MOV DS,AX
MOV AX,SSTACK
MOV SS,AX
MOV SP,OFFSET STACK_POINT
MOV SI,0
MOV DI,0
MOV CX,10
M1: MOV AL,ARRAY_X[SI]
IDIV 2
CMP AL,2
JGE M2
MOV ARRAY_Y[DI],AL
INC DI
M2: INC SI
LOOP M1
MOV AX,4C00H
INT 21H
SCODE ENDS
END STARTРешение задачи: «Из массива чисел сформировать новый массив, в который должны войти нечетные числа»
textual
Листинг программы
test al,1 jnz НеЧётное
Объяснение кода листинга программы
- Переменная
testсодержит в себе значение первого элемента массива. - Переменная
alсодержит в себе значение массива. - Переменная
1содержит в себе значение 1. - Переменная
НеЧётноесодержит в себе значение, которое определяет является ли число нечётным. - Выполняется сравнение значения переменной
testи1. - Если результат сравнения не равен нулю (т.е. значение переменной
testне равно 1), то выполняется переход к следующей итерации цикла. - Если результат сравнения равен нулю (т.е. значение переменной
testравно 1), то выполняется переход к следующей итерации цикла. - Значение переменной
testувеличивается на 1. - Выполняется проверка на нечётность значения переменной
test. Если значение нечётное, то выполняется переход к следующей итерации цикла. - Если значение переменной
testчётное, то выполняется выход из цикла.