01.11.2016, 09:23
|
|
Sir Richard Abramson
|
|
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
|
|
Цитата:
Сообщение от ined
Разве суммируя. Может усреднение или от максимального значения. Просто если суммировать то (250byte+20byte=14byte) Эм.... Или я что-то не понимаю) Если честно я думал над этим, но как это работает до конца не понимаю.
Если использовать такой пример:
Он будет повторяться постоянно. то в процессе его работы я могу изменять массив данных и будет изменяться звук по мере чтения массива? Если да то мне нужно понять как лучше настроить заголовок и какой выбрать кусок исполнения(буфер). И как мне понять в каком положении находится чтение если мне нужно что-то микшировать.
|
За пределы - и -1 не вы1дет.
Код:
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;
|