今天写了扬声器发声控制的程序,可是在dos下运行,无错误无警告,就是不出声。不知为何,想请教各位大虾这是什么情况,又该如何解决。小女子在此拜谢了!O(∩_∩)O
以下是我编写的程序(用masm50编译的):
.model small
.data
freq dw 2000
.stack
.code
start: mov ax,@data
mov ds,ax
mov ax,freq
call speaker ;设置扬声器音调
call speakon ;打开扬声器声音
mov ah,1 ;等待按键
int 21h
call speakoff ;关闭扬声器声音
speaker proc
push ax
mov al,0b6h ;10110110B
; 计数器2、写低高、方式3、二进制
out 43h,al ;写入控制字
pop ax ;ax中存放的计数值
out 42h,al ;写入低8位计数值
mov al,ah
out 42h,al ;写入高8位计数值
ret
speaker endp
speakon proc
push ax
in al,61h ;8255的相关设置
or al,03h
;D1D0=PB1PB0=11B,其他位不变
out 61h,al
pop ax
ret
speakon endp
speakoff proc
push ax
in al,61h
and al,0fch
;D1D0=PB1PB0=00B,其他位不变
out 61h,al
pop ax
ret
speakoff endp
end start