Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2018, 14:19   #1
Marcus75
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 15
Восклицание Из массива чисел сформировать новый массив, в который должны войти нечетные числа

Дан массив чисел Х = 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
Marcus75 вне форума Ответить с цитированием
Старый 25.02.2018, 14:44   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,694
По умолчанию

А вы не пробовали свой цикл прочитать? Взять элемент, поделить его на 2, сравнить частное с 2 и это частное занести в другой массив. Все правильно?..
p51x вне форума Ответить с цитированием
Старый 25.02.2018, 16:57   #3
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Marcus75, нельзя проверять так число на чётность!
команда деления изменяет содержимое(AL), а ты потом сохраняешь его.
нужно проверять младший бит числа на единицу - если нуль, то число чётное.
вот пример...
Код:
.386
.model  small         ; делаем exe-file
.stack  100h          ; 256-байт для стека

.data
array_x  db  0,3,-15,19,-26,49,-61,18,55,4
array_y  db  10 dup(0)

.code
      mov   ax,@data
      mov   ds,ax            ; настраиваем сегм.регистры
      mov   es,ax            ;   ..для строковых инструкций.

      lea   si,array_x       ; DS-SI для LODSB (чтение)
      lea   di,array_y       ; ES-DI для STOSB (запись)
      mov   cx,10            ; длина цикла
      xor   ah,ah            ; в AH будет кол-во найденых

m1:   lodsb                  ; AL = байт из DS:SI
      test  al,1             ; проверить мл.бит
      jz    m2               ; перейти, если нуль (число чётное)
      stosb                  ; иначе: сохранить AL в DI
      inc   ah               ; увеличить счётчик найденых
m2:   loop  m1               ; промотать СХ-раз...

      mov   ax,4c00h         ; выход в DOS!
      int   21h              ;
end
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сформировать новый массив из элементов массива, значения которых = 0 Liori Общие вопросы C/C++ 2 02.01.2015 17:54
assembler. Задан массив А из N чисел. Преобразовать этот массив так, чтобы сначала шли четные числа, а потом – нечетные Transcend Помощь студентам 5 18.03.2013 11:42
(С/С++) Сформировать новый массив из положительных нечетных элементов заданного массива Р(20) Chak1483 Помощь студентам 2 02.12.2011 12:05
(С/С++) Сформировать новый массив из положительных нечетных элементов заданного массива Р(20) Chak1483 Общие вопросы C/C++ 0 01.12.2011 22:05
из четных чисел исходного массива сформировать новый массив sanya006 Помощь студентам 3 11.11.2009 19:14