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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2014, 21:32   #1
Milanka
Новичок
Джуниор
 
Регистрация: 02.02.2014
Сообщений: 2
По умолчанию Помогите с ассемблером плиз...

Приветик всем! помогите перевести если кому не трудно процедуру в паскаль а то с ассемблером совсем не дружу..
Код:
procedure Mix(Buffer,First,Second : PChar; Count : LongInt); assembler;
{       процедура смешивает два массива данных First и Second и помещает}
{       результат в Buffer. Элементы массивов имеют размер WORD         }
{       Count -- Число элеменов в ОДНОМ массиве, т.е. Buffer имеет длину}
{       2*Count элементов}

{       EAX - Buffer       }
{       EDX - First        }
{       ECX - Second       }
{       Count -- в стеке   }
asm
        PUSH    EBX
        PUSH    ESI
        PUSH    EDI
        MOV     EDI,EAX     // Buffer помещен в EDI -- индексный регистр приемника
        MOV     ESI,ECX     // Second помещен в ESI -- индексный регистр источника
        MOV     ECX,Count   // Count помещен в ECX
        XCHG    ESI,EDX     // смена источника -- теперь First
@@Loop:
        MOVSW              // пересылка слова из First/Second в Buffer и инкремент индексов
        XCHG    ESI,EDX    // смена источника
        LOOP    @@Loop     // декремент ECX и проверка условия выхода ECX = 0

        POP     EDI
        POP     ESI
        POP     EBX
end;
Milanka вне форума Ответить с цитированием
Старый 02.02.2014, 22:13   #2
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

так тут и не нужно asm знать!

Цитата:
{ процедура смешивает два массива данных First и Second и помещает}
{ результат в Buffer. Элементы массивов имеют размер WORD }
{ Count -- Число элеменов в ОДНОМ массиве, т.е. Buffer имеет длину}
пожалуйста реализовывайте
ZuBy вне форума Ответить с цитированием
Старый 05.02.2014, 21:25   #3
Milanka
Новичок
Джуниор
 
Регистрация: 02.02.2014
Сообщений: 2
По умолчанию

Мне непонятно как именно происходит смешивание...
Milanka вне форума Ответить с цитированием
Старый 05.02.2014, 22:36   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Milanka Посмотреть сообщение
Мне непонятно как именно происходит смешивание...
не проверял, но судя по ассемблерному коду берётся по очереди, один элемент из First, следующий из Second, потом следующий из First, следующий из Second и т.д.

Так понятно, или пояснить на пальцах?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите девушке с ассемблером supersuper2 Помощь студентам 1 02.04.2009 19:17
помогите с ассемблером GIO Помощь студентам 1 11.12.2007 13:12