Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
на ASM 07.12.01 09:41 Число просмотров: 1058
Автор: Chingachguk <Chingachguk> Статус: Member
|
> Использование rand() на C++ понятно,а вот как такое > реализовать на ASM. > Что-то у меня не получается. > Может кто исходник не пожалеет представить.
Это из книги одной.
Сначала зовешь это:
Randomize proc near
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
А потом вот это:
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
Например, так:
push 132
call Random
; -> ax- случайное число от 0 до 132...
|
|
|