Щоб використовувати цю процедуру, збережіть в стеку вміст регістра cx.
printDecimal
proc
mov
bx, 0
mov
cx, 10
digits:
inc
bx
xor
dx, dx
div
cx
push
dx
cmp
ax, 0
jne
digits
mov
ah, 2h
print:
pop
dx
cmp
bx, 0
je
exit
add
dl, '0'
int
21h
dec
bx
cmp
bx, 0
je
exit
jmp
print
exit:
mov
dl, ' '
int
21h
ret
printDecimal
endp
code
ends
end
main
Для генерації початкових
елементів послідовності (для реалізації,
наприклад, алгоритму «Мати всіх») можна
скористатись функцією визначення
поточної константи часу – 2ch
переривання 21h.
В регістрах ch, cl,
dh, dh
знаходитимуться відповідно
години, хвилини, секунди і соті долі
секунди поточного часу. Відповідний
код матиме вигляд:
mov
ah, 2ch
int
21
Більш складним способом є
отримання поточного числа тактів
мікропроцесора. Для цього застосовується
команда rdtsc, яка
переміщує поточне значення
лічильника тактів в регістр edx:eax.
Цю команду, однак, можна
використовувати тільки для мікропроцесорів
Pentium та вище.
Подальша реалізація алгоритмів
генерації псевдовипадкових послідовностей
полягає у правильній реалізації
математичних перетворень.
Хід
роботи
Необхідний
інструментарій:
Borland
Turbo Assembler,
або Nasm, або
Microsoft
Assembler (masm)
1.
Ознайомитись із теоретичними відомостями
про генерацію псевдовипадкових
послідовностей.
2.
Вибрати один із запропонованих алгоритмів,
і реалізувати його на мові Assembler.
3.
Виконати кілька прогонів (не менше
трьох) алгоритму і показати у вигляді
таблиці та графіка отримані ряди.
4.
Зробити висновки.