中文核心期刊咨询网权威的中英文核心期刊目录大全,最新2023中文核心期刊目录查询,英文论文期刊发表学术咨询服务。
中文核心期刊咨询网

CD-ROM编程深入计算机论文发表价格

作者: admin2013-09-02阅读:文章来源:未知

  本文引自《计算机学报》 杂志是中国计算机领域权威性学术刊物。

  在多媒体系统中,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

相关论文