Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

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

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

Дан массив чисел Х = 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, 15:44   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 11,718
Репутация: 1932

icq: 216409213
По умолчанию

А вы не пробовали свой цикл прочитать? Взять элемент, поделить его на 2, сравнить частное с 2 и это частное занести в другой массив. Все правильно?..
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 25.02.2018, 17:57   #3
R71MT
Профессионал
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,152
Репутация: 938
По умолчанию

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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сформировать новый массив из элементов массива, значения которых = 0 Liori Общие вопросы C/C++ 2 02.01.2015 18: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 20:14


10:04.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru