标题:[求助]关于中的发声程序?
只看楼主
kuoping
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-11-22
 问题点数:0 回复次数:1 
[求助]关于中的发声程序?
初学汇编,看到"通用发声程序"部分.

自己按书上所示编译了一下,没有声音(win2003),后用98启动盘启到dos下运行却可以听到,不知是为什么?
(为了听到足够长时间的声音,已经将延时部分及61端口还原部分的代码去掉)
程序见后.

另外,哪位达人可以讲一讲精确延时的计算方法,指令周期之和*时钟周期中的时钟周期怎么计算?
与CPU频率的关系以及现在使用的定时器与286时代的定时器有什么不同吗?

问的较菜,新人,请达人勿笑为盼!

1. SSEG SEGMENT PARA STACK 'stack'
DW 100H DUP(0) ;?
SSEG ENDS

DSEG SEGMENT
;
DSEG ENDS

ESEG SEGMENT
;
ESEG ENDS

CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, ES:ESEG, SS:SSEG

MAIN PROC FAR

MOV AX, DSEG
MOV DS, AX
MOV AX,ESEG
MOV ES, AX

MOV DI,900H
MOV AL,0B6H
OUT 43H,AL
MOV DX,12H
MOV AX,3280H
DIV DI
OUT 42H,AL
MOV AL,AH
OUT 42H,AL

IN AL,61H
MOV AH,AL
OR AL,3
OUT 61H,AL
;按任意键退出
MOV AH,1
INT 21H

MOV AX, 4C00H
INT 21H
MAIN ENDP

CSEG ENDS

END MAIN

2.延时这样可以吗?
MOV BX,200
TIME_DELAY1: MOV CX,2801
TIME_DELAY2: LOOP TIME_DELAY2
DEC BX
JNZ TIME_DELAY1

搜索更多相关主题的帖子: 发声 时钟 周期 CPU 
2006-01-16 20:51
等待西红柿
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-1-26
得分:0 
一般延时都是直接用cx,先push掉,内循环完再pop出来loop
这样是可以,但是bx很多时间会用到,而且在子循环中有时候
的21中断会导致bx值的改变
2006-01-26 11:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-43127-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.365624 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved