计算机组成原理 中断实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五中断实验

实验地点:格致A315

实验日期:2016年12月29日

一、实验目的

学习和掌握中断产生、响应、处理等技术;

二、实验说明及内容

说明:

1.要求中断隐指令中执行关中断功能,如果用户中断服务程序允许被中断,必须在中断服务程序中执行EI开中断命令。

2.教学机的中断系统共支持三级中断,由三个无锁按键确定从右到左依次为一、二、三级中断,对应的INT2、INT1、INT0的编码分别是01、10、11,优先级也依次升高。这决定了它们的中断向量(即中断响应后,转去执行的程序地址)为XXX4、XXX8、XXXC;可以看到,每级中断实际可用的空间只有四个字节,故这个空间一般只存放一条转移指令,而真正的用户中断服务程序则存放在转移指令所指向的地址。

3.用户需扩展中断隐指令、开中断指令、关中断指令、中断返回指令及其节拍。内容:

1.扩展中断隐指令。

2.扩展开中断指令EI、关中断指令DI、中断返回指令IRET。

3.确定中断向量表地址。中断向量表是以XXX4H为首地址的一段内存区。高12位由用户通过置中断向量用的插针(在三个无锁按键下方)确定。三级中断对应的中断向量为XXX4H、XXX8H、XXXCH。当有中断请求且被响应后,将执行存放在该中断的中断向量所指向的内存区的指令。

4.填写中断向量表。在上述的XXX4H、XXX8H、XXXCH地址写入三条JR OFFSET转移指令,OFFSET分别对应三段中断服务程序的相对地址。但在本仿真终端中输入时,用户不需要计算偏移量,直接输入要转向的绝对地址即可。

5.编写中断服务程序。中断服务程序可以放在中断向量表之后,中断服务程序可实现在程序正常运行时在计算机屏幕上显示与优先级相对应的不同字符;

6.编写主程序。可编写一死循环程序,等待中断;

三、实验过程及步骤

1.填写中断向量表。

(1)选择3级中断的中断向量为2104H、2108H、210CH。

(2)教学机中下方有一个12们波特开关,设置中断向量的高12位为:0010 0001 0000.开关向上为1,向下为0.

(3)填写中断向量表:

从2104H单元开始输入下面的程序:

(2104)JR 2120 ;跳转到中断服务程序

(2108) JR 2130

(210C) JR 2140

2.编写中断服务程序

该中断服务程序,先开中断,显示字符“BI”和对应的中断优先级“1”、“2”或“3”后,等待从键盘输入一个字符,在键盘输入一个字符后,显示该字符和字符“EI”,然后退出当前中断服务程序,返回中断断点,继续执行。

用A、E命令从2120H单元开始输入下面的程序(标有*的语句要用E命令输入)2120:PUSH R0

2121: PUSH R3

2122: MVRD R3,31

2124: JR 2150

2130: PUSH R0

2131: PUSH R3

2132: MVRD R3,32

2134: JR 2150

2140: PUSH R0

2141: PUSH R3

2142: MVRD R3,33

2144: JR 2150

*2150: EI

2151: MVRD R0,0042

2153: CALA 2200

2155: MVRD R0,0049

2157: CALA 2200

2159: MVRR R0,R3 215A: CALA 2200

215C: IN 81

215D: SHR R0

215E: SHR R0

215F: JRNC 215C 2160: IN 80

2161: MVRD R0,0045 2163 CALA 2200 2165: MVRD R0,0049 2167: CALA 2200 2169: MVRR R0,R3

216C: POP R3

216D: POP R0

*216E: IRET

2200: PUSH R0

2201: IN 81

2202: SHR R0

2203: JRNC 2201

2204: POP R0

2205: OUT 80

2206: RET

3、编写主程序

从地址2000H开始输入下列程序*2000: EI

2001: MVRD R0,0036

2005: MVRD R0,4000

2007: DEC R0

2008: JRNZ 2007

2009: JR 2001

200A: RET

4、运行主程序,等待、响应中断。

在命令行提示符状态下输入:

G 2000

屏幕将连续显示“6”.在程序执行过程中接下教学机右下方任意一个无锁按键。此时,教学机转向执行本级中断服务程序。在接收键盘一个字符后,退出当前级的中断服务程序,恢复中断现场,接着执行断点处的程序。若在此期间,又有更高一级的中断请求,则教学机转向执行该级的中断服务程序。需要注意的是,若当前中断为高级的中断,则不会响应低级中断。

5、扩展提高内容:在保证上述案例所有功能条件下,补充实现:

(1)按键盘上的任意键退出中断过程中要求显示所按键字符;

(2)将主程序的死循环修改为按空格键退出循环。

四、实验结果及分析

实验结论:通过中断可以调用子程序,同时中断可以嵌套,同时中断也有优先级,优先级较高的优先调用,优先级较低的要等到优先级比他高的中断调用以后才调用。

实验心得体会:通过本次实验懂得了什么是中断,同时也学会了中断的调用,以及中断的优先级和中断的调用次序。同时通过本次实验我懂了计算机内部线程与进程的调用。在写入程序的时候,监控程序的A命令只支持基本指令,扩展指令应用E命令将指令代码写入到相应的存储单元中;上述程序中带*者为扩展指令。在扩展实验中,应循环地址写为实验指导书上默认的“2007”导致输入的“6”不能一直循环,导致实验不能成功,最后在老师的指导下,发现错误,及时将地址改正为“2009”,获取到循环值后,最后实验成功,让我意识到做实验时,应该准确、细心的操作和输入正确的值。

教师评阅:

相关文档
最新文档