
        MOV     R7,#16              ;Number of iterations.
                                    ;
?random_loop:                       ;
                                    ;
        CLR     C                   ;
        MOV     A,lfsr+0            ;
        RRC     A                   ;
        MOV     lfsr+0,A            ;
        MOV     A,lfsr+1            ;
        RRC     A                   ;
        MOV     lfsr+1,A            ;
        MOV     A,lfsr+2            ;
        RRC     A                   ;
        MOV     lfsr+2,A            ;
        MOV     A,lfsr+3            ;
        RRC     A                   ;
        MOV     lfsr+3,A            ;
                                    ;
        JNC     ?random_x           ;
                                    ;
        XRL     lfsr+0,#XMASK3      ;
        XRL     lfsr+1,#XMASK2      ;
        XRL     lfsr+2,#XMASK1      ;
        XRL     lfsr+3,#XMASK0      ;
                                    ;
?random_x:                          ;
                                    ;
        DJNZ    R7,?random_loop     ;
                                    ;
