?? sound.asm
字號:
;Its execute file can't be name with sound.exe into W98
mydata SEGMENT
pstart DB 'Program start.',0DH,0AH,'$'
pend DB 'Program will end when input ',27H,'q',27H,'.',0DH,0AH,'$'
mydata ENDS
mystack SEGMENT stack
DW 100 dup(?)
mystack ENDS
mycode SEGMENT
ASSUME CS:mycode,DS:mydata,ES:mystack
main PROC
MOV AX,mydata
MOV DS,AX
MOV DX,OFFSET pstart
MOV AH,09H
INT 21H
PUSH CX
PUSH DI
MOV CX,2000 ;delaytime,input parameter
MOV DI,600 ;frequency,input parameter
CALL sound
POP DI
POP CX
MOV DX,OFFSET pend
MOV AH,09H
INT 21H
wait1: MOV AH,01H
INT 21H
CMP AL,'q'
JNE wait1
MOV AH,4CH
INT 21H
main ENDP
sound PROC
PUSH AX
PUSH DX
MOV AL,0B6H ;10110110B,control word of 8253,TIMER2,MODE3
OUT 43H,AL
MOV DX,0020H ;fclk=1.19MHZ
MOV AX,34DEH
DIV DI ;AX←count N=fclk/f
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
IN AL,61H ;Read PB
MOV AH,AL ;Save from PB
OR AL,3 ;PB0=1,PB1=1
OUT 61H,AL ;Write PB
delay: PUSH CX
MOV CX,0AFFFH ;Delaytime
delay1: NOP
NOP
LOOP delay1
POP CX
LOOP delay
MOV AL,AH ;Restore to PB
OUT 61H,AL
POP DX
POP AX
RET
sound ENDP
mycode ENDS
END main
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -