为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

【doc】CD唱盘的检索播放

2017-11-19 11页 doc 26KB 7阅读

用户头像

is_682974

暂无简介

举报
【doc】CD唱盘的检索播放【doc】CD唱盘的检索播放 CD唱盘的检索播放 多媒蒋 叫ch递槌京 一 辽宁省铁岭县李千户中一校(112606)金风霞 ?_?-??_.一 用过WINDOWS95的用户可能会发现,它的 CD唱盘播放程序CD…PIAY,EXE具有CD唱盘的 检索播放功能.即顺序播放CD唱盘中每个曲目的 前一段内容,这一功能对于很多用户来说是有一定 实用价值的.特别适合于对不熟悉唱盘的内容的选 择欣赏之用.下面的程序可以在DOS状态下实现这 一 功能. 由于CD唱盘的痢区格式不兼容DOS的文件管 理系统,所以对它的拄制方法完全...
【doc】CD唱盘的检索播放
【doc】CD唱盘的检索播放 CD唱盘的检索播放 多媒蒋 叫ch递槌京 一 辽宁省铁岭县李千户中一校(112606)金风霞 ?_?-??_.一 用过WINDOWS95的用户可能会发现,它的 CD唱盘播放程序CD…PIAY,EXE具有CD唱盘的 检索播放功能.即顺序播放CD唱盘中每个曲目的 前一段内容,这一功能对于很多用户来说是有一定 实用价值的.特别适合于对不熟悉唱盘的内容的选 择欣赏之用.下面的程序可以在DOS状态下实现这 一 功能. 由于CD唱盘的痢区格式不兼容DOS的文件管 理系统,所以对它的拄制完全不同于软驱盘及硬 盘驱动器,不能用BIOS或DOS的有关磁盘操作功 能对其正常操作.对干CD唱盘的大部分操作,必须 通过直接访问其设备驱动程序而实现,具体可通过 INT2FH中的有关功能进行设备请求操作.在具体 的CD唱盘控制过程中,首先需要建立标准的设备请 求头结构和控制甩缓冲区,并在缓冲区中填入适当的 控制码,然后把所用缓冲区的地址(包括段址和偏移 地址)送入设备头中的存放缓冲地址处.最后把设备 头地址送入EStBx寄存器,调用INT2FH的1S10H 号功能,即可完成CD—ROM的有关操作.调用结束 返回时,一般在缓冲医的特定位置返回有关的CD唱 盘的信息或操作反馈信息.具体的各种控制功能的 内容'甥e冲区结构及编程方法请参考有关的资 料和文后程序. 实现曲目检索是编程中的一个主要问题,要完 成此功能需要控制曲目的播放时间.一般有两种方 法可实现曲目的固定时间长度的播放效果?第一种 方法是在播放操作时指定播放的扇区总数(每秒75个 扇区),当播放完这些扇区时会自动停止播放,但是 由于CD唱盘播放之后即可脱离控制丽返回DOS或 继续其他操作,所以用上述方法需要实时幢攫I播放 状态,以便进行下一曲目的播放动作}另一种方法 是按正常的方法播放曲目的全部内容,然后在指定 的延时时间之后强制停止播放,因为此方法的cD 唱盘的播放状态及停止状态都在程序的控制之中, 所以编制方法相对简单.在文后的程序中采用了第 二种方法,通过用户定时中断INT2CH精确的定 时,实现了CD唱盘各曲目的固定时间长度的播放 ,『l1 操作及曲目的全盘检索功能} 文后程序甩汇编语言写成.经汇编,链接并转换 为COM文件后即可使用,在DOS状态下运行之后 将在屏幕上显示出整个CD盘的曲目总数,全盘播放 时间及各曲目的起始时间等信息井开始曲目检索工 作,此时在屏幕中央位置实时显示当前1佥索的曲目 序号及进度,并从盘的第一首曲目开始播放,每个 曲目播放10秒钟后自动停止并开始下一曲目的播放. 当全盘曲目播放完毕时将结束程序返回DOS状态. 在检索过程中.如果想欣赏当前正在检索曲目的全 都内容,此时可按下P键则进入正常播放状态.在屏 幕上的提示信息也由检索变为播放,之后可正常播 放完此曲目及后面的所有曲目内容I在检索或播放 状态下按下L键可结束程序返回DOS状态并在后 台播放余下的曲目内容I在按下P键进入播放状态 后也可按下T键使程序重新进入到检索状态,程序 将从当前的曲目开始检索后面的曲目}在播放或检 索状态下可随时按下ESC键结束程序并停止播放状 态. 此程序在486机,DOS6.2操作系统,松下二倍速 光驱及花王真16位声卡环境下遇试通过,困程序中全 都采用汉字信息提示,所以可在如UCDOS等汉字系 统下很好的运行,如果在西文状态下使用最好修改提 示信息为英文方式. ICD唱盘检索程序 fC.DPLAY.COM CODESEGMEl,IT ASSUMEC,S:CODE}DS,?DE OGIOOH BEGIN,JMPSTART I获得cD—ROM状态缓冲区 GETBUFFOBOBH,11DUP(?)I I获得cD—FK)M状态设备头 GETcD0B1AH,0,0~'-I.11DUP(?) ADDG0D0 LONGDW5 DB6DUP(?) I关闭cD唱盘播放设备头 STOPDB0DH,O,85H,10DUP(?) NOCDERRDB7,NoFoundcd_r0tilDevice$ cDNuMDW0;存CDROM驱动器号 PLAYNUMDBi 38电l齄镰霾技礤与维护...199蔫J痒_嚣a2期 Z ;摇放cD唱盘设备头 P1AYDB】6H.0,84H,】0DUP(?),】 DB16.2,l,0,0,0,0.0 ALLSECDwO;总秒数 PLAYSEDWO{指定曲目起始秒戡 PLAYNUDBO;总曲目数 THIRTY1DB60 THIRTY2DW75 MSGDB'Track: MSGEDDB'$ DAT】DW1 NuMDBo;当前曲目号 PLAYMMDBOl当前分钟数 PLAYSSDB0;当前秒戡 NUMCD8'O0一[.摇放状态显示 PLAYMMCDBOO: PLAYSSCDB0O1 BZDB,T;测试标志 HELP1DBCDPLAY(T:testP:play. OBL:ployandquit DB'ESC:slopondquit) JSzDW0时间计数 0LDINT1CDDo START: MOVAH,OFH;初始化屏幕 INT】OH MAH,o INT1OH LEABP.HELP1 MOVBL.74H MOVDX.05t~H MOVCX,55 CALLDi~~PSTR MOVSI,OFFSETADDG MOVAX,OFFSETGET8UFF MOVWORDPTRCS}CSl3,AX MOVAX.CS MOVWORDPCS-[sI+2],AX MOV8X.0 MOVAX,15O,0H INT2FH;硷查CDROM是否存在 ORBX,8X JNZNEXT1}转错误处理 MOVDX,OFFSETNocDERR MOVA?.9 INT21H JMPEXIT NEXT1tMOVCDNUM.CX CALLGETCOIN+取cD盘信息 MOVAL.PLAYNU,处理总曲目数 XORAH.AH XORDX.DX CAl1.HEXASC,转换为10进制 LEABP.MSG MOV81.,10H M0VDX,OSIAH MOVCX,8 CALI.DISPSTR MOVAX.351CH T21H;取定时中断向量 _EADI,OLDINT1Cl MOV[D8x MOV[DI+2],ES MOVDX,oFFSETNEWINT1C MOVAX.251CH INT21H{修改中断向量 PUSHCS POPES CALLSTOPCD M0VAL,PLAYNUM CA_LPLAYCD LOP,CALLDISPt:IUM MOVAH.1 INTl6H JNZEXlTT CMPBZ,P JZLOP 0MPJSZ,182是否到时 JBLOP MOVJsz,o恢复计数韧值 MaVAL.PLAYNU C?PPLAYNUM,AL JBINCNuM;是否处理完 CALLSTOPCO JMPFESTOR INCNtIM:INCPLAYNUMl处理下一曲日 CALLSTOPCD MOVAL,PLA?qUM CALLPLAYCD JMPLoP E)cITT:MOVAH,o接收按键 INT16H CMPAL,1BH,ESc键退出 JNZSC^NP CALLSToPCD JMPREST.R SCANP:ORAL.201-1 CMPAL,P;P健进凡播就状态 JNZSCANT MOVBZ.P JLOP SCANTCMPAL,…t,T键避l入检测状态 JNZSCANL M0VBZ,T. JMPLOP SCk~LrC?PAL,;L键描敲并退出 JZRESTOR JLOP REsT0RtMShOFFsEToL131NT1~ MOVDX,WOftDPTR[SO ?OAx,wOftDPTR[81+2] M0VDS.AX M0VAX.251CH INI"21H;恢复原中断 EXITMOVAH,4CH INT2lH;返回DOs状态 PLAYCDl播放指定的曲目 MOVBYTEPCSl[GETBI_lFF],怕H MOVBYTEPcs[~TCO+1],7 MOVBYTEPcs[GE"rNJ~F+1],AL MOBx,OFFSETGETCD MOCX.CDNUM MaVAX.151OH INT2R-I MOVAL,BYTEPTRCS【[GET8uFF+4] MULTHIRTYI 电脑螭程技巧与维护?1~9~96年第12期39 0RB×.B× MOVBL,ByTEPTRCS;[GEIBtJFF+3] ADDAX,Bx MoVPLAYSE.AX AX,ALLSEC SUBAX.PLAYsE MULTHIRTY2 MOVWQRDPTRCS:[PLAY+12HI,AX MOVWOrlDPTRCS:[PLAY+14HI.D× MOVA)(,WORDPTRcS{[GETBuFF+2] MOVWQRDPTFICS:EPLAY+.EHI.AX MOVAL,[GETBIJFF+3] MOVCst[PtAY+OFH3,AL MOvAL,[GE1BUFF+4] lovCs【[PLAY+lOH3,AL ?oV13X,0FFsETPLAY .IIOVAX,151oH INT2FH T GETC[3~tt:I取co盘信息 MOVBY]IEPTRCs:[GETBUFF],OAH MOVE3YTEPTRCst[GETCD+121-1],7 ?OVBX,OFFSE3"GET? MOVCX,CDNuM MoVAX.151oH 1NT2FH XORAX,AX ?avAL,BYTETRCsl[GETBOFF+5] MULTHIRTYl XORBX,B× OvBL,BYTEPTRCs【[GETBuFF+4] ADDAX.B× MOMl札LsEC,AX|存总扇区数 MOMBL,BYTEPTRCS[GETBUFF+2] MOVFt.AYNLI,BLI存总曲日数 RET GETPLlNt;取当前播敲状态 MOVTEPTRCs[GErBUFF3,OCH MOVBYTEPTRCS,[G盯CD+1刖],n MOVBX,0FFSETGETCD MOVAX,l51oH MOvCX,CDNUM lNTzFH XORAX,AX ?DvAL,BYTEPTRCS[GETBuFF+2] ?^ONuM.AL{当前曲目号一 MOMAL,BYTEPTRCS,[GETI~UFF+4] MOMPLAYMM,ALI当前分钟教 M0vAL,BYTEPTRcS.[GETBuFF+5] MOVPtAYS$,ALI当前秒教 RET DISPNIJM:I显示当前播斌状卷 CALI.13ETPLlN MDvAL,NUM ^NDAL,0FH ORAL,30H ?avByTEPTRCs.CNt~c+1],AL M0VAL,NUM MOVCL,4 SHRAL,CL ANDAL,0FH ?AL,30H '?OvNUMC,AL XORAX,AX MOVAt.,PLAYMM x0rdx,dx ca"nexasc ?avAL,cs,[MSC~D] M0VPLA?MC+I1AL MOVAL,Cs:[?sGED一1] MOvPLAYhtMC,AL XORA×,AX MOVla.,PLAYS,3 xordx,dx callh0xasc MOVla.,INS:[MSaED] MavPLAYSSC+l,AL ?avAL,Ds:[MSGED--1] M0VPLAYSSC,AL LEABP,NUMC MOVBL.1OH MOVD×,O82AH MOVCX,ll CALLOISPSTR RET $'fOPCDl停止CD唱盘播敲 MOVB×,oFFSETSTOP MovAX,151ffel ?OvCX,Col嘎什^ INT2FH T HExA8cI转换为十进翩教 PUSHC× MULDAT1 MOVSl,OFFSETM9ED MOVCX.2 MOVB×,l0 CYCLE: DlVBX ORDL.3oh ?Dv[sI]tDL DECSI MOVD×,O LooPCYCLE POPCX RET DISPSTR:|彩色字符串显示 PUSHCX PUSHDS POPES MOVBH,0 h^0VAL,0 MOVAH,l3H INTl0H POPCX T NEWINT1C;}定时中断暇务程序 PUSHD8 PIcS POpDS lCCSlJSZ POPDS lRET CODEENDS ENDBEGIN (收稿日期:1996年8月31日) 4O电l舾壤程技巧与缝护,?19196-.年第12期
/
本文档为【【doc】CD唱盘的检索播放】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索