Может кому-то это покажется глупо, но всеже... Как сделать генератор случайных чисел, чтобы при каждом запуске программа выдавала одну и ту-же последовательность?
так это и есть генератор псевдослучайных чисел, он генерирует числа по закону, начало зависит соответственно от начального значения (seed). Код (Text): seed dd ? ... ;--- rnd proc base:DWORD psh ecx,edx mov eax, [seed] xor edx,edx mov ecx, 127773 div ecx obmen_reg eax, edx psh edx mov ecx, 16807 mul ecx po edx obmen_reg eax, edx psh edx mov ecx, 2836 mul ecx po edx sub edx, eax mov eax, edx mov [seed], eax mov ecx, base inc ecx xor edx,edx div ecx mov eax, edx po ecx,edx ret rnd endp ;--- init_rnd proc pushad db 0fh,31h shr eax, 2 add eax, 1 mov [seed],eax popad ret init_rnd endp
Я тут покопался в одной очень умной книге и нашел там вот такую вещь: seed db 2Fh proc Random: mov ax,word ptr seed mov cx,8 newbit: mov bx,ax and bx,002dh xor bh,bl clc jpe shift stc shift: rcr ax,1 loop newbit mov word ptr seed, ax mov ah,0 ret Может, кто объяснит, как это должно работать, а то на FASM’e это чудо все время выдает одно число.
Должно быть "seed dw 2Fh" з.ы. оказывается фасм понимает уже масмовский синтаксис и "mov word ptr seed, ax" хватает как "mov word [seed],ax"