怎么在个人电脑上使汇编发声程序发出声音?

woaiballack 2010-11-17 10:13:48
在PC上编译运行汇编写的发声程序,可是怎么都没有反应,就是没有声音。程序应该是没有问题的,我找了好几个程序,都没有声音,看来不是程序的问题,而是电脑的问题。看到网上有人说,是电脑把访问端口指令进行了限制,请高人解答下这是什么意思,怎么可以不让它限制。
我的系统是Win7的,不会有问题吧?编译环境是Win-Masm,也不会是这个的问题吧?请问我该怎么办啊,本人系菜鸟,最好麻烦写下详细点的步骤吧
先谢谢了!!!
...全文
689 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sofe 2011-12-12
  • 打赏
  • 举报
回复
加上时间延迟试试,发生频率太快,人耳听不到。
king441400 2011-09-30
  • 打赏
  • 举报
回复
应该还有别的原因,同样的程序,我的笔记本只运行不发声音,但别人的笔记本却可以发出声音
woaiballack 2010-12-01
  • 打赏
  • 举报
回复
结贴了,大概是笔记本主板上没有喇叭,不过我不确定,反正我试验的台式机可以,笔记本不行,也可能是别的原因吧,有什么问题后续讨论,就这样吧。
这是我的第一个帖子,感谢大家参与,如有照顾不周,尽请谅解!
leetow2003 2010-11-23
  • 打赏
  • 举报
回复
你的程序中有OUT 61H,AL这样的代码,是对硬件直接操作的,所以在windows下的虚拟DOS中不能运行的,
需要在纯dos下运行,你可以用win98光盘引导,再试试
woaiballack 2010-11-23
  • 打赏
  • 举报
回复
好吧,我再试试,一周之内肯定结贴
nanlingcg 2010-11-23
  • 打赏
  • 举报
回复
以前我写了好几个,找了半天也不知道搞哪去了?
记得这些个8086下的图形和声音什么的在某些个电脑上运行会不正常,最好在虚拟机里搞比较好!

快结帖,要给我点分!!!呵呵.
changyanchen 2010-11-22
  • 打赏
  • 举报
回复
在windows 系统实模式下是不允许直接读写硬件端口的.
MHBBCRCPJ 2010-11-22
  • 打赏
  • 举报
回复
你可以下载一些有声音的dos程序试试,比如2000年以前的dos游戏。
MHBBCRCPJ 2010-11-22
  • 打赏
  • 举报
回复
我听说笔记本的主板好像没有喇叭,但是所有的汇编发生程序几乎都是用的主板上的喇叭。
woaiballack 2010-11-21
  • 打赏
  • 举报
回复
试了好几个程序,就贴一个,大家看看没有错误吧,但是没有声音。。。

DATA SEGMENT
COUNT DW 1
MESS DB 'The bell is ring!',0AH,0DH,'$'
DATA ENDS

STACK SEGMENT STACK 'STACK'
DB 100 DUP(?)
STACK ENDS

CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:
MOV AX,STACK
MOV SS,AX
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AL,1CH
MOV AH,35H
INT 21H
PUSH ES
PUSH BX
PUSH DS
MOV DX,OFFSET RING
MOV AX,SEG RING
MOV DS,AX
MOV AL,1CH
MOV AH,25H
INT 21H
POP DS
IN AL,21H ;只允许定时器中断,其他中断屏蔽
AND AL,0FEH
OUT 21H,AL
STI
MOV DI,2000
DELAY: MOV SI,3000
DELAY1:DEC SI
JNZ DELAY1
DEC DI
JNZ DELAY
POP DX
POP DS
MOV AL,1CH
MOV AH,25H
INT 21H
RET
MAIN ENDP
RING PROC NEAR
PUSH DS
PUSH AX
PUSH CX
PUSH DX
MOV AX,DATA
MOV DS,AX
STI
DEC COUNT
JNZ EXIT
MOV DX,OFFSET MESS
MOV AH,09H
INT 21H
MOV DX,100
IN AL,61H
AND AL,0FCH
SOUND: XOR AL,02H
OUT 61H,AL
MOV CX,140H
WAIT1: LOOP WAIT1
DEC DX
JNE SOUND
MOV COUNT,182
EXIT: CLI
POP DX
POP CX
POP AX
POP DS
IRET
RING ENDP
CODE ENDS
END START
woaiballack 2010-11-21
  • 打赏
  • 举报
回复
masmaster,你好,麻烦能说明一下怎么进入纯dos。。。关键是进去之后怎么编译运行
太感谢了
leetow2003 2010-11-19
  • 打赏
  • 举报
回复
把代码贴出来
dlpzgr 2010-11-19
  • 打赏
  • 举报
回复
有很多发音程序是因为等待时间太短了,机器太快没听到
masmaster 2010-11-17
  • 打赏
  • 举报
回复
在纯DOS环境
foreveringxq 2010-11-17
  • 打赏
  • 举报
回复
好,很有意思

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧