Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Одномерный массив 
:(
    Опции темы
Truegirl
Дата 4.7.2010, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 20.11.2008

Репутация: нет
Всего: нет



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

Вопрос в следующем. Как на ассемблере определить, что элемент четный/нечетный и как удалить? 

PM MAIL   Вверх
DarkProg
Дата 5.7.2010, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



Выполнить операцию деления на 2 и посмотреть остаток, если остаток равен 0, значит чётный элемент в противном нечетный.

Удалить элемент можно одним из способов как в высокоуровневых языках либо вы просто создаёте второй массив куда кидаете все чётные элементы, либо делаете циклический сдвиг всех элементов на один влево, с уменьшением значения длины массива(на саму длину вы не сможете повлиять, а просто уменьшаете значение некоторой переменной где хранится число элементов массива)

Далее можно ожидать только вашего кода, решать здесь за вас не будут.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Truegirl
Дата 5.7.2010, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 20.11.2008

Репутация: нет
Всего: нет



спасибо огромное. В процессе выполнения появилась проблема. Я решила не удалять элементы, а занести четные элементы в новый массив 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

        

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.