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

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

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2009, 23:59   #1
Lesj
 
Регистрация: 04.06.2009
Сообщений: 3
По умолчанию кто может решить задачу на ассемблере.

кто может решить задачу на ассемблере.

Ассемблерная команда- максимум ( 16 bit,uns-(беззнаковое))
Lesj вне форума Ответить с цитированием
Старый 06.06.2009, 08:29   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

интересная задача, только что делать не ясно
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 06.06.2009, 09:24   #3
Lesj
 
Регистрация: 04.06.2009
Сообщений: 3
По умолчанию

найти максимум (16 бит,uns)
Получится должно примерно так.
.586 ; разрешает непривилегированные
;команды Pentium
.XMM ;разрешает команды SSE
.MODEL FLAT ;задает модель памяти
PUBLIC dll ; имя экспортируемой функции
.CODE ;сегмент кода
_start@12: ; точка входа в DLL
mov al, 1 ;надо вернуть ненулевое число в EAX
ret 12 ;очистить стек(передано три параметра)
dll PROC ;заголовок функции
push ebp ;создаем стековый
mov ebp, esp ;кадр

push esi

mov eax, [ebp+08h] ; в источик А
mov esi, [ebp+0Ch] ;счетчик

movq mm1, [esi] ;в mm1 будут находиться четыре наибольших элемента
sub eax, 4
jz the_loop_end

add esi, 8

the_loop:
movq mm0, mm1 ;сохраняем накопленные максимумы
movq mm2, [esi] ;читаем 4 следующих элемента массива
pcmpgtw mm1, mm2 ;формируем маску
pand mm0, mm1 ;применяем маску; меньшие элементы обнуляются,
;бОльшие - не изменяются
pandn mm1, mm2 ;аналогично, только перед применением маска
;инвертируется
paddusw mm1, mm0 ;складываем поэлементно; т. к. меньшие элементы
;каждой пары занулились, а бОльшие сохранились, в
;сумме получим бОльшие элементы

add esi , 8 ;сдвигаем позицию чтения исходного массива
sub eax, 4 ;уменьшаем счётчик
jnz short the_loop

the_loop_end: ;конец цикла
movq mm0, mm1 ;повторяем описанную выше процедуру, только теперь
movq mm2, mm1 ;сравниваются не mm1 и переменная в памяти, а старшая
psrlq mm0, 32 ;и младшая половины mm1. Таким образом, из четырёх
pcmpgtw mm1, mm0 ;претендентов на максимум остаются двое финалистов.
pand mm2, mm1
pandn mm1, mm0
paddusw mm1, mm2 ;конец полуфинала; в младшей половине mm1 - два
;наибольших значения

movq mm0, mm1 ;финал; теперь сравниваютя между собой два
movq mm2, mm1 ;претендента на максимум
psrlq mm0, 16 ;в полуфинале mm1 сдвигался на 32 бита (на половину),
pcmpgtw mm1, mm0 ;теперь - только на 16 (на четверть)
pand mm2, mm1
pandn mm1, mm0
paddusw mm1, mm2 ;младшая четверть mm1 содержит максимум

pextrw eax, mm1, 0 ;в еах копируется младшее слово mm1 и дополняется нулями

emms ;обнуление FPU регистров

pop esi ;восстановить значение регистров
pop ebp
ret
dll ENDP

END _start@12


Но не знаю правильно или нет.
Lesj вне форума Ответить с цитированием
Старый 06.06.2009, 13:59   #4
rangerx
Пользователь
 
Регистрация: 30.05.2009
Сообщений: 46
По умолчанию

Если необходимо найти максимальное беззнаковое целое, то готов помочь. Стучите на мыло xranger@mail.ru
rangerx вне форума Ответить с цитированием
Старый 06.06.2009, 21:19   #5
grigiv4
Новичок
Джуниор
 
Регистрация: 13.12.2008
Сообщений: 0
По умолчанию

Вышлите подробное задание.

Последний раз редактировалось grigiv4; 06.06.2009 в 21:20. Причина: ошибка
grigiv4 вне форума Ответить с цитированием
Старый 06.06.2009, 21:19   #6
grigiv4
Новичок
Джуниор
 
Регистрация: 13.12.2008
Сообщений: 0
По умолчанию

Здравствуйте!
Еще нужна помощь?
Помогу за вознаграждение.

Обращайтесь:
grigiv@rambler.ru
http://www.grigiv.h15.ru

P.S. Высылайте подробное задание и сообщите желаемый срок выполнения работы.
grigiv4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто может помочь решить задачу!!!! Bauyrzhan Паскаль, Turbo Pascal, PascalABC.NET 1 30.05.2009 08:50
кто может помогите пожалуйста решить innaa639 Паскаль, Turbo Pascal, PascalABC.NET 11 20.11.2008 20:00
Помогите пожайлуста решить задачу на ассемблере. Волчица Помощь студентам 1 12.11.2008 21:50