logo资料库

微机原理-汇编语言8255方式1中断输入实验 -实验报告.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
微 机 原 理 与 接 口 技 术 实 验 报 告 ______________________________________________________________________________ 班级:通信工程 姓名: 班级内序号:10 学号: 实验日期:2019/12/26 实验顺序: 4 实验名称:8255 方式 1 中断输入实验 学院:计算机与通信工程学院 专业:通信工程 指导教师:张旭 ______________________________________________________________________________ 一.实验目的 1.掌握 8255 工作方式1时的使用及编程。 2.进一步掌握中断处理程序的编写。 __________________________________________________________________________ 二.实验环境 TPC-ZK-II ______________________________________________________________________________ 三.实验原理 简单描述: 8255 通过方式 1 输入,把 A 设置为输入,A0-A7 解二级制开关,C 口 PC4 连接到外部正 脉冲,当正脉冲输入时会引发中断信号,PC5 是应该信号,当输入缓冲器满时,会产生高电 平有效的 IBF 信号,PC3 产生 INTR 信号,连接 8259A 从片的 IR2,并将主片的 IR2 与从片级 联,所以主片和从片的 IR2 都需要开中断。当有正脉冲输入时,8255 产生有效的 INTR 信号, INTR 通过 8259A 向 CPU 提出中断请求,使 CPU 从 8255 的端口读取数据。 使用 DOS 的 25H 功能,并利用中断类型码 72H 将中断子程序入口地址存入中断向量表, 并对 8259A 主片和从片进行初始化,设置 IR2 开中断。对 8255 进行初始化,设置 A 口的输 入方式,因中断信号不会使内部触发器 INTE 置 1,所以需要利用 C 口的位操作将 INTE 置 1。 中断服务子程序功能为显示字符,需要调用 DOS 的 2 号功能,并且主片和从片都要设置 EOI 命令。 通过拨码开关设置要显示字符的 ASCll 码,然后按下正脉冲,PC3 产生有效的 INTR 信 号,INTR 通过 8259A 向 CPU 产生中断请求,CPU 收到中断请求产生中断响应,根据中断向量 表的中断程序入口地址跳转到中断子程序去执行,本实验中执行并读取从 A 口传来的数据并 显示在屏幕上。
34 33 32 31 30 29 28 27 5 36 9 8 35 6 8255 17 PC3 PC4 13 D0 D1 D2 D3 D4 D5 D6 D7 RD WR A0 A1 RESET CS 4 3 2 1 40 39 38 37 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 D0 D1 D2 D3 D4 D5 D6 D7 IOR IOW A0 A1 RESET 288H SIRQx K0 K1 K2 K3 K4 K5 K6 K7 电 平 输 入 开关 开 始 从 A口 输 入 数 据 寄 存 器 初 始 化 设 置 中 断 矢 量 (IRQ10) 并 开 放 中 断 (IRQ10) 设 置 8255工 作 方 式 1 A口 输 入 将 8255的 PC4置 位 设 置 中 断 次 数 计 数 器 循 环 等 待 在 屏 幕 上 显 示 相 应 的 ASCII码 发 中 断 结 束 命 令 中 断 次 数 计 数 器 减 1 计 数 器 =0? N 中 断 返 回 Y 关 闭 中 断 (IRQ10) 开 中 断 结 束 _____________________________________________________________________________ 四.实验步骤及结果分析 1、代码及解释: data segment info db 'Master IR3$' data ends code segment assume cs:code,ds:data start: mov ax,seg int10 ;取中断子程序的段地址到 ax 中 mov ds,ax ;将段的偏移地址送入 ds 用于访问内存 mov dx,offset int10 ;取中断子程序的便宜地址到 dx 中
mov al,72h ;传送中断程序所在的中断地址到中断向量码的地址 mov ah,25h ;调用 dos 的 25 号功能来写入中断向量码 int 21h in al,21h ;查看中断屏蔽寄存器 IMR 地址 21H A0 = 1 and al,11111011b ;设置 IR3 的中断被允许 out 21h,al in al,0a1h ;从 IMR 中读入 ICW1 控制字 and al,11111011b ;使得 IR2 开中断 out 0a1h,al mov dx,28bh ;向 8255 的控制寄存器写入控制字 A0=1A1=1 mov al,0b8h ;设置 8255 工作在方式 1,A 口输入,c 口输出 out dx,al mov al,09h ;设置 8255 的 PC4 置 1 使得 INTEa=1 开中断,以便外设送入数据后发出 STB=1 时向 CPU 发出中断响应 out dx,al here:jmp here ;不想将中断的程序占用的内存被释放,可以使用中断驻留的方式来使子 程序不被释放 int10 proc push ax ;保护中断子程序的内容 push dx mov dx,288h ;CPU 向 8255 读入数据 in al,dx mov dl,al mov ah,2 int 21h mov al,00100000b ;中断服务子程序结束使用 EOI 方式将 IRR 寄存器对应的中断置零 out 0a0h,al ;设置从片的 EOI 命令方式来结束中断 mov al,00100000b out 20h,al pop dx pop ax iret ; pop ip pop cs popf int10 endp code ends end start
2、运行结果如图: 执行成果: 五.实验心得疑问建议 本次实验是 8255 通过方式 1 进行中断输入实验,在实验过程中,我掌握了中断处理程 序的编写方法,进一步了解了 8255 工作方式1时的使用及编程方法。此外在本次实验过程 中又复习到了上节课所学习到的主片 8259 与从片 8259 级联的工作方式,对系统的中断有了 更进一步的理解。在实验箱操作的过程中,通过查阅 ASCLL 码表进行开关的设置,让我知道 了如何将 ASCLL 与此程序相配合,进一步锻炼了自己的编程思维。 这是本学期的最后一次微机原理实验课,通过这四次课的学习让我明白了很多关于微机 原理编程的知识,也对书本的内容有了更深层次的理解,我认为自己还需要多看汇编语言程 序,多适应汇编语言逻辑,争取更好地掌握编程方法。 感谢老师耐心细致的讲解! 疑问:无 建议:无
分享到:
收藏