0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

MP3里的歌曲是如何随机播放的?~~~求解释!

MP3里的程序是如何随机播放的?~~~求解释!
提问者:healson2001 地点:- 浏览次数:8040 提问时间:03-30 16:50
我有更好的答案
提 交
5条回答
fuwu1245 04-06 11:31


http://www.guokr.com/question/111781/

http://baike.china.alibaba.com/doc/view-d3095910.html
vuweurvxs 04-05 14:21
呵呵,参考随机数产生函数
ruyi81059 04-05 13:05
我们常用的方法就是读一下定时器的值,按照一定的算法.就得到一个随机数.直接去播就好了
60user53 04-07 19:04
路过   学习了
shanba31 03-30 18:38


玛莉机开奖随机数发生子程序,供参考

;****************************************
;* 取(6FH)~(70H)范围乱数,结果在(58H)中             *
;* 乱数上限在(70H),乱数下限在(6FH)                      *
;****************************************
;
RBC:    PUSH    ACC               ;现场保护
            PUSH    B
            PUSH    PSW
            SETB    PSW.4            ;区2(10H)~(17H)
            CLR     PSW.3
RBC0:   NOP
            MOV     A,58H             ;读取由【RND】子程序产生的乱数
            CJNE    A,6FH,RBC2    ;乱数与下限比较
RBC2:   JC      RBC1               ;C=1,乱数〈下限,转RBC1重读乱数
            MOV     A,58H
            CJNE    A,70H,RBC3   ;C=0,乱数〉=下限,则再与上限比较
RBC4:   POP     PSW              ;乱数〈=上限,恢复现场
            POP     B
            POP     ACC
            RET
;
RBC3:   JC      RBC4               ;C=1,乱数〈上限 ,转RBC4结束
RBC1:   LCALL   RND              ;C=0,乱数〉上限,或乱数〈下限,重读乱数
            SJMP    RBC0              ;转RBC0重新判断
;******************************
;* 在(56H)~(59H)中产生乱数值         *
;*                   ML.09E9                       *
;******************************
;
RND:    NOP
            CLR     IE.7               ;关中断
            MOV     A,59H           ;取出乱数种子
            RRC     A                  ;右环移三次
            RRC     A
            RRC     A
            XRL     A,57H            ;与(57H)内容异或
            RRC     A                  ;右环移二次
            RRC     A
            XRL     A,58H            ;与(58)内容异或
            RRC     A                   ;右环移一次
            XRL     A,56H            ;与(56)内容异或
            RRC     A                   ;右环移一次
            CPL     C                    ;进位标志取反
            MOV     R0,#56H         ;乱数寄存器首址
            MOV     R2,#04          ;共有四位乱数
RND1:   MOV     A,@R0           ;取出乱数寄存器内容
            RLC     A                    ;左环移一次
            MOV     @R0,A           ;送回乱数寄存器
            INC     R0
            DJNZ    R2,RND1
            SETB    IE.7                ;开中断
            RET
撰写答案
提 交
1 / 3
1 / 3