结构推理 已有一个实现延时1秒的过程,名为DELAY,又知8253的CLK为1.19M。试编写一个程序,利用8253并调用过程 DELAY 实现按 300(HZ)赫兹的频率发声5秒。(8253的控制端口地址为43H,应使用的控制字为B6H,计数器 2 的地址为42H)
【正确答案】所求程序如下: code SEGMENT ASSUME CS:code start: MOV AL,0b6h ;写8253的控制字寄存器,使用计数器2,按方式3工作 OUT 43h,AL MOV DX,12h ;将1.19M(CLK的频率)送DX、AX MOV AX,2870h MOV BX,300 DIV BX ;300为发声频率,求计数初始值 OUT 42h,AL ;16位计数初值分两次送计数器2 MOV AL,AH OUT 42h,AL IN AL,61h MOV AH,AL OR AL,3 ;最低两位置1,其它位不变 OUT 61h,AL MOV CX,5 ;循环5次,控制发声5秒钟 lop0:CALL DELAY LOOP lop0 MOV AL,AH OUT 61h,AL MOV AH,4ch INT 21h code ends end start
【答案解析】