网站首页 | 范文大全 | 节日大全 | 教案下载 | 个人简历 | 优秀作文 | 精美散文 | 励志名言 | 公文范文 | 文档下载 | 论文范文 | 读后感大全 | 文库 |
鸿斋文档网
  • 小学作文
  • 初中作文
  • 高中作文
  • 体裁作文
  • 字数作文
  • 话题作文
  • 人物作文
  • 节日作文
  • 一年级作文
  • 二年级作文
  • 三年级作文
  • 四年级作文
  • 五年级作文
  • 六年级作文
  • 初一作文
  • 初二作文
  • 初三作文
  • 中考作文
  • 高一作文
  • 高二作文
  • 高三作文
  • 高考作文
  • 写人作文
  • 状物作文
  • 叙事作文
  • 节日作文
  • 写景作文
  • 动物作文
  • 植物作文
  • 抒情作文
  • 励志作文
  • 想象作文
  • 话题作文
  • 童话作文
  • 写信作文
  • 续写
  • 改写
  • 记叙文
  • 议论文
  • 说明文
  • 日记
  • 周记
  • 小说
  • 诗歌
  • 您的位置:鸿斋文档网 > 优秀作文 > 动物作文 > CD-ROM编程研究论文 正文 2021-02-27 12:02:52

    CD-ROM编程研究论文

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

     

    推荐访问:编程 研究 论文

    • 范文大全
    • 教案
    • 优秀作文
    • 教师范文
    • 综合阅读
    • 读后感
    • 说说
    CD-ROM编程研究论文》由(鸿斋文档网)整理提供,版权归原作者、原出处所有。
    Copyright © 2021 鸿斋文档网 All Rights Reserved.