求助:电子琴乐谱串行传送与演奏的问题

小弟利用pc内部的8250和8253两个芯片,编写了一个电子琴乐谱串行传送与演奏的程序,要求是按键的长短就是乐谱响的时间,不要用延迟程序。但执行.exe程序时,仅显示一个数字就退出程序,并且扬声器也不响,不知道是怎么回事,请高手看一下是怎么回事啊!谢谢了!……
源程序如下:
DATA SEGMENT
TABLE DW 524,588,660,698,784,880,998,1048
DATA ENDS
STACK SEGMENT STACK
DB 256 DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX

MOV DX,2FBH
MOV AL,80H
OUT DX,AL
MOV DX,2F8H
MOV AL,60H
OUT DX,AL
MOV DX,2F9H
MOV AL,0
OUT DX,AL
MOV DX,2FBH
MOV AL,0AH
OUT DX,AL
MOV DX,2FCH
MOV AL,00010011B
OUT DX,AL
MOV DX,2F9H
MOV AL,0
OUT DX,AL

MAIN:MOV DX,2FDH
IN AL,DX
TEST AL,1EH
JNZ ERROR
TEST AL,01H
JNZ RECE
TEST AL,20H
JZ MAIN
MOV AH,1
INT 16H
JZ MAIN
MOV AH,0
INT 16H
CMP AL,'q'
JZ EXIT
MOV DX,2F8H
OUT DX,AL
JMP MAIN
RECE:MOV DX,2F8H
IN AL,DX
AND AL,7FH
PUSH AX
MOV BX,0
MOV AH,14
INT 10H
POP AX
SUB AL,31H
SHL AL,01
MOV BL,AL
MOV AX,0H
MOV DX,12H
MOV BH,0H
DIV WORD PTR[TABLE+BX]
MOV BX,AX
MOV AL,10110110B
OUT 43H,AL
MOV AX,BX
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
IN AL,61H
OR AL,03H
OUT 61H,AL
IN AL,61H
AND AL,0FCH
OUT 61H,AL
EXIT:MOV AH,4CH
INT 21H
ERROR:MOV DX,2F8H
IN AL,DX
MOV AL,'?'
MOV BX,0
MOV AH,14
INT 10H
JMP MAIN
CODE ENDS
END START
[1714 byte] By [wjq5588] at [2008-1-9]
# 1
还有一点是本程序利用8250自发自收方式进行数据传送!……
wjq5588 at 2007-10-19 > top of Msdn China Tech,其他开发语言,汇编语言...
# 2
到网上荡一个spesker porc 字程序,输入频率和节拍就行了
shaohua1986 at 2007-10-19 > top of Msdn China Tech,其他开发语言,汇编语言...