Generatore di numeri pseudo-random su microcontrollori 8051
La generazione di numeri casuali può spesso causare inutili perdite di tempo. Nel listato 1 sono riportate due soluzioni per la generazione di numeri a 8 e 16 bit su microcontrollori 8051.
.equ rand8reg, 0x20 ;one byte .equ rand16reg, 0x21 ;two bytes ;Generazione di un numero ad 8 bit. ;Il risultato viene posto nell’accumulatore. rand8: mov a, rand8reg jnz rand8b cpl a mov rand8reg, a rand8b:anl a, #10111000b mov c, p mov a, rand8reg rlc a mov rand8reg, a ret ;generazione del numero a 16 bit. ;Il byte meno significativo viene posto nell’accumulatore ;mentre il byte più significativo viene messo nel registro B rand16:mov a, rand16reg jnz rand16b mov a, rand16reg+1 jnz rand16b cpl a mov rand16reg, a mov rand16reg+1, a rand16b:anl a, #11010000b mov c, p mov a, rand16reg jnb acc.3, rand16c cpl c rand16c:rlc a mov rand16reg, a mov b, a mov a, rand16reg+1 rlc a mov rand16reg+1, a xch a, b ret
Listato 1 |
In analogia con il C, i numeri pseudo casuali vengono generati generalmente con l’ausilio d i due funzioni: srand e rand. Una semplice base di come si possano crittografare i dati, e’ chiaro che poi gli algoritmi in questione sono sviluppati in maniera piu’ complicata.