计算机组成原理实验十
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上海大学计算机学院
《计算机组成原理二实验》报告十
姓名:林琦学号:xxxxxxxx 教师:王雪娟
时间:周一5-6 地点:计算机大楼609 机位:33
实验名称:十中断机制和应用(综合实验)
一、实验目的
1. 学习实验箱感知中断的硬件结构和工作原理。
2. 学习使用中断系统。
3. 学习使用扩展外设。
二、实验原理
程序中断:因“随机性”原因,使一个程序暂停执行,转而执行另一个程序,以处理随机事件,然后再返回原程序继续执行的过程成为“中断”。中断同子程序调用有共同点:执行另一个程序,然后返回。所以在调用另一个程序(中断服务子程序)时必须保存断点。中断与子程序调用有一个根本区别:中断发生的时间是随机的(不可预知,但发生后应该如何处理是安排好的),而子程序调用时间是安排好的,由程序员写下的调用指令决定。中断发生的“随机性”决定了“必须用硬件感知中断请求”、“不仅要保存断点,还必须保存现场”。中断发生时间与正在运行的程序的无关性,使得整个系统在运行一个程序的同时,还能感知其它事件的发生!这是实时监控的技术基础、是多用户、多任务、多线程技术的关键点,因此是操作系统工作的前提,是计算机系统的“点睛”之笔!深刻理解中断系统是计算机专业人员用好计算机的必备知识!
只有“中断返回”指令和复位操作使EINT为低电平,这个低电平作用到IREQ 的SD端,使上面这个D触发器的Q端为1,作用到IACK的CD端使下面这个D触发器的Q端输出0。
CK驱动下,IREQ的Q端输出D端的INT状态。当有中断请求时INT为0,则一个CK后Q端输出0,但这个0能否被CPU感知却要看①号“或门”是否允许它通过。而“非取指”微指令有IREN=1,则②号“或门”输出1,于是IREQ 的Q端无论输出0或1,①号“或门”总输出1,即不允许中断请求通过。同时这个1又送入IACK的SD端;于是下触发器的SD和CD端的输入都是无效状态,这个触发器保持稳定。
三、实验内容
1. 用74LS 08芯片搭建当电键K1和K2都为1时不产生中断请求信号的外部电路。
2. 编制中断服务子程序使OUT交替显示AA、BB三次后返回源程序。源程序为实验七完成的交替显示11和55的程序。
(1). 运行上述程序,在完成AA、BB交替显示三次之前恢复K1K2都为1的状态。记录OUT显示的现象、REQ灯和ACK灯的情况以及ST寄存器的值及改变情况。
(2). 运行上述程序,在完成AA、BB交替显示时不恢复K1K2都为1的状态。记录OUT显示的现象、REQ灯和ACK灯的情况以及ST寄存器的值及改变情况。
分析上述二种显示现象的原因。
四、实验过程
实验一:
打开试验箱,切换到手动模式,按如下接线:
74LS08 :1接K02接K13接L0(显示单元)7接GND(接地)40接+5V(电源)L0为显示单元如果产生中断信号,则L0灯不亮
实验结果:
K0K1为11时L0亮
K0K1为10时L0不亮
K0K1为00时L0不亮
K0K1为01时L0不亮
实验二:
(1)
保持实验一连线
K0K1连接11
将3改接INT
左上角的白色按钮拨0101 0000
(2)
程序框写如下程序
start:
mov a,#11h
mov r2,a ;将A备份到R2,如果延时程序中产生中断,可以通过R2知道此时OUT的输出out ;OUT显示11
mov a,#10h ;延时程序不能调用子程序,因为实验箱的栈只有一层
linqi:
sub a,#1h
mov r1,a
jz su ;延时结束后跳转到输出55
jmp linqi
su: ;输出55
mov a,#55h
mov r2,a
out ;OUT显示55
mov a,#10h ;又是一个延时程序
L7:
sub a,#1h
mov r1,a
jz start ;跳转到输出11
jmp L7
;中断程序
org 50h
mov r0,#03h ;计数,输出3次AABB后返回源程序
l1:
mov a,r0
sub a,#1h ;R0-1
jz rettt ;为0跳转到返回
mov r0,a
mov a,#aah ;OUT输出AA
out
mov a,#10h ;延时
l2:
sub a,#1h
jz l3 ;跳转到输出BB
jmp l2
l3:
mov a,#bbh
out ;OUT显示BB
mov a,#10h ;延时
l4:
sub a,#1h
jz l1 ;跳转到输出AA
jmp l4
;返回
rett:
mov a,r2
out ;将OUT的值改回中断前的值
reti
end
(3)
全速运行
程序在1155中切换显示
将k0变为0后,产生中断,保持k0为0的状态,OUT循环显示AABB 3次后继续显示AABB(K0K1不恢复)
将k0变为0后,产生中断,立刻将K0重新变为1,OUT循环显示AABB 3次后返回源程序显示1155(k0k1恢复都为1的状态),
思考题:
不可以,因为实验箱的栈只有一层。在调用子程序的时候会进行压栈(记录原来程序的地址),如果在子程序中产生中断,会进行第二次压栈。冲掉原来的程序地址,使程序返回时丢失地址。
四、实验体会
了解了程序转移的硬件机制,对计算机组成原理有了进一步的认知。