计算机组成原理实验九.doc
- 文档编号:340878
- 上传时间:2022-10-09
- 格式:DOC
- 页数:4
- 大小:66KB
计算机组成原理实验九.doc
《计算机组成原理实验九.doc》由会员分享,可在线阅读,更多相关《计算机组成原理实验九.doc(4页珍藏版)》请在冰豆网上搜索。
上海大学计算机学院
《计算机组成原理实验》报告九
姓名:
学号:
教师:
时间:
机位:
报告成绩:
实验名称:
程序转移机制(综合实验)
一、实验目的:
1.学习实现程序转移的硬件机制。
2.掌握堆栈寄存器的使用。
二、实验原理:
1.程序转移:
在任何一个程序段的内部,执行流程有顺序、分支、循环三种,而程序段之间又有相互调用(例如:
调用子程序、中断服务、子程序返回、进程调度、任务切换……),看似很复杂,其实计算机硬件用非常简单的技术解决了这些问题。
分支和循环总是可以相互替代,所以也常说程序段内的执行流程有顺序和转移两种,而程序段之间的调用也只是把执行流程转移到了另外一个程序段上。
所以,任何复杂的程序流程,在硬件实现机制上只有两种情况:
顺序执行和转移。
硬件实现这两种情况的技术很简单:
PC寄存器的自动加1功能实现程序顺序执行。
PC寄存器的打入初值功能实现程序转移。
当转移目标为本段内未执行过的指令时就形成分支,当转移目标是本段内执行过的指令时就形成循环,当转移目标为其他段的指令时就形成段间调用。
可见:
转移操作决定于“给PC赋值”,而转移类型决定于“所赋的值同当前指令的关系”。
2.实验箱系统的程序转移硬件机制:
当LDCP有效(0)时,PC被打入新值(赋初值),实现程序的转移。
这一刻DBUS上的值就是转移的目标地址(被打入PC),这个地址同转移指令所在地址的关系决定了转移类型。
若LDCP为0是附带条件的,就形成“条件转移”。
实验箱依靠“PC打入电路”实现“有进位”时转移和“计算结果为零”时转移,以及无条件转移。
I0
I1Y
I2
I3Y
I4
~
I7
A
B
CE
Z
Cy_IN
Vcc
JIR3
JIR2
16ELP
151
PC打入电路
PCOE
Vcc
CK
RST
PCOE-D
A0B0
~~
A7B7
E
DIR
245
DBUS0~7
PC电路
LDPC
P0Q0
~~
P7Q7
CLK
PE
MR
CEP
CET
A0B0
~~
A7B7
E
DIR
A0~A7
程序存储器
6116
DBUS0~7
161
245
3.子程序调用和保护断点:
子程序的调用和返回是两次转移,特殊点在于:
返回时转移的目标一定是调用时转移的出发点。
为实现这个特点,在调用转移时必须把出发地址(断点)保存起来。
这个“保存”还必须有两个要求:
1.不被一般用户所知或改变。
2.返回转移时能方便地找到它。
第一个要求决定了它不能被保存在数据存储区或程序存储区,第二个要求决定了返回指令的目标地址获得方法与其它转移指令完全不同,返回指令的目标地址一定从这个特殊的“保存区”得到,指令本身不需要再带目标地址,而其他转移指令必须自带目标地址。
再考虑到子程序调用的“可嵌套性”,这个“保护区”里的数据应该有“先入后出”特点,这与“货栈”中堆放的货物相似,故称其为“堆栈”。
堆栈的容量决定了子程序的嵌套深度。
(高级语言程序也建立“堆栈”,但是用变量或数组变量在数据存储区开辟的一个堆栈功能子区,与这里的堆栈不同。
)
各系统实现堆栈的技术各不相同。
实验箱系统用一个锁存器(574)构成堆栈寄存器(ST)由于574只能存一个字节,所以本系统的子程序调用深度只有1级,不能形成子程序嵌套。
4.ST寄存器结构和子程序调用与返回控制信号:
实验箱子程序调用和返回的结构由PC电路和ST电路组成。
调用转移时,PC的当前值(断点)经下面的245送上DBUS,进入ST保存;然后给PC打入子程序入口地址(调用指令携带的目标地址)完成转子程序。
返回转移时,返回指令开启ST的输出,并给出PC打入信号(无条件转移),于是ST保存的断点经由DBUS打入PC,实现子程序返回。
请同学独立分析下图各信号的时序。
PCOE
CK
RST
Vcc
PC电路
P0Q0
~~
P7Q7
CLK
PE
MR
CEP
CET
A0B0
~~
A7B7
E
DIR
A0~A7
程序存储器
6116
161
245
A0B0
~~
A7B7
E
DIR
245
X2-0PCOE-D
DBUS0~7
LDPC
1D1Q
~~
8D8Q
OC
CLK
574
OR
12STEN
X2-0STOE
ST电路
三、实验内容:
1.用手动方式实现子程序调用转移过程。
(假设转子时PC值为11H,子程序的入口地址为50H)
2.用手动方式实现子程序返回转移过程。
3.编程实现OUT寄存器交替显示11和55,交替频率为可以清晰辨识,且不小于每秒一次。
(实验箱的工作频率为:
114.8Hz。
)
四、实验步骤:
1.用手动方式实现子程序调用转移过程。
(假设转子时PC值为11H,子程序的入口地址为50H)
a)STEN连K7,PCOE连K6,ELP连K5,X2X1X0连K10K9K8
b)进入手动模式
c)将11H打入PC:
K7
K6
K5
K10
K9
K8
1
0
0
0
0
0
K23-K16:
00010001,按下STEP
d)将PC压入ST:
K7
K6
K5
K10
K9
K8
0
1
1
0
1
1
按下STEP
e)将50H打入PC:
K7
K6
K5
K10
K9
K8
1
0
0
0
0
0
K23-K16:
01010000,按下STEP
2.用手动方式实现子程序返回转移过程。
a)接着上一个实验做
b)将PC出栈到PC:
K7
K6
K5
K10
K9
K8
1
0
0
0
1
0
按下STEP
3.编程实现OUT寄存器交替显示11和55,交替频率为可以清晰辨识,且不小于每秒一次。
(实验箱的工作频率为:
114.8Hz。
)
a)打开computer.exe
b)输入程序如下:
start:
mova,#11h
out//OUT输出11
calls1//调用延时子程序
mova,#55h
out//OUT输出55
calls1//调用延时子程序
jmpstart//跳到程序入口循环
s1:
mova,#10h
dd:
suba,#01h
jzss//ZF标志位为0则跳出程序
jmpdd//跳到dd位置进行循环
ss:
ret//子程序返回
c)加载,运行。
五、实验现象:
1.用手动方式实现子程序调用转移过程。
(假设转子时PC值为11H,子程序的入口地址为50H)
ST中显示11,PC中显示50。
2.用手动方式实现子程序返回转移过程。
ST中显示11,PC中显示11。
3.编程实现OUT寄存器交替显示11和55,交替频率为可以清晰辨识,且不小于每秒一次。
(实验箱的工作频率为:
114.8Hz。
)
OUT上每隔一秒11和55互相出现。
六、数据记录、分析与处理:
实验结果和预期的一样。
七、实验结论:
实验现象和内存系统的基本原理的推论相一致。
八、建议:
暂无。
九、体会:
通过这次实验我对计算机内存是如何运作的有了一定的了解,同时也了解到计算机的内存访问机制的一些内容。
对计算机的硬件也有了更深一步的了解,同时对编写程序也有了了解,程序运行时,试验箱上的开关最好都置为1,而且编写程序时一定要注意要小写,因为一开始我用大写就没法进行编译。
这次的实验大家都做得很快,但实验的内容我们是不能忽视的。
本次试验的收获还是很大的。
十、思考题:
若要求11和55各显示50次后停机,应该如何修改程序?
答:
start:
mova,#5h
11:
movr1,a
mova,#11h
out
calls1
mova,#55h
out
calls1
mova,r1
suba,#01h
jzoo
jmp11
oo:
nop
jmpoo
s1:
mova,#10h
dd:
suba,#01h
jzss
jmpdd
ss:
ret
end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 实验