目录

  • 前言
  • 实验内容
    • 用户程序
    • 中断服务程序
  • 注意事项
    • 配置中断
  • 代码实现
    • 用户程序
    • 中断服务程序
  • 结果

前言

这个实验不是很难,比上一个四子棋实验简单多了。。。

实验内容

这个实验需要实现LC-3的中断操作,实现也比较简单。我们编写用户程序持续输出,然后通过键盘触发中断,中断程序的触发,打断用户程序的输出,表示发生中断了,然后中断结束,继续输出。

用户程序

编写用户程序,交替输出字符串,达到刷屏效果,输出字符串之后使用循环来延迟一会,然后继续输出

ICS   ICS   ICS   ICS   ICS   ICSICS   ICS   ICS   ICS   ICS
ICS   ICS   ICS   ICS   ICS   ICSICS   ICS   ICS   ICS   ICS
ICS   ICS   ICS   ICS   ICS   ICSICS   ICS   ICS   ICS   ICS
ICS   ICS   ICS   ICS   ICS   ICSICS   ICS   ICS   ICS   ICS

中断服务程序

编写中断服务函数响应键盘中断,输出10次键盘键入的字符。

我们会看到主程序(用户程序)在连续输出字符串的同时,会插入我们按下的键,输出10次,然后又开始连续输出字符串

要求 不能使用 TRAP 这些伪指令,需要从 KBDR 读取数据,然后发送到DDR 寄存器显示,关于输入输出之前有提到【LC-3指令集 字符的输入与输出】

这里大概说一下,就是轮询检测DSR的最高位是否为1,是则表示可以显示,我们将KBDR的数据写入DDR,以显示数据。

使用以下代码完成一个最基本的输出程序

LOOP LDI R0 DSRBRzp LOOP ; 轮询等待DSR最高位置1表示可以显示了DSR        .FILL 0xFE04
DDR     .FILL 0xFE06

注意事项

循环输出字符串需要在中间加入循环延时,循环25000次即可

配置中断

  1. 分配栈空间:
    需要将 R6寄存器指向一块空的地方,表示系统栈底,同x86指令集一样,指针减少表示开栈,指针增加表示退栈。所以要注意空间的分配。在实验中,分配0x3000给R6即可(系统中断栈用R6表示栈指针)
  2. 使能中断向量表:
    我们需要在内存 0x0180处,填入我们中断服务程序的起始地址,这里填写0x2000作为起始地址。
  3. 使能中断:
    将KBSR的第14位置1即可使能中断

代码实现

用户程序


注意,我们配置中断的三个操作,即R6=0x3000,内存0x0180=0x2000,和KBSR第14位置1,都要在用户程序主循环之前开始

.ORIG x3000LD R0 itptrLD R1 itfuncSTR R1 R0 #0   ; M[0x180] = 0x2000LD R0 kbsrLD R1 x_4000STR R1 R0 #0  ; 使能KBSR中断位LD R6 stptr      ; 栈指针赋值mloop    LEA R0 str1     ; 打印字符串1TRAP x22AND R0 R0 #0ADD R0 R0 #13   ; 回车TRAP x21AND R0 R0 #0LD R0 lpcnt
wait1   ADD R0 R0 #-1BRp wait1LEA R0 str2       ; 打印字符串2TRAP x22AND R0 R0 #0ADD R0 R0 #13   ; 回车TRAP x21AND R0 R0 #0LD R0 lpcnt
wait2   ADD R0 R0 #-1BRp wait2BRnzp mloopitptr  .FILL 0x180
itfunc  .FILL 0x2000
stptr   .FILL 0x3000
lpcnt   .FILL #25000
str1    .STRINGZ "ICS   ICS   ICS   ICS   ICS   ICS"
str2    .STRINGZ "   ICS   ICS   ICS   ICS   ICS   "
kbsr    .FILL 0xfe00
x_4000  .FILL x4000.END

中断服务程序


注意:从中断中返回要调用 RTI 而不是 RET,RTI包含了弹出系统栈中系统自动压入的PC置等操作。除此之外还有保存和恢复寄存器

.ORIG 0x2000ST R0 saveR0 ; 保存寄存器ST R1 saveR1ST R2 saveR2ST R3 saveR3LD R1 KBDRLDR R0 R1 #0   ; 输入加载到R0AND R1 R1 #0ADD R1 R1 #10  ; 输出10次itloop   LD R2 DSR       ; 等待DSR就绪
itwait  LDR R3 R2 #0    ; DSR加载到R3BRzp itwaitLD R2 DDRSTR R0 R2 #0  ; R0存到DDR以输出ADD R1 R1 #-1BRp itloopLD R0 saveR0 ; 恢复寄存器LD R1 saveR1LD R2 saveR2 LD R3 saveR3 RTI                ; 注意不是RETKBSR   .FILL 0xfe00
KBDR    .FILL 0xfe02
DSR     .FILL 0xfe04
DDR     .FILL 0xfe06
saveR0  .FILL 0x0000
saveR1  .FILL 0x0000
saveR2  .FILL 0x0000
saveR3  .FILL 0x0000
x_7fff  .FILL 0x7fff.END

结果

注意要将两个.obj文件都载入LC-3模拟器,然后从0x3000处开始运行

按下a键,实现中断输出10次,然后继续用户程序输出字符串

LC-3 中断实验 (深大计系1实验5)相关推荐

  1. 缓冲区溢出攻击实验(深大计系2实验4)三题思路+答案

    额 今天做的事缓冲区 溢 出 攻 击 实验 思路就是有个函数会一直读字符串,可是对字符串长度没有限制,所以会造成缓冲区的溢出,导致堆栈中的其他值被我们修改,达到攻击的目的 实验资源 链接: https ...

  2. 深大数据库系统实验3——DATABASE SOFTWARE练习实验

    目录 一.前言 二.我的实验小变动 三.实验工程 1.板块介绍 2.实验代码 (1)__init__.py (2)forms.py (3)index2.py (4)qa.py (5)user.py ( ...

  3. html颜色深黑,高冷发色发型图片 深黑系暗灰色很适合

    不是每个人都喜欢颜色亮丽,看起来颜色是非常的活泼可爱的发色,也有很多人是非常的喜欢,颜色高冷的,这样整个人看起来都是比较高冷的,高冷发色都有哪些好看的发型呢? 灰系色调还能带出大人感的成熟韵味,喜欢高 ...

  4. 辽工大计算机网络实验报告,辽工大计算机硬件实验报告.doc

    辽宁工程技术大学上机实验报告 成绩 优 课程名称 计算机硬件基础 实验题目 综合程序设计(三) 院系 软件学院 专业 网络工程 班级 09-2 姓名 母涵予 学号 0920020214 实验日期 10 ...

  5. java实验2总结心得,java实验的心得体会

    java实验的心得体会 java实验心得体会篇一:java实验总结 1. 设计一个Person类,包含:姓名,年龄,性别.要求:该类至多只能创建一男.一女两个对象! 2. 设计一个测试类Test,创建 ...

  6. 单片微型计算机原理及应用实验报告,小学期单片机实验报告_相关文章专题_写写帮文库...

    时间:2019-05-13 01:16:21 作者:admin 北京邮电大学信息与通信工程学院 小学期AVR单片机实验报告 实验题目: 基于ATmega16L单片机的电子琴设计 学生姓名:学渣 班 级 ...

  7. 计算机组成原理实验运动码表,计算机组成原理实验【参考】.doc

    目 录 第1篇 概 述1 第2篇 实验项目4 实验1 运算器算术逻辑运算4 实验2 运算器进位控制实验7 实验3 运算器移位控制实验8 实验4 存储器读/写实验10 实验5 总线数据传送控制实验12 ...

  8. 计算机控制实验ppt模板,微型计算机控制技术实验指导书.doc

    文档介绍: 微型计算机控制技术实验指导书电子工程系黑龙江工商职业技术学院实验一A/D转换实验一.实验要求利用实验板上的ADC0809做A/D转换器,利用实验板上的电位器W1提供模拟量输入.编制程序,将 ...

  9. 微型计算机原理实验报告系统认识,微机原理 实验报告——显示程序实验与8259应用编程实验...

    微机原理 实验报告--显示程序实验与8259应用编程实验 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.9 积分 北京信息科技大学自动化学院实 ...

最新文章

  1. IDEA背景颜色设置护眼色
  2. Android实现下拉头部缩放功能
  3. [汇编语言]实验:更灵活的寻址方式 -应用si和di
  4. 了解自定义De / Serializer:JSON绑定概述系列
  5. 2018 年度人工智能热门事件大盘点:「悲喜交加」
  6. mysql-5.7在CentOS-7下的rpm安装
  7. http的“无连接”指的是_头条一面:HTTP协议无状态中的 quot;状态quot; 到底指的是什么?...
  8. 力扣——在排序数组中查找元素的第一个和最后一个位置
  9. php ext_skel,用ext_skel为php开发扩展|待更
  10. PDF文件编辑方法:PDF怎么插入图片背景
  11. JDK11竟然不支持字体斜体
  12. Excel学习笔记:P1-Excel入门
  13. 中国矿业大学计算机保研去向,喜报!中国矿业大学1065人被保研到北大、清华等校,名单已公布!...
  14. 【Wechat】微信支付APIV3(商户) 接入批量转账到零钱
  15. Skywalking全链路追踪使用说明
  16. 一个免费的在线录屏网站
  17. 程序员在外包公司工作怎么样?
  18. 2. web前端开发分享-css,js进阶篇
  19. 计算机访学面试,国家公派访问学者面试经典问题总结
  20. C语言 计算签到所得积分

热门文章

  1. web前端期末大作业 HTML+CSS+JavaScript仿唯品会购物商城网页设计实例 企业网站制作
  2. 小虎队《爱》 —— 米扑科技公司司歌
  3. window10家庭版安装docker记录
  4. 金笛全新技术架构,鲲鹏击浪从兹始
  5. 这些AI开源项目可以让你创作出卢浮宫级别的艺术品!
  6. 前台HTML现在预览附件
  7. Python 基础 - Day 1 Assignment - Three tier menu 三级菜单
  8. 再不奋斗,我们就老了!
  9. matlab求解非线性0-1规划案例
  10. 手机拍照实用技巧,实用的拍照方法和功能