Generator nahodnych cisel
Michal MEDEK
Michal.MEDEK
Středa Březen 17 11:52:27 CET 2004
Ahoj Igore!
Kdysi jsem jeden takovy nekde nasel. Tady je:
;11 Nov 99 copied seed from test snippet so it would assemble
;16 May 99 8051 source code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;RNUMB16 is called to generate a 16-bit random number. To prevent the
; same sequence of random numbers from being generated on each call,
; the caller should initialize the 16-bit value, seed, to a different
; value before each series of calls. Input from a real-time clock might
; be a good value for seed as well as a number supplied from reading
; a keyboard.
;
;On return:
; seed has the new number, acc = lsb's of seed, b = msb's of seed,
; All registers have been saved
;
;Call:
; call RNUMB16 ;Get random number in seed; b,acc
;
;Notes:
;
; (1)RNUMB16 uses the formula:
; seed = (seed * 6255h + 3619h)mod 10000h attributed to
; Peter Grogono, Programming in Pascal, 1984 Addison-Wesley Pub.
; (2)Let seed = s2*2**8 + s1, then
; seed = (s2*2**8 + s1)*(62h*2**8 + 55h) + 36h*2**8 + 19h
; = (62h*s2)2**16 + (62h*s1+ 55h*s2 + 36h)2**8 + 55h*s1 + 19h
; = (62h*s1+ 55h*s2 + 36h)2**8 + 55h*s1 + 19h
;
; Original author: John Veazey, Ridgecrest, CA, 08 May 99
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
dseg
seed: ds 2 ;The random number generated, caller can initializes on
; first call
cseg
RNUMB16:
;
;Get the 55h*s1 + 19h + 36h*2**8 terms
;
mov b,#55h
mov a,seed
mul ab
add a,#19h ;c set
push acc ;Save 2**0
mov a,b
addc a,#36h
push acc ;Save 2**8
;
;Get the 62h*s1*2**8 term, discarding 2**16 terms produced
;
mov b,#62h
mov a,seed
mul ab
pop b ;Get 2**8, discarding 2**16
add a,b
push acc ;Save 2**8
;
;Get the 55h*s2*2**8 terms, discarding 2**16 terms produced
;
mov b,seed+1
mov a,#55h
mul ab
pop b ;Get 2**8, discarding 2**16
add a,b ;c set
mov b,a ;Update 2**8
mov seed+1,a
pop acc ;Get 2**8
mov seed,a
;
;Return to caller with random number in acc and b
;
ret
;end of RNUMB
Snad to bude stacit. Ahoj Michal MEDEK
-----Original Message-----
From: hw-news@list.gin.cz [mailto:hw-news@list.gin.cz]On Behalf Of Z
ELEKTRIK
Sent: Thursday, May 25, 2000 10:10 AM
To: Multiple recipients of list
Subject: Generator nahodnych cisel
Nema niekdo napisany generator nahodnych cisel v ASM alebo v C pre 8051.
Za zaslanie vopred dakujem
Igor Salviany
Další informace o konferenci Hw-list