- 论坛徽章:
- 0
|
DATA SEGMENT
COUNT DW 1
MSG DB 'The bell is ring!',0DH,0AH, '$'
BEEP DB 07H,'$'
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS ATA,ES ATA
START:
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AL,1CH
MOV AH,35H
INT 21H
PUSH ES
PUSH BX
PUSH DS
MOV DX,OFFSET RING ;取中断向量
MOV AX,SEG RING
MOV DS, AX
MOV AL,1CH
MOV AH,25H
INT 21H
POP DS
IN AL,21H
AND AL,11111110B
OUT 21H,AL
STI
MOV DI,2
DELAY: MOV SI,3
DELAY1: DEC DI ;产生中断位置
JNZ DELAY1
DEC DI
JNZ DELAY1
POP DX
POP DS
MOV AL,1CH
MOV AH,25H
INT 21H
;DEBUG T时无法进入RING中断子程序,下一条为NOP
RET
MAIN ENDP
RING PROC NEAR
PUSH DS
PUSH AX
PUSH CX
PUSH DX
MOV AX,@DATA
MOV DS,AX
STI
DEC COUNT
JNZ EXIT
MOV DX ,OFFSET MSG ;显示
MOV AH,09H
INT 21H
MOV DX,10
IN AL,61H
AND AL,0FCH
SOUND:
XOR AL,02
OUT 61H,AL
MOV CX,1400H
WAIT1:
LOOP WAIT1
DEC DX
JNE SOUND
MOV COUNT ,182 ; 18.2 1秒
EXIT: ;断续执行中断
CLI
POP DX
POP CX
POP AX
POP DS
IRET
RING ENDP
END START |
|