上海大学计算机学院 计算机组成原理实验报告
【最新资料,WORD文档,可编辑修改】 上海大学 计算机学院
《计算机组成原理实验》报告十
实验名称:中断机制和应用(综合实验) 一、 实验目的
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与主程序显示同步。分析上述二种显示现象的原因。
四、实验步骤
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位二进制,仅能实现一级中断,所以不能嵌套一般的子程序。
(完整版)上海大学计算机学院计算机组成原理实验报告p



