在多媒体系统中,CD-ROM是必不可少的。以DOS为例,CD-ROM应用环境的大致结构是:
              用户
              ↓
              MSCDEX
              ↓
              厂家提供的驱动程序
              ↓
              CD-ROM
              其中,MSCDEX起到了一个转换器的作用,将CD上的文件格式转化为标准的DOS文件格式,使CD-ROM象普通驱动器一样受DOS管理。
              但是,在一般应用中,CD-ROM还能用来播放音乐碟,许多应用软件(如Creative Labs的Quick CD)可以模拟一台CD音响,完成出盒、入盒、播放、快速进退和重复等一系列功能。实际上,MSCDEX并未提供这些功能,必须访问CD-ROM的驱动程序,才能达到上述目的,因为所有CD-ROM的驱动程序与MSCDEX之间的接口都是规范的,这给我们提供了极大的方便。下面将详细阐述如何实现上述功能。
              DOS的设备分为字符设备和块设备两种,CD-ROM的驱动程序属于前者,访问它必须遵循DOS的要求:填写设备驱动程序请求头、访问驱动程序的策略(Strategy)过程、访问驱动程序的中断(Interrupt)过程。
              设备驱动程序请求头的基本格式如下:
              偏移量 类型 含义
              00H 字节 请求头长度
              01H 字节 驱动程序内的子单元
              02H 字节 命令码
              03H 单字 返回码
              …
              以下内容根据命令码进行填写
              下面给出几种CD-ROM常用功能使用的命令码和格式:
              1.IOCTL INPUT:
              偏移量 类型 内容
              00H 字节 1AH
              01H 字节 00H
              02H 字节 03H
              03H 字节 11 DUP(?)
              0EH 双字 缓冲区地址
              12H 单字 缓冲区长度
              14H 字节 6 DUP (?)
              在缓冲区内按一定的格式填入参数,便可得到CD-ROM的各种状态。
              缓冲区的格式:
              作用 长度 格式
              取CD-ROM状态 5 输入:06 xx xx xx xx
              返回:06 SS SS 00 00
              说明:SS SS为状态字,关键的有两位
              位0:1、开门 0、关门
              位B:1、有盘 0、无盘
              取CD总扇区数 5 输入:08 xx xx xx xx
              返回:08 LL LL LL LL
              说明:LL LL LL LL为总扇区数
              取音乐CD信息 7 输入:0A xx xx xx xx xx xx
              返回:0A xx NN TT SS MM xx
              说明: NN为曲目数
              MM为分钟数
              SS为秒数(0~59)
              TT为扇区数(0~74)
              CD的一个扇区大小为2048B
              播放速度为每秒75扇区即150KB/s
              取指定歌曲 7 输入:0B NN xx xx xx xx xx
              的起始时间 返回:0B NN TT SS MM xx xx
              说明: NN为曲目序号
              MM为起始分钟数
              SS为起始秒数(0~59)
              TT为起始扇区数(0~74)
              取播放状态 11 输入:0C xx xx xx xx xx xx xx xx xx xx
              返回:0C xx NN xx MM SS TT xx ZM ZS ZT
              说明: NN为曲目序号(BCD码)
              MM为该曲目分钟数
              SS为该曲目秒数(0~59)
              TT为扇区数(0~74)
              ZM为总分钟数
              ZS为总秒数(0~59)
              ZT为扇区数(0~74)
              2.IOCTL OUTPUT
              偏移量 类型 内容
              00H 字节 1AH
              01H 字节 00H
              02H 字节 0CH
              03H 字节 11 DUP(?)
              0EH 双字 缓冲区地址
              12H 单字 缓冲区长度
              14H 字节 6 DUP(?)
              在缓冲区内按一定的格式填入参数,便可操纵CD-ROM的动作。
              缓冲区的格式:
              作用 长度 格式
              出盒 1 输入:00
              解锁出盒键 2 输入:01 00
              加锁出盒键 2 输入:01 01
              入盒 1 输入:05
              3.PLAY AUDIO
              偏移量 类型 内容
              00H 字节 16H
              01H 字节 00H
              02H 字节 84H
              03H 字节 10 DUP (?)
              0DH 字节 01H
              0EH 字节 起始扇区数(0~74)
              0FH 字节 起始秒数
              10H 字节 起始分钟数
              11H 字节 00H
              12H 双字 播放扇区数(75扇区/s)
              从指定的起始时间开始播放指定的扇区数然后自动停止
              4.STOP AUDIO
              偏移量 类型 内容
              00H 字节 ODH
              01H 字节 00H
              02H 字节 85H
              03H 字节 10 DUP (?)
              停止播放
              以上给出的是CD-ROM常用功能的设备驱动程序请求头格式,但是在应用中怎样实现上述功能呢?有两种方法。
              一是直接访问设备驱动程序,这种方法比较复杂,本文不作介绍。
              二是使用MSCDEX提供的接口。主要功能有以下几种。
              (1) 检测MSCDEX是否安装
              BX=0
              AX=1500H
              INT 2FH
              返回:
              BX=CD-ROM的个数
              CX=起始的CD-ROM盘号(0-A,1-B,等等)
              (2) 发送设备驱动程序请求
              ES:BX=设备驱动程序请求头地址
              CX=CD-ROM盘号(0-A,1-B,等等)
              AX=1510H
              INT 2FH
              用户填写请求头,通过INT 2FH完成所需要的功能。
              下面给出一段例程,播放CD中第二支曲目30秒钟。
              限于篇幅,本程序未作错误处理,假设执行正确。
              CODE SEGMENT
              ASSUME CS: CODE, DS:CODE
              BUF DB OBH, 2, 5 DUP(?)
              REQ DB 1AH,0,3,11 DUP(?)
              DD BUF
              DW 7
              DB 6 DUP (?)
              PLAY DB 16 H,0,84H,10 DUP (?),1
              DB 3 DUP(?),0
              DD 75*30
              START:
              MOV AX,CODE
              MOV DS,AX
              XOR BX,BX
              MOV AX,1500H
              INT 2FH
              OR BX,BX
              JZ NO-CD
              MOV AX,SEG REQ
              MOV ES,AX
              MOV BX,OFFSET REQ
              MOV AX,1510H
              INT 2FH
              MOV AX, [BUF+2]
              MOV [PLAY+0EH],AX
              MOV AL, [BUF+4]
              MOV [PLAY+10H],AL
              MOV AX, SEG
              PLAY
              MOV ES,AX
              MOV BX,OFFSET PLAY
              MOV AX,1510H
              INT 2FH
              NO-CD:
              MOV AH,4CH
              INT 21H
              CODE ENDS
              END START
              还有一些功能,因为不是应用必需的,这里就不再赘述。

| 
							高中各年级课程推荐 | ||||
| 
							年级 | 
							学期 | 
							课程名称 | 
							课程试听 | |
| 高一 | 
							高一(上)、(下)同步复习 | 语文 | ||
| 英语 | ||||
| 数学 | ||||
| 数学(期中串讲) | ||||
| 数学(期末串讲) | ||||
| 数学拔高 | ||||
| 物理 | ||||
| 化学 | ||||
| 生物(一) | ||||
| 地理 | ||||
| 历史 | ||||
| 政治 | ||||
| 
							高中专项突破课 | 语文写作 | |||
| 英语阅读理解 | ||||
| 英语写作 | ||||
| 英语完形填空 | ||||
| 物理功和能量 | ||||
| 高二 | 
							高二(上)、(下)同步复习 | 语文 | ||
| 英语 | ||||
| 数学(理) | ||||
| 数学拔高(理) | ||||
| 数学(文) | ||||
| 数学拔高(文) | ||||
| 物理 | ||||
| 数学(期中串讲) | ||||
| 数学(期末串讲)(理) | ||||
| 数学(期末串讲)(文) | ||||
| 化学 | ||||
| 生物(一) | ||||
| 生物(二) | ||||
| 生物(三) | ||||
| 地理 | ||||
| 历史 | ||||
| 政治 | ||||
| 高三 | 
							高考第一轮复习 | 语文 | ||
| 英语 | ||||
| 数学(理) | ||||
| 数学拔高(理) | ||||
| 数学(文) | ||||
| 数学拔高(文) | ||||
| 物理 | ||||
| 物理拔高 | ||||
| 化学 | ||||
| 生物 | ||||
| 地理 | ||||
| 政治 | ||||
| 历史(韩校版) | ||||
| 历史(李晓风版) | ||||
| 
							高考第二轮复习 | 数学(理) | |||
| 数学(文) | ||||
| 英语 | ||||
| 物理 | ||||
| 化学 | ||||
| 地理 | ||||
| 
							高考第三轮冲刺串讲 | 语数英串讲(理) | |||
| 语数英串讲(文) | ||||
| 物化生串讲 | ||||
| 史地政串讲 | ||||
| 
							高考试题精讲 | 数学(理) | |||
| 英语 | ||||
| 化学 | ||||
| 物理 | ||||
| 2021高考研究2021高考策略(理) | ||||
| 2021高考研究2021高考策略(文) | ||||
Copyright © 2005-2020 Ttshopping.Net. All Rights Reserved .         |
云南省公安厅:53010303502006 滇ICP备16003680号-9
本网大部分资源来源于会员上传,除本网组织的资源外,版权归原作者所有,如有侵犯版权,请立刻和本网联系并提供证据,本网将在三个工作日内改正。

