微机原理课程设计 - 图文 联系客服

发布时间 : 星期二 文章微机原理课程设计 - 图文更新完毕开始阅读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