HispaMSX

Re: Números aleatorios

2000-10-22 00:43:20
Es muy complicado acceder a la función RND del BASIC? Cómo
calcula 
los
números la función RND?


Ojala te ayude este extracto de mi pequenha pero util libreta de 
programacion :)

Un Saludo




; Input  : Registro A
; Output : Registro A


              LD   A,07    ; --> RND desde 0 ~ 6 (Tu puedes cambiar 
el valor de A = 0 ~ FF)             
              CALL RND
              .
              .
              .
        Aqui continua tu programa
              .
              END


        
;--------------------------Subrutina RND -----------------------------
-----------------               
RND           CP   02                   
              JR   NC,Laa03              
              LD   A,02                 
Laa03         LD   (Tempbuffer),A             
              PUSH HL                   
              PUSH DE                   
              PUSH BC                   
              LD   DE,(semilla)            
              LD   H,E                  
              LD   L,fd                 
              LD   A,D                  
              OR   A                    
              SBC  HL,DE                
              SBC  A,00                 
              SBC  HL,DE                
              SBC  A,00                 
              LD   E,A                  
              LD   D,00                 
              SBC  HL,DE                
              JR   NC,Laa22              
              INC  HL                   
Laa22         LD   (semilla),HL            
              PUSH HL                   
              POP  DE                   
              LD   A,(Tempbuffer)             
              DEC  A                    
              LD   B,A                  
              XOR  A                    
Laa2d         ADD  HL,DE                
              JR   NC,Laa31              
              INC  A                    
Laa31         DJNZ Laa2d                 
              POP  BC                   
              POP  DE                   
              POP  HL                   
              RET                       

semilla         db 0,0  ; --> aqui coloca cualquier valor (SeudoReg.R)
Tempbuffer      db 0


<Anterior en la conversación] Conversación actual [Siguiente en la conversación>