|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.06.2009, 23:59 | #1 |
Регистрация: 04.06.2009
Сообщений: 3
|
кто может решить задачу на ассемблере.
кто может решить задачу на ассемблере.
Ассемблерная команда- максимум ( 16 bit,uns-(беззнаковое)) |
06.06.2009, 08:29 | #2 |
Форумчанин
Регистрация: 02.04.2008
Сообщений: 358
|
интересная задача, только что делать не ясно
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666 mail: airyashov(а)inbox.ru |
06.06.2009, 09:24 | #3 |
Регистрация: 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 Но не знаю правильно или нет. |
06.06.2009, 13:59 | #4 |
Пользователь
Регистрация: 30.05.2009
Сообщений: 46
|
Если необходимо найти максимальное беззнаковое целое, то готов помочь. Стучите на мыло xranger@mail.ru
|
06.06.2009, 21:19 | #5 |
Новичок
Джуниор
Регистрация: 13.12.2008
Сообщений: 0
|
Вышлите подробное задание.
Последний раз редактировалось grigiv4; 06.06.2009 в 21:20. Причина: ошибка |
06.06.2009, 21:19 | #6 |
Новичок
Джуниор
Регистрация: 13.12.2008
Сообщений: 0
|
Здравствуйте!
Еще нужна помощь? Помогу за вознаграждение. Обращайтесь: grigiv@rambler.ru http://www.grigiv.h15.ru P.S. Высылайте подробное задание и сообщите желаемый срок выполнения работы. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кто может помочь решить задачу!!!! | 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 |