通用袖珍CD播放器 甘建哲 1997-01-01   在光驱上听音乐,玩家们所用的CD播放器多是声卡提供的。这种CD播放器缺乏通用性,只能在特定的硬件环境(特定的声卡)下使用,给用户带来了一定的不便。为此,特用光驱的中断调用来编写了一个简易CD播放器,可以从头唱到尾。程序编译成COM文件后仅有200字节,可谓短小精悍。在SONY、GoldStar、维用等光驱测试中通过,且可在有耳机输出的光驱而无声卡的硬件环境下工作。 #2  源程序清单(编译环境:486 Intel DX2/66、DOS 6.22、MASM 5.0):   Code Segment   ORG 100h   Assume cs:code,ds:code,   es:code   Start:mov ax,cs   mov ds,ax   mov Word ptr Head[10h],ax   mov ax,1500h   int 2fh   ;取得光驱驱动器号,在CX中返回   mov CDRom,cx   mov Buf[0],0ah   mov ax,cs   mov es,ax   mov bx,Offset Head   mov ax,1510h   int 2fh ;取得CD盘信息,在变量Buf中返回   mov al,Buf[5]   mov cl,60   mul cl   mov bx,0   mov bl,Buf[4]   add ax,bx   mov Word ptr Play[12h],ax   mov Buf[0],0bh   mov Buf[1],1   mov ax,cs   mov es,ax   mov bx,Offset Head   mov cx,CDRom   mov ax,1510h   int 2fh  ;第一首歌信息,在变量Buf中返回   mov al,Buf[2]   mov Play[0Eh],al   mov al,Buf[4]   mov Play[10h],al   mov cl,60   mul cl   mov bx,0   mov bl,Buf[3]   mov Play[0Fh],bl   add bx,ax   mov ax,Word ptr Play[12h]   sub ax,bx   mov cx,75   mul cx   mov Play[14h],dl   mov Play[13h],ah   mov Play[12h],al   mov ax,cs   mov es,ax   mov bx,Offset Play   mov cx,CDRom   mov ax,1510h   int 2fh ;播放CD,控制信息在变量Play中   mov ax,4c00h   int 21h   Buf db 7 dup(0)   Head db 04h,00h,03h,11 dup(0)   dw Offset Buf   dw 00h   db 07h   db 7 dup(0)   Play db 16h,00h,84h,10 dup(0),01h,7 dup(0),00h   CDRom dw 0   Code Ends   End Start