Z80 – 8 Bit Zufallszahl erzeugen
Eine echte Zufallszahl mit einem Computer zu erzeugen ist oft schwierig. Allerdings reichen für viele Anwendungen auch Pseudo-Zufallszahlen. Das nachfolgende kleine Programm erzeugt eine solche Pseudo-Zufallszahl.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
; Mit der 16 Bit Variable "Zufallsbasis" ; eine 8 Bit Zufallszahl im Register A erzeugen push hl ld hl,(Zufallsbasis) ld a,h ; Highbyte holen rrca ; Zweimal rechts rotieren rrca xor h ; xor mit Original rrca ; Noch einmal nach rechts xor l ; xor mit dem Lowbyte rrca ; Ver mal rechts rotieren rrca rrca rrca xor l ; Noch einmal xor rra ; Rechts rotieren über Carry adc hl,hl ; Zufallsbasismal zwei jr nz,weiter ld hl,$733c ; Wenn letztes xor null ergab, dann Reseed weiter: ld a,r ; r = refresh register = Semi-Zufallszahl xor l ; xor mit l wird dann fast Zufall ld (Zufallsbasis),hl ; Zufallsbasis für nächsten Aufruf bewahren pop hl ret ; Zufallszahl in A und fertig Zufallsbasis: defw C03Ah ; Basis für eine Zufallszahl (beliebig) |