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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2010, 23:14   #1
True_girl
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 28
По умолчанию Одномерный массив.

Ребята, помогите разобраться с массивами ассемблере.
Вот есть такое задание :
Удалить нечетные по значению элементы. Отсортировать полученный массив по убыванию.

Вопрос в следующем. Как на ассемблере определить, что элемент четный/нечетный и как удалить?
True_girl вне форума Ответить с цитированием
Старый 04.07.2010, 23:42   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Как на ассемблере определить, что элемент четный/нечетный
Проверить младший бит...
p51x вне форума Ответить с цитированием
Старый 04.07.2010, 23:44   #3
True_girl
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 28
По умолчанию

можно поподробней?
как это сделать?


как удалить элемент?

Последний раз редактировалось True_girl; 05.07.2010 в 00:02.
True_girl вне форума Ответить с цитированием
Старый 05.07.2010, 01:04   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
можно поподробней?
Куда уж подробнее... Рассмотрите как отличаются числа с установленным/сброшенным младшим битом.

Цитата:
как это сделать?
Кучей способов... Например, битовым И с нужной константой.

Цитата:
как удалить элемент?
Опять же есть несколько вариантов. Как бы вы поступили на любом другом (алгоритмическом) языке?
p51x вне форума Ответить с цитированием
Старый 05.07.2010, 15:08   #5
True_girl
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 28
По умолчанию

спасибо огромное. В процессе выполнения появилась проблема. Я решила не удалять элементы, а занести четные элементы в новый массив result, когда он сформировался его надо вывести на экран,тот метод, который нам дал препод не работает,как правильно вывести получившийся массив?

Код:
sseg   segment stack 'stack'
    db  64  dup(0)
sseg ends

dseg segment

array  DB  2,1,7,3,4  
n db 5 
result db dup(0)      
s db dup(0)
 dseg ends
 cseg segment 
     assume cs: cseg ss:sseg ds:dseg  
     lab3   proc      far  
     push      ds     
     sub       ax,ax 
     push      ax  
     mov       ax,dseg
     mov       ds,ax  
     
             
    
mov si,offset array
m1: lodsb 
       test al,00000001b
       jz m2
       add [result],al 
       adc [result+1],0    
      ; cmp array, 5 
      ; jne m1
      ; jmp print
    
m2: 
  mov al, result[si]  
  cmp si, 5 
  jne m1
  jmp print      
  
  

print:
 mov dl, 30h   
 mov cl, ','    
 sub si,si
j1: 
 mov al, result[si]
 add al,dl
 mov  s[si],al
 inc si
 mov s[si],cl
 inc si
 cmp si,dx
 jl j1
 mov ah, 09h
 mov dx, offset s
 int 21h/9h   
         ret
lab3   endp
                        
cseg ends

end lab3

Последний раз редактировалось True_girl; 05.07.2010 в 15:13.
True_girl вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив Горящее сердце Помощь студентам 5 02.06.2010 18:42
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Одномерный массив AlexPavL Помощь студентам 1 28.12.2009 18:51
Одномерный массив AlexPavL Помощь студентам 0 23.12.2009 19:00
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40