注册 登录
编程论坛 汇编论坛

求助 关于汇编控制主板喇叭发声

xiaoyaoshu 发布于 2014-10-10 00:36, 5832 次点击
我的电脑是台式机,系统是xp,主板喇叭是蜂鸣器,用”pc机汇编实战精解”第一个让喇叭发声的例子却怎么都没声音,求高手解答
7 回复
#2
hu9jj2014-10-10 07:06
也许是XP控制了BIOS的中断。
#3
wp2319572014-10-10 10:12
也许你应该把你的平台构建环境还有代码啥的都说明一下
#4
xiaoyaoshu2014-10-10 18:47
系统:萝卜家园ghost xp sp3快速装机版V2014 版本:2014.01
开始-运行-cmd-debug
-a100
mov xc,ffff
mov bx,cx
in al,61
xor al,02
out 61,al
mov cx,0500
loop 010E
mov cx,bx
loop 0103
ret
最后g=100
是个喇叭发声的东东,就是不发声,群里面说IBM的笔记本行,别的机器就不行了.还有个网友是win 7也能发声
#5
wp2319572014-10-11 08:28
这个在虚拟dos下恐怕无法正确执行  需要纯16位dos环境
#6
xiaoyaoshu2014-10-11 22:38
是,百度说要dos实模式。但win 7却行,不知道为什么
#7
hu9jj2014-10-12 10:00
汇编语言通常是对硬件直接操作或者直接调用BIOS的中断,这对操作系统来说是失控的。从系统安全的角度出发,一般是不允许的程序直接对硬件进行操作或者调用BIOS中断,所有的这些操作都必须经过操作系统的控制。换句话说,也就是操作系统必须接管所有对硬件直接操作或对BIOS中断的调用,经过操作系统的分析,认为对系统的安全性不影响才允许执行。所以,汇编程序在DOS下不受控制,可以得到执行,而在其他系统下就有可能无法执行、或者得不到设想的效果。
#8
wfoo2014-10-13 10:24
这个代码是直接操作io地址空间的,应该在用户态也是可以运行的(没试过,不确定)。我查了下0x61端口的描述
               PB7 0 enable keyboard read
                   1 clear keyboard and enable sense of SW1
               PB6 0 hold keyboard clock low, no shift reg. shifts
                   1 enable keyboard clock signal
               PB5 0 enable i/o check
                   1 disable i/o check
               PB4 0 enable r/w memory parity check
                   1 disable r/w parity check
               PB3 0 turn off LED
                   1 turn on LED (old cassettee motor off)
               PB2 0 read spare key
                   1 read r/w memory size (from Port C)
               PB1 0 turn off speaker
                   1 enable speaker data
               PB0 0 turn off timer 2
                   1 turn on timer 2, gate speaker with square wave
是不是speaker不仅跟PB1有关,还和PB0有关呢?
楼主可以做下实验试试。
1