Ну как же не нужен!? Команда rcl проварачивает регистр через CF флаг, а CF устанавливается командой add. Т.е.: Код (Text): add ax,dx ; устанавливается флаг CF rcl ax,1 ; Происходит следующее: ; tmp=ax[15], ax[15]=ax[14], ..., ax[1]=ax[0], ax[0]=CF, CF=tmp UPDATE P.S. Надо бы проверить, может тогда и период последовательности будет 2^16.
guest2013 Понял где я накасячил. Дело в том что это я как раз на x86-asm перепутал, там не rcl должен быть а rol. (на x86-asm я переписывал с z80-asm и там был rcl но на z80 rcl это не через флаг переноса) Так что РНР код у меня правильный, а вот на asm ошибка.
Вот кусок кода: PHP: <? // Константы взяты из Сишной библиотеки define("_RND_CONST_A_",214013); define("_RND_CONST_B_",2531011); // _RND_CONST_M_: 2^32 ... // Получение очередного числа последовательности. Диапазон значений - весь int (от ~-2млрд. до ~+2млрд.) // Период повторения, естественно 2^32 $Seed=(int)($Seed*_RND_CONST_A_+_RND_CONST_B_); // ### UPDATE ### Если уж совсем по сишному, то // return ($Seed>>16) & 0x7fff; // Диапазон: 0-32767, период повторения: 2^31 ..