计算机组成原理实验九.doc

上传人:wj 文档编号:1245979 上传时间:2023-04-30 格式:DOC 页数:4 大小:66KB
下载 相关 举报
计算机组成原理实验九.doc_第1页
第1页 / 共4页
计算机组成原理实验九.doc_第2页
第2页 / 共4页
计算机组成原理实验九.doc_第3页
第3页 / 共4页
计算机组成原理实验九.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机组成原理实验九.doc

《计算机组成原理实验九.doc》由会员分享,可在线阅读,更多相关《计算机组成原理实验九.doc(4页珍藏版)》请在冰点文库上搜索。

计算机组成原理实验九.doc

上海大学计算机学院

《计算机组成原理实验》报告九

姓名:

学号:

教师:

时间:

机位:

报告成绩:

实验名称:

程序转移机制(综合实验)

一、实验目的:

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模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2