汇编实验报告 - 图文  下载本文

电子科技大学教务处制表

电 子 科 技 大 学

实 验 报 告

学生姓名:邓文熙 学 号:2013060109022 指导教师:徐行 实验地点: A2-411 实验时间:2016.5.26 一、实验室名称: A2-411 二、实验项目名称:8259中断控制器实验 三、实验学时:4

四、实验原理:(包括知识点,电路图,流程图)

1.8259A的工作过程

中断源在中断请求输入端IR0-IR7上产生中断请求 涉及问题:中断请求的触发方式有哪些?

中断请求被锁存在IRR中,并经IMR屏蔽,结果送优先权电路判优 涉及问题:IRR/IMR的数据是自动写入还是通过软件编程设定?

优先权电路检出优先权最高的中断请求位,设置ISR的对应位(置1)

涉及问题:中断判优的依据是什么?ISR是自动写入还是通过软件编程设定? 8259A控制逻辑接受中断请求,向CPU输出INT信号

CPU接受INT信号,进入两个INTA中断响应周期,第一个周期通知8259A做好响应准备,第二个周期8259A将响应的中断类型号输出到DB上 涉及问题:CPU中断响应过程中的“配套操作”有哪些? CPU读取该中断类型号,转移到相应的中断处理程序

涉及问题:如何通过中断类型号找到中断处理程序?(后面详解) 2、8259A的命令字

ICW1/OCW2/OCW3复用同一个地址(A0=0);剩下的命令字复用另一个地址(A0=1),在本系统中,复用地址分别是0FFE0H和0FFE1H,预置数类别顺序为先初始化命令字,再操作命令字,预置数设定顺序为下标顺序。

0FFE0H用于ICW1,OCW2和OCW3,0FFE1H用于ICW2,ICW3,ICW4和OCW1。本次实验中,ICW3、OCW3不需要进行设定。

本实验只需要用一片8259A进行中断控制,中断源采用单脉冲信号,中断触发方式属于边沿触发,且8086/8088系统必须设定ICW4,因此ICW1=00010011B=13H 本系统中,设定使用中断类型8来服务IR7边沿触发产生的中断,所以ICW2=00001000B=08H(详细说明见第5页PPT)

对于单片8259A,不需要设定ICW3,而8086/8088系统需要确定ICW4。因此跳过ICW3的设定直接设定ICW4。在该实验中,我们使用全嵌套方式(最常用的也是默认的工作方式,只开放比当前中断优先级高的中断,且中断优先权的级别固定,按照IR0-IR7逐级次之。)和普通EOI方式(一般的中断结束方式,在中断程序返回前,输出中断结束命令把ISR当前优先级最高的对应位清零)操作,因此ICW4=00001001B=09H(详细说明见第6页PPT)

对于OCW,假设使用OCW1来屏蔽除IR7外其它所有中断,这样OCW1=01111111B=7FH;选用普通EOI,则OCW2=00100000=20H(详细说明见第7页PPT),流程图如下

主程序流程 开始 CLI(关中断) 调用显示子程序(显示8) 写中断向量表 调用8259A初始化子程序 1级中断 开始 CLI(关中断) 刷新缓冲区写’7’ 2级中断 开始 CLI(关中断) 刷新缓冲区写’6’ SI是否是7 N SI是否是7 N Y STI 调用显示子程序 SI置0,显示8 Y SI置0,显示8 写OCW,调用显示程序 STI 中断返回 写OCW,调用显示程序 STI 中断返回 3、实验参考电路及接线说明(8259部分)

SP插孔和8259A的IR7插孔相连(实验中可以选择任意一个或多个中断源) 连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G与位于地址线A0引出孔所在位置下方的使能控制输出端G作对应连接。8259的CS端连138译码器的Y0孔。 将8259的单元总线接口D0-D7,用8芯排线或8芯扁平线与数据总线单元D0-D7任一接口相连。

五、实验目的:

理解中断技术的基本原理

掌握8259中断控制器的基本原理 学会编写中断服务程序

掌握Dias实验箱及仿真软件的使用方法

六、实验内容:(介绍自己所选的实验内容)

编制程序,利用8259芯片的IRi作为中断源,产生多级中断,系统显示中断号,比如:IR7作为中断源则显示7。

七、实验器材(设备、元器件): Dias实验箱及仿真软件

八、实验步骤:(编辑调试的过程)

步骤1 依照电路图链接线路 步骤2:编写主程序

步骤3:8259初始化编程

步骤4:确定中断类型号和中断向量表

九、实验数据及结果分析:(实验运行结果介绍或者截图,对不同的结果进行分析)

图为实现了多级中断后,led数码管的变化情况。 源代码:

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400H H8: JMP P8259 ZXK EQU 0FFDCH ZWK EQU 0FFDDH

LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H BUF DB ?,?,?,?,?,? Port0 EQU 0FFE0H Port1 EQU 0FFE1H P8259: CLI

CALL WP ;初始化显示“P.” MOV AX,OFFSET INT8259 MOV BX,003CH MOV [BX],AX MOV BX,003EH MOV AX,0000H MOV [BX],AX

MOV AX,OFFSET INT8359 ;;;;;;;;;; MOV BX,0034H

MOV [BX],AX ;增加一个新的IR5内容 MOV BX,0036H MOV AX,0000H MOV [BX],AX CALL FOR8259

mov si,0000h STI