上海大学 计算机学院
《计算机组成原理实验》报告十
实验名称:中断机制和应用(综合实验)
一、 实验目的
1. 学习实验箱感知中断的硬件结构和工作原理。
2. 学习使用中断系统。
3. 学习使用扩展外设。
二、实验原理
1. 程序中断:因“随机性”原因,使一个程序暂停执行,转而执行另一个程序,以处理随机事件,然后
再返回原程序继续执行的过程成为“中断”。
中断发生的时间是随机的(不可预知,但发生后应该如何处理是安排好的),中断发生的“随机性”决
定了“必须用硬件感知中断请求”、“不仅要保存断点,还必须保存现场”。
2. 实验箱的中断感知硬件:当执行取指微指令时,IREN=0,于是②号或门输出0,这时①号“或门”对
IREQ的Q端开放,若有中断请求就会在这时被CPU感知。所以无论中断请求在何时提出,都只能在取指
阶段被感知!当 ①号“或门”输出0时中断被感知,同时这个低电平使IACK的SD有效,迫使其Q端输
出1,ACK灯亮,并使②号“或门”对IREN关闭并输出1;这个1又使①号“或门”对中断请求关闭并输
出1,这个1又返回IACK的SD端,使IACK保持Q=1的状态。所以系统进入中断服务子
程序后,ACK灯保持亮,且不响应新的中断请求(仅一级中断)。
3. ICOE向下经“与门”控制PC+1信号,
ICOE的另一个作用是通过③号“或门”控制EM中指令
的输出,保证在输出中断指令B8H时,EM不输出。
4.
5.试验箱外扩系统
6.74LS08结构俯视图
三、实验内容
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寄存器的值及改变情况。R2记录主程序延迟时间,R1与主程序显示同
步。分析上述二种显示现象的原因。
四、实验步骤
上海大学计算机学院
计算机组成原理实验报告
【最新资料,WORD文档,可编辑修改】
1. 用74LS 08芯片搭建当电键K1和K2都为1时不产生中断请求信号的外部电路。
打开电源,进入手动模式。将试验箱的外扩箱的1和K1相连,2和K2相连,7接地,40接电源vcc。开
关都为1时不产生中断请求信号。
按一下l 就会产生中断。
2.①启动桌面上COMPUTE.EXE软件。
② 连接通信口:COM1/COM2
③ 点击源程序编写程序:
sta:
mov a,#11h
mov r1,a
out
mov a,#10h
loop1:
sub a,#1h
mov r2,a
jz loop2
jmp loop1
loop2:
mov a,#55h
mov r1,a
out
mov a,#10h
loop3:
sub a,#1h
mov r2,a
jz sta
jmp loop3
org 50h
mov r0,#04h
loop4:
mov a,r0
sub a,#1h
mov r0,a
jz exit
mov r0,a
mov a,#aah
out
mov a,#5h
loop5:
sub a,#1h
jz loop6
jmp loop5
loop6:
mov a,#bbh
out
mov a,#5h
loop7:
sub a,#1h
jz loop4
jmp loop7
exit:
mov a,r1
out
mov a,r2
add a,#0h
reti
end
④ 保存,文件名后需加.asm后缀。
⑤打开试验箱, 编译下载。
⑥全速运行
按下中断键,在aa与bb交替显示3次之前松开中断键,记录OUT显示,REQ灯ACK灯的情况,及
ST寄存器的值及改变情况。
运行上述程序,在完成aa与bb交替显示时不松开中断键,记录OUT显示,REQ灯ACK灯的情况,
及ST寄存器的值及改变情况。
五、实验现象
刚开始运行11与55交替出现,R1与OUT显示同步,R2记录的是主程序的延迟时间,执行中断前,
ACK和REQ灯均不亮,ST寄存器为00,OUT显示11和55,按一下中断键松开后 ,就会产生中断,调用
中断程序,aa与bb交替出现,ACK和REQ灯均亮,R0记录aa与bb交替出现的次数,由3依次减1,依
次出现3、2、1,然后R2保持中断时的主程序的延迟时间,R1保持中断时OUT显示的值,然后中断结束
后,ACK和REQ灯又不亮,从R2记录的延迟时间开始,OUT显示R1记录的主程序的值,依次交替出现11
和55.
刚开始运行11与55交替出现,R1与OUT显示同步,R2记录的是主程序的延迟时间,执行中断前,
ACK和REQ灯均不亮,ST寄存器为00,OUT显示11和55。按下中断键后不放开,执行中断时,ACK和REQ
亮起,OUT交替显示aa和bb,直到中断程序依次交替显示3次aa与bb后,再放开,那么OUT会一直交
替显示aa与bb,ACK和REQ灯暗掉后又马上亮,寄存器R1显示11,寄存器R2显示06.
六、实验结论
在完成aa与bb交替显示3次之前,松开中断键,这样产生中断后,中断返回,进行原来的程序执
行。
在完成aa,bb交替显示3次时,不松开中断键,这样就一直进行中断,无法返回原来的程序执行。
七、建议
八、体会
通过这次试验,我了解了中断机制,知道了中断的原理,知道了如何进行程序中断和中断程序的返回
和如何对断点进行保存,知道了中断机制的重要性。
在实验过程中,编写那个延迟和中断子程序的时候,出现了很多波折,R2记录主程序的延迟时间,这
个老是显示不对,然后中断返回时不是从中断断点开始接着执行的,后来老师提示了一下,修改了一下
程序,终于成功了。另外呢,在做实验的时候,一定要有耐心,要有做对的信心,和失败的不灰心,才
有可能最终得到你想要的结果。
九、思考题
实验箱的中断服务程序中可以嵌套一般的子程序吗?
答:不能,因为实验箱的ST寄存器只能存放8位二进制,仅能实现一级中断,所以不能嵌套一般的子
程序。