中断实验报告
- 格式:doc
- 大小:463.54 KB
- 文档页数:7
上机实验报告课程名称计算机接口与外设上机内容中断实验
学院计算机学院
专业计算机科学与技术班级
学号
学生姓名
指导教师吴以凡
完成日期2014-12-9
一、实验目的
1、掌握8259中断控制器的工作原理。
2、学会编写中断服务程序。
二、实验内容及成果展示
实验1:使用软中断
代码:
start:
M OV AX,DATA
M OV DS,AX
CLI
M OV SI,0CH*4
M OV AX, OFFSET INTSERVICE ;中断入口偏移地址
M OV ES:[SI], AX
M OV AX, SEG INTSERVICE ;中断入口的段地址
M OV ES:[SI+2], AX
S TI ;开中断
M OV AL,CNT ; 初始CNT=1
M OV DX,0000H ; led的地址
O UT DX,AL ;开始第一个灯亮
LI: CALL INTSERVICE ;调用软件中断
C ALL DELAY ;延时
J MP LI
;中断服务程序----------------------------------
INTSERVICE PROC
P USH DS
M OV AL,CNT ;cnt=1;
R OL AL,1 ;cnt=cnt<<1
M OV CNT,AL
M OV DX,0000H ;led=cnt<<1
O UT DX,AL
P OP DS
INTSERVICE ENDP
;-------------------------------------------------
;软件延时子程序----------------------------------
DELAY PROC
P USH BX ;这里用到堆栈
P USH CX
M OV BX,1
L P2:MOV CX,0
L P1:LOOP LP1
D EC BX
J NZ LP2
P OP CX
P OP BX
R ET
DELAY ENDP
code ENDS
END start实验结果:
实验2:使用1片8259A + 按钮硬件中断
代码如下:
start:
MOV AX,DATA
MOV DS,AX
;中断向量的设置-------------------------------------------
CLI
MOV AX,0
MOV ES,AX
MOV SI,60H*4
MOV AX, OFFSET INT0 ; 中断入口偏移地址
MOV ES:[SI], AX
MOV AX, SEG INT0 ; 中断入口的段地址
MOV ES:[SI+2], AX
;初始化8259A------------------------------------------------
;设置ICW1 ;设置ICW1(教材P207图7.3)
MOV AL,00010011B ;边沿触发/单片使用/需要ICW4 MOV DX,020H ;端口号
OUT DX,AL
;设置ICW2 ;设置ICW2(教材P208图7.4)
MOV AL,01100000B ;中断向量号60H
MOV DX,020H ;端口号
OUT DX,AL
;设置ICW4 ;设置ICW4
MOV AL,00011011B ;特殊全嵌套方式/缓冲方式(从片)/自动结束方式/16位机
OUT DX,AL
;设置OCW1
MOV DX,21H ;设置OCW1(教材P209图7.7)
MOV AL,00000000B ;8个中断全部开放
OUT DX,AL
;8259初始化结束---------------------------------------------
MOV AL,CNT ;初始CNT=1
MOV DX,0200H ;led的地址
OUT DX,AL ;开始第一个灯亮
STI ; 开中断
LI: ;8086模型有问题,它取得的中断号是最后发到总线上的数据,并不是由8259发出的中断号.
;所以以下循环送中断向量地址
MOV DX,0400H ;端口号使用8259A的端口0的地址
MOV AL,60H
OUT DX,AL
JMP LI
;中断服务程序----------------------------------
INT0 PROC
CLI
MOV AL,CNT ;cnt=1;
ROL AL,1 ;cnt=cnt<<1
MOV CNT,AL
MOV DX,0200H ;led的地址OUT DX,AL
STI
IRET
INT0 ENDP
;-------------------------------------------------
code ENDS
END start
三、8259A级联