发布时间 : 星期二 文章微机原理课程设计 - 图文更新完毕开始阅读3595f50d58f5f61fb636664c
10秒控制:定时器每秒钟中断18.2次,每次调用一个1CH类型的中断。系统中原有的1CH类型中断服务子程序没有执行任何功能。即,每次中断不执行任何操作返回主程序。替换原有中断服务程序,变为用户的发声子程序ring
10秒钟将进行182次中断,在第182次中断时执行发声功能,并重置计数次数182,其他直接跳出中断服务子程序。 3.5主程序
1主程序负责对中断向量进行设置和恢复等操作
中断向量的存取
设置中断向量:
MOV DX,OFFSET RING ;新偏移量送DX
MOV AX, SEG RING
MOV DS,AX ;新段址送DS
MOV AL, 1CH
MOV AH, 25H
INT 21H ;写入新的中断向量
取中断向量
MOV AL,1CH;取中断向量
MOV AH, 35H
INT 21H
PUSH ES ;存原中断向量段址
PUSH BX ;存原中断向量偏移量
延时控制:延时控制目的是延长主程序执行期间给中断服务程序机会实现中断。
Mov bx, 1234H
Mov dx,bx
Loop1:Mov cx,bx
Delay: Loop delay
Dec dx
Loop loop1
3.6程序实现
程序(附程序代码)
数据段:DATA SEGMENT
COUNT DW 1
MESS DB ‘The bell is ring!’, 0DH,0AH,’$’
DATA ENDS
主程序:
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
MAIN PROC FAR
START: 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 ;新偏移量送DX
MOV AX, SEG RING
MOV DS,AX ;新段址送DS
MOV AL, 1CH
MOV AH, 25H
INT 21H ;写入新的中断向量
POP DS
IN AL,21H;读取中断屏蔽字
AND AL,11111110B;允许定时器中断
OUT 21H, AL
STI;开中断
MOV DI, 2000
DELAY:MOV SI,3000;延时
DELAY1:DEC SI
JNZ DELAY1
DEC DI
JNZ DELAY
POP DX ;恢复原中断向量
POP DS