运行程序后播放音乐
音乐放完后一直卡在一个音上不停
怎么编程序才能让它停下
8086汇编语言如何关闭扬声器
答案:2 悬赏:60 手机版
解决时间 2021-02-09 18:37
- 提问者网友:战魂
- 2021-02-09 14:28
最佳答案
- 五星知识达人网友:洎扰庸人
- 2021-02-09 15:16
别的不多说 给程序啊
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,10
SING: PUSH DX
MOV BX,1000
CALL MIDO
call delay
POP DX
DEC DX
JNZ SING ;JNZ不等于零\不相等 标志位ZF=0
MOV AH,4CH
INT 21H
MIDO PROC
MOV AL,0B6H ;0B6H=10110101 计数器2为方式2 采用十进制计数 先读写低字节 后读写高字节
OUT 43H,AL ;写入方式控制字
MOV AX,34DCH
MOV DX,12H
DIV BX
OUT 42H,AL ;写入低字节计数器
MOV AL,AH
OUT 42H,AL ;写入高字节计数器
IN AL,61H ;PB的端口地址
OR AL,03H ;D1D0=PB1PB0==11 其他为不变 PB=1 表示打开扬声器只有PB0PB1同时为高电平 扬声器才能发声
OUT 61H,AL ;直接控制发声
and AL,00H ;D1D0=PB1PB0==11 其他为不变 PB=0 表示打开扬声器只有PB0PB1同时为高电平 扬声器才能发声
OUT 61H,AL ;关闭发声
RET
MIDO ENDP
DELAY PROC
MOV DX,01FFH
DEL1: MOV CX,0FFFFH
DEL2: LOOP DEL2
DEC DX
JNZ DEL1
RET
DELAY ENDP
CODE ENDS
END START
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,10
SING: PUSH DX
MOV BX,1000
CALL MIDO
call delay
POP DX
DEC DX
JNZ SING ;JNZ不等于零\不相等 标志位ZF=0
MOV AH,4CH
INT 21H
MIDO PROC
MOV AL,0B6H ;0B6H=10110101 计数器2为方式2 采用十进制计数 先读写低字节 后读写高字节
OUT 43H,AL ;写入方式控制字
MOV AX,34DCH
MOV DX,12H
DIV BX
OUT 42H,AL ;写入低字节计数器
MOV AL,AH
OUT 42H,AL ;写入高字节计数器
IN AL,61H ;PB的端口地址
OR AL,03H ;D1D0=PB1PB0==11 其他为不变 PB=1 表示打开扬声器只有PB0PB1同时为高电平 扬声器才能发声
OUT 61H,AL ;直接控制发声
and AL,00H ;D1D0=PB1PB0==11 其他为不变 PB=0 表示打开扬声器只有PB0PB1同时为高电平 扬声器才能发声
OUT 61H,AL ;关闭发声
RET
MIDO ENDP
DELAY PROC
MOV DX,01FFH
DEL1: MOV CX,0FFFFH
DEL2: LOOP DEL2
DEC DX
JNZ DEL1
RET
DELAY ENDP
CODE ENDS
END START
全部回答
- 1楼网友:长青诗
- 2021-02-09 15:33
任务占坑
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯