自己按书上所示编译了一下,没有声音(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