LOTTO DS 7 PUSH SP, =LOTTO PUSH SP, =7 PUSH SP, =39 CALL SP, RANDOM LOAD R1, =0 UUSILUKU LOAD R2, LOTTO(R1) OUT R2, =CRT ADD R1, =1 COMP R1, =7 JLES R1, UUSILUKU TAULU EQU -4 KOKO EQU -3 N EQU -2 TUNNIT DS 1 MIN DS 1 SEK DS 1 APUT DS 50 RANDOM PUSH SP, =TUNNIT PUSH SP, =MIN PUSH SP, =SEK SVC SP, =TIME LOAD R1, SEK ;sekunnit LOAD R2, MIN ;minuutit LOAD R3, TUNNIT SHL R3, =10 AND R2, R3 NOT R3 OR R2, R3 OR R1, R2 ADD R1, R3 LOAD R5, KOKO(FP) ;satunnaislukujen m„„r„ ; aputaulukon nollaus ; LOAD R3, =0 ; LOAD R4, N(FP) ; JNPOS R4, LOPPU ;ep„kelpo n:n arvo ; NOLLAA STORE R3, APUT(R4) ; alkion nollaus ; SUB R4, =1 ; JNNEG R4, NOLLAA ; nollataan alkiot n,...,0 ;generoidaan satunnaisluvut SATLUKU SHR R1, =3 ; muokataan 'siemenlukua' siirrolla oikealle SHL R2, =3 ADD R1, R2 ; ja lis„„m„ll„ minuutit ADD R1, R3 LOAD R2, R1 LOAD R3, R1 SHR R3, =1 MOD R3, N(FP) ; satunnaisluku v„lilt„ 0 - n-1 ADD R3, =1 ; satunnaisluku v„lilt„ 1-n SUB R6, =1 ;talletus aputauluun ;varmistetaan, ett„ kukin luku hyv„ksyt„„n vain kerran LOAD R4, APUT(R3) ; onko jo k„yt”ss„ JNZER R4, SATLUKU ; jos on haetaan uusi luku STORE R3, APUT(R3) ; jos ei, talletetaan luku paikalleen SUB R5, =1 JNEG R6, LOPPU ; lopetetaan, kun satunnaislukuja ei l”ydy JPOS R5, SATLUKU ; haetaan seuraava luku ;poimitaan saadut satunnaisluvut annettuun taulukkoon ; R1 montako viel„ siirrett„v„ ; R2 aputaulukon indeksi ; R3 annetun taulukon indeksi ; R4 apumuuttuja satunnaisluvun siirt„miseen LOAD R1, KOKO(FP) ; siirrett„vien lukujen m„„r„ LOAD R2, =0 ; aputaulukon indeksi LOAD R3, TAULU(FP) ; taulukon 1. alkion osoite JATKA LOAD R4, APUT(R2) ; aputaulukon alkio JZER R4, SEUR ; ei kelpaa, ei ole satunnaisluku STORE R4, @R3 ; talletetaan satunnaisluku taulukkoon SUB R1, =1 ; siirrett„vi„ yksi v„hemm„n JZER R1, LOPPU ; satunnaisluvut siirretty ADD R3, =1 ; taulukon seuraava alkio SEUR ADD R2, =1 ; aputaulukon seuraava indeksi JUMP JATKA LOPPU EXIT SP, =3