📄 p300.asm
字号:
DATA SEGMENT
COUNT DW 1
MSG DB 'The bell is ringing!',0dh,0aH,'$'
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
;------------------
MOV AL,1CH
MOV AH,35H
INT 21H
PUSH ES
PUSH BX
PUSH DS
;------------------
MOV DX,OFFSET RING;LEA DX,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 ;FLAG(IF)=1
;------------------
MOV DI,60000
DELAY:
MOV SI,60000
DELAY1:
DEC SI
JNZ DELAY1
DEC DI
JNZ DELAY
JMP DELAY
;------------------
POP DX
POP DS
MOV AL,1CH
MOV AH,25H
INT 21H
;------------------
MOV AX,4C00H ;MOV AH,4CH
INT 21H
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; LEA DX,MSG
MOV AH,9
INT 21H
MOV DX,100
IN AL,61H
AND AL,0FCH; AND AL,11111100B
SOUND:
XOR AL,00000010B
OUT 61H,AL
MOV CX,1400H
WAIT1:
LOOP WAIT1
DEC DX
JNE SOUND
MOV COUNT,91
EXIT:
CLI
POP DX
POP CX
POP AX
POP DS
IRET
RING ENDP
;----------------
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -