中断实验报告

  • 格式:doc
  • 大小:463.54 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上机实验报告课程名称计算机接口与外设上机内容中断实验

学院计算机学院

专业计算机科学与技术班级

学号

学生姓名

指导教师吴以凡

完成日期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级联