![]() |
|
|
![]()
|
|
| archs |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 19.5.2002 Репутация: нет Всего: нет |
Привет Народ
Подскажите пожалуйста какая функция какого досового прерывания генерит произвольное число (если такая возможность имеется) Пасибки |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Нет такой функции в дос !
Есть функция int 21h: mov ah,02ch ; Read current time int 21h ; CALL DOS ; cx:dx - текущее время, dl = 1/100 part of sec Можно примерно использовать число сотых секунды, возвращаемое ей. Можно также читать слово в памяти по определенном адресу в памяти: push ds push 0040h pop ds mov ax,word ptr ds:[006ch] ; Read current BIOS ticks (в ax) pop ds mov Seed,ax ; Запомнить его Это ДВОЙНОЕ слово(тут читалась его младшая часть) постоянно изменяется BIOS - таймером с высокой частотой(порядка 18,2 раза в секунду). Обычно генератор случайных чисел состоит из его инициализации достаточно случайным числом(в паскале это делает ф-ция randomize) - для того, чтобы первый вызов всегда возвращал РАЗНЫЕ значения, и, собственно, дальнейших вызовов. Вот пример кода простого генератора(это процедуры для формата tiny - *.COM): Random proc near ; Получить случаное число в интервале 0..MaxRandom (в стеке) ; Результат вернуть в регистре ax push bp mov bp,sp pusha mov ax,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 Seed,ax mov ah,0 xor dx,dx mov bx,[bp+4] ; bx = Максимально допустимое число add bl,1 adc bh,0 div bx mov [bp+4],dx popa mov ax,[bp+4] ; Результат вернем в виде слова pop bp ret 2 Random endp Randomize proc near ; pusha ; mov ah,02ch ; Read current time ; int 21h ; CALL DOS ; mov word ptr Seed,dx ; popa ; retn push ds push 0040h pop ds push word ptr ds:[006ch] ; Read current BIOS ticks pop word ptr ss:Seed pop ds retn Randomize endp Вот так -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| archs |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 19.5.2002 Репутация: нет Всего: нет |
Чингачгук
Благодарю! |
|||
|
||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |