求助:电子琴乐谱串行传送与演奏的问题
源程序如下:
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

