【正确答案】程序如下:
STACK SEGMENT PARASTACK'STACK'
DB 256 DUP(0)
STACK ENDS
CODE SEGMENT PARA PUBLIC'CODE'
START PROC FAR
ASSUME CS:CODE
PUSH DS
MOV AX,0
PUSH AX
MOV DX,3FBH
MOV AL,80H
OUT DX,AL
MOV DX,3F8H
MOV AL,12
OUT DX,AL
INC DX
MOV AL,0
OUT DX,AL
MOV DX,3FBH
MOV AL,0AH
OUT DX,AL
MOV DX,3FCH
MOV AL,03H
OUT DX,AL
MOV DX,3F9H
MOV AL,0
OUT DX,AL
FOREVER: MOV DX,3FDH
IN AL,DX
TEST AL,1EH
JNZ ERROR
TEST AL,01H
JNZ RECEIVE
TEST AL,20H
JZ FOREVER
MOV AH,1
INT 16H
JZ FOREVER
MOV AH,0
INT 16H
MOV DX,3F8H
OUT DX,AL
MOV AH,2
MOV DL,AL
INT 21H
CMP AL,27
JNZ NEXT
MOV AH,4CH
INT 21H
NEXT: JMP FOREVER
RECEIVE: MOV DX,3F8H
IN AL,DX
AND AL,7FH
CM PAL,27
JNZ DISP
MOV AH,4CH
INT 21H
DISP:PUSH AX
MOV BX,0
MOV AH,14
INT 10H
POP AX
CMP AL,0DH
JNZ FOREVER
MOV AL,0AH
MOV BX,0
MOV AH,14
INT 10H
JMP FOREVER
ERROR: MOV DX,3F8H
IN AL,DX
MOV AL,'?'
MOV BX,0
MOV AH,14
INT 10H
JMP FOREVER
START ENDP
CODE ENDS
END START
【答案解析】