процессор Pentium и выше;
операционная система Windows x32, x64;
IDE Visual Studio;
консольное приложение Win32:
.586
.model flat, stdcall
option casemap :none
GetStdHandle proto :dword
WriteConsoleA proto :dword, :dword, :dword, :dword, :dword
lstrlenA proto :dword
_kbhit proto C
ExitProcess proto :dword
Random proto :dword
.data
Txt db 'Строка из 10 случайных символов:', 13, 10, 0
Prompt db 13, 10, 10, 'Для продолжения нажмите любую клавишу', 0
.data?
Seed dd ?
hStdOut dd ?
String db 10 dup (?)
.code
N97533738:
rdtsc
mov Seed, eax
mov ecx, 10
lea edi, String
@@:
invoke Random, 224
add al, 32
stosb
loop @B
invoke GetStdHandle, -11
mov hStdOut, eax
invoke lstrlenA, addr Txt
invoke WriteConsoleA, hStdOut, addr Txt, eax, 0, 0
invoke WriteConsoleA, hStdOut, addr String, 10, 0, 0
invoke lstrlenA, addr Prompt
invoke WriteConsoleA, hStdOut, addr Prompt, eax, 0, 0
@@:
invoke _kbhit
test eax, eax
jz @B
invoke ExitProcess, 0
Random proc stdcall uses edx, Range :dword
mov eax, Seed
mov edx, 134775813
mul edx
inc eax
mov Seed, eax
mov edx, Range
mul edx
mov eax, edx
ret
Random endp
.stack 800h
end N97533738
