Из массива чисел сформировать новый массив, в который должны войти нечетные числа - 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 НеЧётное

Объяснение кода листинга программы

  1. Переменная test содержит в себе значение первого элемента массива.
  2. Переменная al содержит в себе значение массива.
  3. Переменная 1 содержит в себе значение 1.
  4. Переменная НеЧётное содержит в себе значение, которое определяет является ли число нечётным.
  5. Выполняется сравнение значения переменной test и 1.
  6. Если результат сравнения не равен нулю (т.е. значение переменной test не равно 1), то выполняется переход к следующей итерации цикла.
  7. Если результат сравнения равен нулю (т.е. значение переменной test равно 1), то выполняется переход к следующей итерации цикла.
  8. Значение переменной test увеличивается на 1.
  9. Выполняется проверка на нечётность значения переменной test. Если значение нечётное, то выполняется переход к следующей итерации цикла.
  10. Если значение переменной test чётное, то выполняется выход из цикла.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5
Похожие ответы