久久久久无码精品,四川省少妇一级毛片,老老熟妇xxxxhd,人妻无码少妇一区二区

深入CD-ROM編程

時(shí)間:2024-05-15 07:22:22 計(jì)算機(jī)畢業(yè)論文 我要投稿
  • 相關(guān)推薦

深入CD-ROM編程

在多媒體系統(tǒng)中,CD-ROM是必不可少的。以DOS為例,CD-ROM應(yīng)用環(huán)境的大致結(jié)構(gòu)是:
用戶

MSCDEX

廠家提供的驅(qū)動(dòng)程序

CD-ROM
其中,MSCDEX起到了一個(gè)轉(zhuǎn)換器的作用,將CD上的文件格式轉(zhuǎn)化為標(biāo)準(zhǔn)的DOS文件格式,使CD-ROM象普通驅(qū)動(dòng)器一樣受DOS管理。
但是,在一般應(yīng)用中,CD-ROM還能用來播放音樂碟,許多應(yīng)用軟件(如Creative Labs的Quick CD)可以模擬一臺(tái)CD音響,完成出盒、入盒、播放、快速進(jìn)退和重復(fù)等一系列功能。實(shí)際上,MSCDEX并未提供這些功能,必須訪問CD-ROM的驅(qū)動(dòng)程序,才能達(dá)到上述目的,因?yàn)樗蠧D-ROM的驅(qū)動(dòng)程序與MSCDEX之間的接口都是規(guī)范的,這給我們提供了極大的方便。下面將詳細(xì)闡述如何實(shí)現(xiàn)上述功能。
DOS的設(shè)備分為字符設(shè)備和塊設(shè)備兩種,CD-ROM的驅(qū)動(dòng)程序?qū)儆谇罢,訪問它必須遵循DOS的要求:填寫設(shè)備驅(qū)動(dòng)程序請求頭、訪問驅(qū)動(dòng)程序的策略(Strategy)過程、訪問驅(qū)動(dòng)程序的中斷(Interrupt)過程。
設(shè)備驅(qū)動(dòng)程序請求頭的基本格式如下:
偏移量 類型 含義
00H 字節(jié) 請求頭長度
01H 字節(jié) 驅(qū)動(dòng)程序內(nèi)的子單元
02H 字節(jié) 命令碼
03H 單字 返回碼

以下內(nèi)容根據(jù)命令碼進(jìn)行填寫
下面給出幾種CD-ROM常用功能使用的命令碼和格式:
1.IOCTL INPUT:
偏移量 類型 內(nèi)容
00H 字節(jié) 1AH
01H 字節(jié) 00H
02H 字節(jié) 03H
03H 字節(jié) 11 DUP(?)
0EH 雙字 緩沖區(qū)地址
12H 單字 緩沖區(qū)長度
14H 字節(jié) 6 DUP (?)
在緩沖區(qū)內(nèi)按一定的格式填入?yún)?shù),便可得到CD-ROM的各種狀態(tài)。
緩沖區(qū)的格式:
作用 長度 格式
取CD-ROM狀態(tài) 5 輸入:06 xx xx xx xx
返回:06 SS SS 00 00
說明:SS SS為狀態(tài)字,關(guān)鍵的有兩位
位0:1、開門 0、關(guān)門
位B:1、有盤 0、無盤
取CD總扇區(qū)數(shù) 5 輸入:08 xx xx xx xx
返回:08 LL LL LL LL
說明:LL LL LL LL為總扇區(qū)數(shù)
取音樂CD信息 7 輸入:0A xx xx xx xx xx xx
返回:0A xx NN TT SS MM xx
說明: NN為曲目數(shù)
MM為分鐘數(shù)
SS為秒數(shù)(0~59)
TT為扇區(qū)數(shù)(0~74)
CD的一個(gè)扇區(qū)大小為2048B
播放速度為每秒75扇區(qū)即150KB/s
取指定歌曲 7 輸入:0B NN xx xx xx xx xx
的起始時(shí)間 返回:0B NN TT SS MM xx xx
說明: NN為曲目序號(hào)
MM為起始分鐘數(shù)
SS為起始秒數(shù)(0~59)
TT為起始扇區(qū)數(shù)(0~74)
取播放狀態(tài) 11 輸入:0C xx xx xx xx xx xx xx xx xx xx
返回:0C xx NN xx MM SS TT xx ZM ZS ZT
說明: NN為曲目序號(hào)(BCD碼)
MM為該曲目分鐘數(shù)
SS為該曲目秒數(shù)(0~59)
TT為扇區(qū)數(shù)(0~74)
ZM為總分鐘數(shù)
ZS為總秒數(shù)(0~59)
ZT為扇區(qū)數(shù)(0~74)
2.IOCTL OUTPUT
偏移量 類型 內(nèi)容
00H 字節(jié) 1AH
01H 字節(jié) 00H
02H 字節(jié) 0CH
03H 字節(jié) 11 DUP(?)
0EH 雙字 緩沖區(qū)地址
12H 單字 緩沖區(qū)長度
14H 字節(jié) 6 DUP(?)
在緩沖區(qū)內(nèi)按一定的格式填入?yún)?shù),便可操縱CD-ROM的動(dòng)作。
緩沖區(qū)的格式:
作用 長度 格式
出盒 1 輸入:00
解鎖出盒鍵 2 輸入:01 00
加鎖出盒鍵 2 輸入:01 01
入盒 1 輸入:05
3.PLAY AUDIO
偏移量 類型 內(nèi)容
00H 字節(jié) 16H
01H 字節(jié) 00H
02H 字節(jié) 84H
03H 字節(jié) 10 DUP (?)
0DH 字節(jié) 01H
0EH 字節(jié) 起始扇區(qū)數(shù)(0~74)
0FH 字節(jié) 起始秒數(shù)
10H 字節(jié) 起始分鐘數(shù)
11H 字節(jié) 00H
12H 雙字 播放扇區(qū)數(shù)(75扇區(qū)/s)
從指定的起始時(shí)間開始播放指定的扇區(qū)數(shù)然后自動(dòng)停止
4.STOP AUDIO
偏移量 類型 內(nèi)容
00H 字節(jié) ODH
01H 字節(jié) 00H
02H 字節(jié) 85H
03H 字節(jié) 10 DUP (?)
停止播放
以上給出的是CD-ROM常用功能的設(shè)備驅(qū)動(dòng)程序請求頭格式,但是在應(yīng)用中怎樣實(shí)現(xiàn)上述功能呢?有兩種方法。
一是直接訪問設(shè)備驅(qū)動(dòng)程序,這種方法比較復(fù)雜,本文不作介紹。
二是使用MSCDEX提供的接口。主要功能有以下幾種。
(1) 檢測MSCDEX是否安裝
BX=0
AX=1500H
INT 2FH
返回:
BX=CD-ROM的個(gè)數(shù)
CX=起始的CD-ROM盤號(hào)(0-A,1-B,等等)
(2) 發(fā)送設(shè)備驅(qū)動(dòng)程序請求
ES:BX=設(shè)備驅(qū)動(dòng)程序請求頭地址
CX=CD-ROM盤號(hào)(0-A,1-B,等等)
AX=1510H
INT 2FH
用戶填寫請求頭,通過INT 2FH完成所需要的功能。
下面給出一段例程,播放CD中第二支曲目30秒鐘。
限于篇幅,本程序未作錯(cuò)誤處理,假設(shè)執(zhí)行正確。
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
還有一些功能,因?yàn)椴皇菓?yīng)用必需的,這里就不再贅述。 

作者:余玨 陳志慧 

【深入CD-ROM編程】相關(guān)文章:

深入Windows通信編程07-12

CD-ROM格式數(shù)據(jù)的軟解碼模塊設(shè)計(jì)08-09

探索結(jié)對編程09-16

系統(tǒng)托盤的編程05-05

對電影《哈姆雷特》的深入剖析10-30

LabVIEW與MATLAB混合編程10-25

Visual C#的Excel編程07-12

DOS下DSP播音的編程06-06

ASP 3.0高級(jí)編程(二)10-22

ASP 3.0高級(jí)編程(一)07-29