El reloj del sistema está en el segmento de memoria 40h desplazamiento 6Ch contiene tics de reloj (1/18,2 segundos) ocurridos desde medianoche, suponemos que lo guardamos la parte alta en Dx y la baja en Ax, ahora procedemos a aumentar la aleatoriedad (evidentemente al varia más que dh). Una opción es p.ej:
xor ah,al
xor dl,ah
xor dh,dl
(valdría cualquier operacion lógica que altere en base a al para aumentar al, en cualquier caso esto es opcional, la variacion de Al debería ser suficiente)
Si deseamos obtener el valor dentro de un rango por ejemplo 0-60 dividimos entre 60 y tomamos como resultado el resto (dx)
mov bx,60
div bx
Si el rango fuera entre p.ej. 5-60 dividiriamos entre 55 (60 - 5) y al resultado le sumamos 5
mov bx,55
div bx
add dx,5
si deseamos podemo hacer que un rango de valores nos de un único valor p.ej 0..3=0, 4..6=1 etc para esto el divisor lo multiplicamos por 3 com lo que 55*3=165
y el resto lo dividimos entre 3 tomando como resultado el cociente.
mov bx,165
div bx
add dx,5
mov ax,dx
mov bl,3
div bl
(resultado aleatorio en Al)
Y podemos continuar. Al fin de cuentas se trata de intentar que el número no sea claramente predecible y que todos los valores tengan igual probabilidad.
Un Saludo.