热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

计算机系统_计算机系统实验五中断实验

篇首语:本文由编程笔记#小编为大家整理,主要介绍了计算机系统实验五中断实验相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了计算机系统实验五 中断实验相关的知识,希望对你有一定的参考价值。








LC3 中断实验


  • 实验目的
  • 实验内容
  • 实验步骤
    • 实现用户程序(模块A部分):
    • 实现键盘中断服务程序(模块B部分):
    • 测试程序

  • 实验结论:



实验目的

1)学会分析和理解给定的编程问题;
2)掌握中断驱动的基本原理;
3)掌握键盘数据寄存器(KBDR)及键盘状态寄存器(KBSR)工作基本原理;
4)掌握输出数据寄存器(DDR)及输出状态寄存器(DSR)工作基本原理;
5)利用LC-3设计并编写用户程序及中断程序。


实验内容

  计算机领域中,中断就是由软硬件向处理器发送信号,处理器收到并立即处理该信号表示事件的过程。中断会暂停当前处理器正在执行的流程,然后将处理器切换到高优先级。处理器会暂存当前任务的状态,然后执行一小段称为中断处理程序(ISR)的代码来处理该事件。中断是暂时的,中断处理程序执行结束后,处理器会回到之前任务暂存的状态继续执行,中断分为两种类型:硬件中断和软件中断。
  本实验的目的是展示如何让输入输出通过执行中断处理程序的方式来暂停和恢复一个正在运行的程序,恢复后的程序就像中间什么都没有发生过,本实验使用键盘作为输入来中断正在运行的程序。


实验步骤

实现用户程序(模块A部分):

设计思路:
  要实现从键盘输入一个字符后执行中断程序,就需要将中断程序的起始地址写入键盘的中断矢量表中,且要将KBSR的中断使能位设置为1。
  具体实现如下(每一条代码的意义在注释中已经写明,此处不做赘述):
在这里插入图片描述

在这里插入图片描述


实现键盘中断服务程序(模块B部分):

设计思路:
  要实现中断后的返回,就需要将用户程序中使用的寄存器数据先压入栈中,在执行完中断程序后再将压入栈中的寄存器的值返回。
  从键盘输入一个字符,先判断该字符是否为回车,如果是回车的话,从中断程序返回。若输入的字符不是回车,就执行将该字符输出10遍,再输入一个字符,将其输出10遍,直到输入回车程序返回。
  具体实现如下(每一条代码的意义在注释中已经写明,此处不做赘述):
在这里插入图片描述
在这里插入图片描述


测试程序


  1. 未在键盘上输入时
    在这里插入图片描述

  2. 输入字符’5’后,程序暂停

  3. 在键盘上输入回车后,在输出10次字符’5’后继续运行用户程序
    在这里插入图片描述


实验结论:

  通过本次实验,对LC-3的中断有了更进一步的认识。以前对中断前的准备工作不是很了解,但本次实验通过自己模拟硬件做中断前的准备的工作,也加深了自己对中断前的准备工作的了解(具体包括将寄存器的值压入栈,修改KBSR的中断使能位等)。自己将中断承程序的起始地址写入键盘中断的矢量表,也加强了自己对矢量表的理解,不光提升了对中断服务程序的理解,还加深了对trap服务子程序的了解。
  也实现了不使用trap服务子程序,自己模拟I/O设备的输入和输出。






推荐阅读
author-avatar
fdasfwgafaweg
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有