计算机组成大型实验报告材料机器指令设计实验文档格式.docx

上传人:b****6 文档编号:16301685 上传时间:2022-11-22 格式:DOCX 页数:19 大小:152.16KB
下载 相关 举报
计算机组成大型实验报告材料机器指令设计实验文档格式.docx_第1页
第1页 / 共19页
计算机组成大型实验报告材料机器指令设计实验文档格式.docx_第2页
第2页 / 共19页
计算机组成大型实验报告材料机器指令设计实验文档格式.docx_第3页
第3页 / 共19页
计算机组成大型实验报告材料机器指令设计实验文档格式.docx_第4页
第4页 / 共19页
计算机组成大型实验报告材料机器指令设计实验文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

计算机组成大型实验报告材料机器指令设计实验文档格式.docx

《计算机组成大型实验报告材料机器指令设计实验文档格式.docx》由会员分享,可在线阅读,更多相关《计算机组成大型实验报告材料机器指令设计实验文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

计算机组成大型实验报告材料机器指令设计实验文档格式.docx

STA[ADDR],R0

110010DR

输出

OUTPORTAR,[ADDR]

110011DR

转移

JMPADDR

110100XX

注:

该模型机的输入输出设备端口号〔PORTAR〕只有一个,为00H。

DR指示4个通用存放器中的一个。

JMP为跳转地址为直接地址,即将ADDR赋值给PC。

当模型机的一条指令执行时,由指令译码器确定一个与此指令对应的微程序入口地址,经地址缓冲器送微控制存储器的地址通道,然后从微控制存储器相应单元中读出24位微指令代码,其中高17位送微指令控制代码段存放器,由微指令译码器产生控制信号,低7位送微指令地址代码段存放器〔7位〕,指出微控制存储器中下一微指令的地址。

微指令代码共分7段:

(1)BTO:

数据从总线送部件控制段,3位。

(2)OTB:

数据从部件送总线控制端,3位。

(3)FUNC:

地址转移、读写功能控制端,3位。

(4)FS:

方式功能控制段:

1位。

(5)S3,S2,S1,S0,M,Ci:

模式功能控制段,6位。

(6)N:

备分段,1位。

(7)NEXT:

下一条微指令地址段,7位。

表2-微指令字段编码表

编码+译码

BTO

OTB

FS=1

FS=0

FUNC

000

PC+1(T4)

001

B-DA1(T4)

ALU-B#

J

(1)

M-W#(T3)

010

B-DA2(T4)

299-B#

J

(2)

M-R#(T2)

011

B-IR(T3)

SR-B#

J(3)

I/O-W#(T3)

100

B-DR(T4)

DR-B#

J(4)

I/O-R#(T2)

101

B-SP(T4)

SI-B#

J(5)

INT-R#(T2)

110

B-AR(T3)

SP-B#

Cy#

INT-E#(T3)

111

B-PC#

PC-B#

CyN#

表3-散转微地址形成规如此表

散转条件

散装微地址形成规如此

j

(1)条件

指令码I7I6=11时,

散转入口地址=微代码下址〔OR〕0,1,0,I5,I4,I3,I2

指令码I7I6!

=11时,

散转入口地址=微代码下址〔OR〕0,0,0,I7,I6,I5,I4

j

(2)条件

散转入口地址=微代码下址〔OR〕0,0,0,0,0,I3,I2

j(3)条件

散转入口地址=微代码下址〔OR〕0,0,0,0,0,KB,KA

j(4)条件

散转入口地址=微代码下址〔OR〕0,0,0,0,0,FC,FZ

j(5)条件

散转入口地址=微代码下址〔OR〕0,INT,0,0,0,0,0

表格中FC为进位标志,FZ为零标志。

本实验只要到J

(1),J(3),J(4)四条散转条件。

表4-简单模型计算机机器指令表

指令功能

IN

ADD

STA

OUT

JMP

指令符号

数据输入

数据传输

跳转

微程序入口地址

30H

31H

32H

33H

34H

〔2〕微程序流程图

根据实验八的机器指令和控制台指令可以画出图2所示的流程图。

图2-模型计算机指令执行流程图

三、四条指令的微程序代码设计

根据实验要求的汇编程序,发现并不需要INCDR这条指令,所以也没有对其进展微代码的设计。

另外显然PC->

AR,PC+1->

PC;

01H->

02H

RAM->

IR;

02H->

03H

J

(1)散转;

03H->

(10H)

三条微指令动作为公操作。

因此我们只需要考虑除此之外的其他微指令动作。

下面对4条指令,逐条进展解释分析。

1.无借位减:

SUBDR,[ADDR]

a.指令功能:

(SR)-(DR)->

DR,影响Cy,Zi标志位。

当(SR)<

(DR)时,Cy=1,当(SR)=DR时,Zi=1。

b.指令格式:

c.指令流程:

PC->

PC;

IR;

J

(1)散转;

35H->

12H

AR;

12H->

13H

DA1;

13H->

14H

DR->

DA2;

14H->

15H

DA1-DA2->

DR;

15H->

01H

d.微程序代码:

微地址

微代码

FS

S3

S2

S1

S0

M

Ci

N

下址

微指令注释

35H

DC4012

1

0010010

AR,PC=PC+1

C10013

0010011

AR

210014

0010100

DA1

500015

0010101

DA2

87D801

0000001

DR

2.带进位加:

ADDCDR,[ADDR]

a.指令功能:

(SR)+(DR)+Cy->

当(SR)+(DR)+Cy>

255时,Cy=1,当(SR)+(DR)+Cy=256时,Zi=1。

.这条指令可实现多字节的加法操作。

b.指令格式:

PC;

IR;

J

(1)散转;

36H->

18H

AR;

18H->

19H

DA1;

19H->

1AH

DA2;

1AH->

1BH

DA1+DA2+Cy->

1BH->

d.微程序代码:

36H

DC4018

0011000

C10019

0011001

21001A

0011010

50001B

0011011

DR,Cy

3.C条件转移:

JMPC[ADDR]

假如Cy=1,如此[ADDR]->

PC,否如此顺序执行下条指令。

影响Cy,Zi标志位。

b.指令格式:

37H->

41H

41H->

42H

42H->

43H

J4#条件散转转移;

43H->

(44H)

假如Cy=0;

44H->

假如Cy=1;

46HDA1->

46H->

37H

DC4041

1000001

C10042

1000010

210043

1000011

024044

1000100

44H

000001

NULL

45H

000000

0000000

46H

E44101

DA1->

PC,PC+1有效

值得注意的是,此条“C条件转移〞指令,跳转的是ADDR中的内容,而非ADDR,这一点也JMP不同。

而将JMPC[ADDR],改成JMPCADDR也相当得容易。

只要将微程序代码中微地址为37H的微代码改成DC4042即可。

也就是跳过RAM->

AR不执行。

4.存储器内容送通用存放器LDADR,[ADDR]

〔ADDR〕->

DR,不影响Cy,Zi标志位。

39H->

3CH

3CH->

3DH

3DH->

3EH

DR;

3EH->

39H

DC403C

0111100

C1003D

0111101

21003E

0111110

843C01

根据这四条指令微代码可以得到如图3所示流程图。

图3-新增指令逻辑结构图

四、汇编程序设计

1.程序功能

程序功能是对输入开关上的数据和存储器某一单元中的数据进展加法操作,结果累计在存储器某个单元中,当累计值大于256时转而进展减法操作,即把此存储器单元中的值减去输入开关上的数据,结果送同一存储器单元中,当操作结果小于0时再转而进展加法操作,使输出显示顶上出现数据连续加,然后连续减,减到0时候连续加。

这样连续加、连续减直到拨动

完毕程序运行为止。

2.程序流程图

图4-汇编语言程序流程图

3.汇编程序代码:

端口号〔POATAR〕只有一个,为00H。

主存储器单元地址为30H存放数据,用主存储器单元31H,32H来存放跳转地址。

“汇编代码1〞表。

每次存储器值更新,都通过OUT指令进展存储器内容送入输出设备〔00H〕显示。

另外,由于简单模型机机器指令并没有立即数传输给存放器或存储器,因此存储器清零操作需要一定的技巧。

我们采用的方法是先把存储器内容传给存放器,然后存储器内容减去存放器内容,值送入存放器,该值为0,然后把该值通过存放器送入存储器。

详细的汇编程序代码如下表4所示。

表4-汇编程序代码表

主存储器地址

指令码

汇编代码

说明

00H

E4H

LADR0,[30H]

存储器清零

D4H

SUBR0,[30H]

04H

C8H

STA[30H],R0

05H

06H

CCH

OUT[00H],[30H]

07H

08H

09H

COH

INR0,[00H]

存储器内容=存储器内容+输入值

0AH

0BH

C4H

ADDR0,[30H]

0CH

0DH

C8H

STA[30H],R0

0EH

0FH

10H

11H

DCH

JMPC[32H]

存储器内容>

=265?

D0H

JMP09H

16H

C0H

存储器内容=存储器内容-输入值

17H

1CH

1DH

1EH

1FH

JMPC[31H]

存储器内容<

0?

20H

21H

JMP16H

22H

[ADDR]

9

16

五、实验步骤

通过Yy-z02模型机软件,省去了微代码与机器指令汇编程序的手动写入与检查,大大提高了实验效率。

因为这里不再对微代码与机器指令汇编程序的装入操作进展说明。

而实验连线也相对简单,故也不再进展罗列。

实验步骤如下:

(1)根据《计算机组成原理实验指导》〔主编X建中,严义〕P76的说明,对YY-Z02实验仪进展连线。

(2)启动Yy-z02模型机软件。

为了保证防止由于连线错误而导致运行结果不对,因此先将工作方式选为“仿真模式〞。

该模式下装入的速度也比拟快。

(3)将微程序代码与汇编代码分别写入控存窗口与主存窗口的表格中。

如图5,6所示。

“微代码表〞与“汇编代码2〞。

图5-微代码的局部数据-控存窗口

图6-汇编代码的数据-主存窗口

(4)点击“下装程序与微程序按钮

(5)设定输入值

,在input中写入值,并回车完毕。

(6)运行程序。

按连续运行按钮

(7)改变输入值,观察输出值变化。

六、实验结果记录

对同一程序进展了屡次实验,表5记录了其中的4组。

可以发现当数据从0增大至超过256后,截取数的高位,剩下低8位,相对于加上给数后又减去256。

进位符Cy=1,开始做减操作,显然该数减去输入数值必定小于0,相对于下溢,相当与减去该数后又加上256。

由于加的数与减的数是一样的,因此此时,输出结果呈现交替变化,比如输入值为54H时,最后输出结果在FDH与52H交替。

表5-实验结果记录

实验结果

输入值

54H

61H

第1次输出

86H

72H

第2次输出

A8H

C9H

ABH

C2H

第3次输出

FDH

23H

第4次输出

52H

1D

第5次输出

第6次输出

第7次输出

第8次输出

七、实验过程中出现的问题与解决方案

〔1〕微代码数据量大,当发现Yy-z02模型机软件内置了局部微代码后,用了局部数据。

但由于前后微代码的时常更改,导致局部微代码输入错误。

这也直接导致程序输出结果的不正确。

更大的问题是很难查错,不知道是微代码的指令逻辑错了,还是下一地址错了,还是汇编程序有问题了。

我们的解决方案是找到已完成同学的正确汇编代码对微代码进展查错。

当确定微代码确实有错后,我们再次对微代码进展逐条检查(由于模型机软件界面不是很友好,操作起来也很不方便,因此我们的原始微代码是写在excel表格中的)。

通过Yy-z02模型机软件中伪代码确认指令逻辑是否正确,通过检查下一地址确定程序转移的正确性。

通过屡次的检查,最终程序输出结果正确。

〔2〕微代码正确了,然后对汇编程序进展改良优化。

刚开始,我们连加动作指令的是ADDC,即带进位加,导致每次从连减操作转化为连加操作后,都会多加一个1,这也不难理解,减法操作溢出使得Cy=1。

因此,我们改用ADD指令。

显然ADDC是为了实现多字节的加法操作而准备的,对于连加并不适用。

〔3〕对微指令理解不深。

刚开始认识JMPC[ADDR]跳转的地址是ADDR中的内容,这本来是正确的,但由于不够自信,被告知是直接ADDR地址跳转。

导致输出结果依然不正确。

然后对微指令再此进展研读,发现JMPC[ADDR指令确实是跳转ADDR所指主存单元中存放的内容。

最好得到正确结果。

另外,我们通过修改微代码的局部数据,使得“C条件跳转〞实现了JMPCADDR的功能,即直接地址跳转。

同时我们也写出了与此相对的汇编程序,详见附近excel表格的汇编代码1。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1