; fbLFSR : remplit l'écran avec un nombre ; pseudo-aléatoire sur 32 bits ; version dim. nov. 11 03:27:10 CET 2012 : init ; version ven. nov. 23 16:19:11 CET 2012 : movh modifié .name fbLFSR .profile YASEP32 ; Affectation des registres : ; R1 : LFSR ; R2 : POLY ; R3 : compteur ; A1 : loop ; A2 : écran ; Algorithme d'origine en C : ; #define CRC32_standard 0x04C11DB7 ; /* calcule un pas de LFSR : */ ; j=t>>31; ; t<<=1; ; if (j) /* on teste l’ancien MSB de t */ ; t^=CRC32_standard; ; initialise la "graine" mov 12345h R1 ; charge 04C11DB7h dans R2 mov 1DB7h R2 ; LSB movh 04C1h R2 ; MSB ; initialise le compteur : 64K pixels mov 65536 R3 ; adresse du framebuffer: mov 20000h A2 ; entrée de la boucle : ADD 4 PC A1 ; génère un bit pseudo-aléatoire : ADD R1 R1 ; décale le registre, ; met le bit de poids fort dans la retenue xor R2 R1 CARRY ; copie tout le mot vers l'écran: mov R1 D2 add 4 A2 ; passe au mot suivant ; décrémente le compteur add -1 R3 ; reboucle si le compteur n'a pas atteint 0 mov A1 PC NZ R3 HALT 1