汇编程序——扬声器发声的控制

            今天写了扬声器发声控制的程序,可是在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
 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值