计算机理论

计算机网络
计算机理论
计算机应用
电子商务

本类阅读TOP10

·Frontpage网页制作
·C#做的ASP.NET登錄篇
·C语言实现串行通信接口程序
·Foxpro DBF数据库转换成SQL Server 6.5表的几种方法
·企业信息化的新选择——Intranet
·动态哈夫曼编码的改进
·论计算机网络中服务的概念
·Visual C++中的开放数据库连接技术
·关于烟汽应用计算机信息技术加强企业管理的调查报告
·Solaris下PRO*C和OCI程序设计分析与比较

分类导航
演讲致辞党团范文
心得体会领导讲话
经验介绍事迹材料
总结汇报计划方案
常用范文写作指南
证券金融银行管理
债务市场保险租赁
金融研究证券投资
财务管理投资决策
财务分析融资决策
财务管理市场营销
会计审计会计审计
成本会计管理会计
CPA行业管理学
战略竞争旅游管理学
成本管理管理学理论
物流管理人力资源管理
财政税收财政政策
财税法规税务研讨
税收理论国债研究
财政研究经济学
中国经济经济学理论
新经济学产业经济
国际经济经济学相关
地方经济发展战略
国际贸易公共管理
公共政策行政管理
经济管理企业战略
管理理论市场营销
企业研究企业文化
文化类西方文化
传统文化社会学相关
艺术学美学
音乐影视
艺术理论社会学
伦理道德环境保护
人口问题农村研究
教育学历史学
教育学国学
理工科理科相关
统计学物理学
工业设计交通
土建水利学材料工程学
电子学通信学
化工计算机
计算机网络计算机理论
计算机应用电子商务
文学外国语
人物研究哲学
哲学相关思想哲学
科技哲学中国哲学
西方哲学逻辑学
政治政治相关
民族主义资本主义
社会主义马克思主义
法律行政法
法学理论司法制度
经济法民法
医学医学
临床医学药学
其他文秘
公务员考试最新资讯
考试资料复习指导
面试指南教育教学
深入CD-ROM编程

作者:未知 来源:应用文写作网 加入时间:2005-12-29 月光软件站

在多媒体系统中,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
还有一些功能,因为不是应用必需的,这里就不再赘述。 

作者:余珏 陈志慧 


相关文章

相关软件