计算机组成原理课程设计61112.docx

上传人:b****8 文档编号:10868615 上传时间:2023-02-23 格式:DOCX 页数:17 大小:331.27KB
下载 相关 举报
计算机组成原理课程设计61112.docx_第1页
第1页 / 共17页
计算机组成原理课程设计61112.docx_第2页
第2页 / 共17页
计算机组成原理课程设计61112.docx_第3页
第3页 / 共17页
计算机组成原理课程设计61112.docx_第4页
第4页 / 共17页
计算机组成原理课程设计61112.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

计算机组成原理课程设计61112.docx

《计算机组成原理课程设计61112.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计61112.docx(17页珍藏版)》请在冰豆网上搜索。

计算机组成原理课程设计61112.docx

计算机组成原理课程设计61112

指导教师:

桂宁张芳2016年6月18日

 

计算机组成原理课程设计

报告

(2015/2016第二学期------第17周)

指导教师:

桂宁张芳

 

班级:

姓名:

学号:

 

1、目的和要求

目的:

深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。

要求:

根据内容自行设计相关指令微程序;(务必利用非上机时间设计好微程序)

设计测试程序、实验数据并上机调试。

设计报告内容:

包括1、设计目的2、设计内容3、微程序设计(含指令格式、功能、设计及微程序)4、实验数据(测试所设计指令的程序及结果)。

二、实验环境

TEC-2机和PC机

三、具体内容

实验内容:

(1)把用绝对地址表示的内存单元ADDR1中的内容与内存单元ADDR2中的内容相减,结果存于内存单元ADDR3中。

指令格式:

D4××,ADDR1,ADDR2,ADDR3,四字指令(控存入口100H)

功能:

[ADDR3]=[ADDR1]-[ADDR2]

(2)将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。

指令格式:

E0DRSR,ADDR(SR,DR源、目的寄存器各4位)双字指令(控存入口130H)

功能:

DR=SR-[ADDR]

(3)转移指令。

判断两个通用寄存器内容是否相等,若相等则转移到指定绝对地址,否则顺序执行。

指令格式:

E5DRSR,ADDR双字指令(控存入口140H)

功能:

ifDR==SRgotoADDRelse 顺序执行。

设计:

利用指令的CND字段,即IR10~8,令IR10~8=101,即CC=Z

则当DR==SR时Z=1,微程序不跳转,接着执行MEMPC(即ADDRPC)

而当DR!

=SR时Z=0,微程序跳转至A4。

 

实验设计并分析

第1条:

把用绝对地址表示的内存单元ADDR1中的内容与内存单元ADDR2中的内容相减,结果存于内存单元ADDR3中。

指令格式:

D4××,ADDR1,ADDR2,ADDR3,四字指令(控存入口100H)

功能:

[ADDR3]=[ADDR1]-[ADDR2]

指令格式:

D4XX

ADDR1

ADDR2

ADDR3

 

微程序:

PC->AR,PC+1->PC:

00000E00A0B55402

MEN->AR:

00000E0010F00002

MEN->Q:

00000E0000F00000

PC->AR,PC+1->PC:

00000E00A0B55402

MEN->AR:

00000E0010F00002

MEN-Q->Q:

00000E0101E00000

PC->AR,PC+1->PC:

00000E00A0B55402

MEN->AR:

00000E0010F00002

Q->MEN,CC#=0:

0029030010200010

>E900

09000000:

00000000:

0E000000:

A0B50000:

54020000:

0000

09050000:

0E000000:

10F00000:

00020000:

00000000:

0E00

090A0000:

00F00000:

00000000:

00000000:

0E000000:

A0B5

090F0000:

54020000:

00000000:

0E000000:

10F00000:

0002

09140000:

00000000:

0E010000:

01E00000:

00000000:

0000

09190000:

0E000000:

A0B50000:

54020000:

00000000:

0E00

091E0000:

10F00000:

00020000:

00290000:

03000000:

1020

09230000:

0010

用D命令查看输入的微码:

>D900

090000000E00A0B5540200000E0010F00002......T.........

090800000E0000F0000000000E00A0B55402..............T.

091000000E0010F0000200000E0101E00000................

091800000E00A0B5540200000E0010F00002......T.........

092000290300102000100000000000000000.)..............

092800000000000000000000000000000000................

>A800

0800:

MOVR1,900

0802:

MOVR2,9

0804:

MOVR3,100

0806:

LDMC

0807:

RET

0808:

用G命令运行加载微码的程序:

>G800

用A命令输入程序:

>A820

0820:

MOVR0,0023

0822:

MOV[A00],R0

0824:

MOVR1,0022

0826:

MOV[A01],R1

0828:

NOP

0829:

NOP

082A:

NOP

082B:

NOP

082C:

RET

082D:

用E命令输入新指令:

>E828

08280000:

D4000000:

0A000000:

0A010000:

0A02

用U命令查看输入程序:

>U820

0820:

2C000023MOVR0,0023

0822:

34000A00MOV[0A00],R0

0824:

2C000032MOVR1,0022

0826:

34000A01MOV[0A01],R1

0828:

D400DWD400

0829:

0A00ADCR0,R0

082A:

0A01ADCR0,R1

082B:

0A02ADCR0,R2

082C:

AC00RET

082D:

0000NOP

082E:

0000NOP

082F:

0000NOP

0830:

0000NOP

0831:

0000NOP

0832:

0000NOP

0833:

0000NOP

用G命令运行程序:

>G820

用D命令查看运行结果:

>DA00

0A000023002200010000

假设从地址[0828]开始执行微程序,此时程序计数器PC的值是0829。

因为运行程序的时候[0829]和[0830]中存了减法的两个数的内存地址,所以要想方设法1)把这两个加数传到运算器的寄存器中,2)在运算器中相减,3)将结果输出到内存单元[ADDR1]。

以下分别进行分析。

1)取每个加数要访问两次内存,第一次是取得被减数所在的内存地址的值(MEM→AR),第二次是取得减数本身并保存在Q寄存器中(MEM→Q)。

注意,取第二个减数的时候,第一次仍是MEM→AR,而第二次MEM-Q→Q的同时也把减法给完成了,请见接下来的分析。

2)相减的操作是MEM-Q→Q。

MEM是从内存中取得的第二个数的值,左边的Q是刚才取得的第一个数的值。

他俩相减的和传给Q寄存器,覆盖掉了Q寄存器刚才保存的值(第一个数)。

3)现在Q寄存器中存有减法的运算结果,最后的工作是把这个结果写到内存单元

[ADDR1]中去。

如果AR或者PC指向[ADDR1]的话就好办了,难点在于现在AR已经到了[ADDR2]处,PC已经到了[ADDR2+1]处,而且又不知道如何让寄存器的值减一。

后来问同学,得到了解决办法:

利用IP寄存器。

IP正好还呆在[ADDR1-1],即内存地址[0828]。

显然,让IP+1就得到了[ADDR1],即[0829]。

微指令是IP+1→AR以及MEM→AR,这时AR的值为第一个加数所在的单元[ADDR1]。

现在Q的值是运算结果,AR的值是运算结果要传给的内存地址。

显而易见,最后

一步就是“存储器写”操作Q→MEM。

第2条:

将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。

指令格式:

E0DRSR,ADDR(SR,DR源、目的寄存器各4位)双字指令(控存入口130H)

功能:

DR=SR-[ADDR]

指令格式:

E0XX

ADDR

 

微程序:

PC→AR,PC+1→PC:

00000E00A0B55402

MEM→AR:

00000E0010F00002

SR-[ADDR]→DR:

0029030131D00088

用E命令输入微码:

>E900

09000000:

00000000:

0E000000:

A0B50000:

54020000:

0000

09050000:

0E000000:

10F00000:

00020000:

00290000:

0301

090A0000:

31D00000:

0088

用D命令查看输入的微码:

>D900

090000000E00A0B5540200000E0010F00002......T.........

09080029030131D000880000000000000000.)..1...........

091000000000000000000000000000000000................

用A命令输入加载微码的程序:

>A800

0800:

MOVR1,900

0802:

MOVR2,3

0804:

MOVR3,130

0806:

LDMC

0807:

RET

0808:

用G命令运行加载微码的程序:

>G800

用A命令输入程序:

>A820

0820:

MOVR7,0024

0822:

MOVR8,0023

0824:

MOV[A00],R8

0826:

NOP

0827:

NOP

0828:

RET

0829:

用E命令输入新指令:

>E826

08260000:

E0070000:

0A00

用U命令查看输入的程序:

>U820

0820:

2C700024MOVR7,0024

0822:

2C800023MOVR8,0023

0824:

34080A00MOV[0A00],R8

0826:

E007DWE007

0827:

0A00ADCR0,R0

0828:

AC00RET

0829:

0000NOP

082A:

0000NOP

082B:

0000NOP

082C:

0000NOP

082D:

0000NOP

082E:

0000NOP

082F:

0000NOP

0830:

0000NOP

0831:

0000NOP

0832:

0000NOP

用G命令运行程序:

>G820

用D命令查看运行结果:

>DA00

0A00002200000000

用R命令查看寄存器内容:

>R

R0=0001R1=090CR2=0000R3=0133SP=FFFFPC=0820IP=0828R7=0024R8=0023

R9=0000R10=0000R11=0000R12=0000R13=0000R14=0000R15=0000F=00001111

0820:

2C700024MOVR7,0024

根据指令的功能和指令格式,先读取地址ADDR单元内容暂时放置于Q寄存器中,然后再读取内存单元中的DATA,同时与Q寄存器内容相减,结果存放在DR寄存

器中。

第3条:

转移指令。

判断两个通用寄存器内容是否相等,若相等则转移到指定绝对地址,否则顺序执行。

指令格式:

E5DRSR,ADDR双字指令(控存入口140H)

功能:

ifDR==SRgotoADDRelse 顺序执行。

设计:

利用指令的CND字段,即IR10~8,令IR10~8=101,即CC=Z

则当DR==SR时Z=1,微程序不跳转,接着执行MEMPC(即ADDRPC)

而当DR!

=SR时Z=0,微程序跳转至A4。

指令格式:

E5XX

ADDR

 

微程序:

SR-DR:

00000E0191900088

PC→AR,CC#=CND,PC+1→PC:

002903E0A0B55402

MEM→PC:

0029030030F05000

用E命令输入微码:

>E900

09000000:

00000000:

0E010000:

91900000:

00880000:

0029

09050000:

03E00000:

A0B50000:

54020000:

00290000:

0300

090A0000:

30F00000:

5000

用D命令查看输入的微码:

>D900

090000000E0191900088002903E0A0B55402.........)....T.

09080029030030F050000000000000000000.)..0.P.........

091000000000000000000000000000000000................

用A命令输入加载微码的程序:

>A800

0800:

MOVR1,900

0802:

MOVR2,3

0804:

MOVR3,140

0806:

LDMC

0807:

RET

0808:

用G命令运行加载微码的程序:

>G800

当寄存器R7与寄存器R8内容不同时:

用A命令输入程序:

>A820

0820:

MOVR7,0023

0822:

MOVR8,0028

0824:

NOP

0825:

NOP

0826:

MOVR9,0067

0828:

RET

0829:

用E命令输入新指令:

>E824

08240000:

E5780000:

0828

用U命令查看输入的程序:

>U820

0820:

2C702013MOVR7,0023

0822:

2C802014MOVR8,0028

0824:

E578DWE578

0825:

0828ADCR2,R8

0826:

2C902015MOVR9,0067

0828:

AC00RET

0829:

0000NOP

082A:

0000NOP

082B:

0000NOP

082C:

0000NOP

082D:

0000NOP

082E:

0000NOP

082F:

0000NOP

0830:

0000NOP

0831:

0000NOP

0832:

0000NOP

用G命令运行程序:

>G820

用R命令查看寄存器内容:

>R

R0=0000R1=090CR2=0000R3=0143SP=FFFFPC=0820IP=0828R7=0023R8=0028

R9=0067R10=0000R11=0000R12=0000R13=0000R14=0000R15=0000F=00011111

0820:

2C702013MOVR7,2013

由寄存器R9的值为2015可知,程序并未转移到某绝对地址

1、SR-DR,运算器接受标志位,设定标志位

2、PC→AR,PC+1→PC,SCC=7,IR10-8=101,CC#=Z

DR=SR,CC#=Z=1,顺序执行102,DR≠SR转移到下地址为103的指令继续转移

3、(DR=SR)偏移量OFFSET加IP(R4),结果赋给PC(R5),然后令CC#=0,用3

号命令条件转移到A4H,结束微程序

4、PC→AR,PC+1→PCSCC=101,SC=1,使CC#=S#,DR>SR,SR-DR<0,S=1,CC#=S#=0,3号命令条件转移到下地址为A4H的指令结束程序,DR0,S=0,CC#=S#=1,条件转移命令将顺序执行地址为104的指令

5、(DR

四.实验心得

通过这次的课程设计,使得我们进一步地熟悉了PC机与TEC-2机,同时也更深层次的了解了计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,同时在一定程度上理解和掌握了动态微程序设计的概念。

更加深入的了解了指令、微程序、微码的关系和构成,通过设计、调试指令,熟悉了计算机内部的控制器与算术逻辑单元的运行过程,对计算机内部结构更加熟悉。

 

成绩评定表

平时成绩

答辩成绩

报告成绩

总成绩

 

 

 

 

签字:

年月日

 

五.答辩内容(许建龙老师)

1.第三个实验中,为什么要在第一条指令设置SR-DR?

答:

为了判断两寄存器的内容是否相等,并以此为依据来设置标志位Z判断是否转移,若相等则转移,若不相等则顺序执行。

2.第三个实验中,微码通过哪几位实现标志位的设置?

答:

通过B39~B37(SCC)和B34~B32(SST)来设置。

SCC为111,通过设置R8~R10的值来设置条件码CC#的值,此处CC#=Z,R8~R10为5。

SST为001,设置状态位随结果而变化。

3.第三个实验中,PCAR,PC+1PC是怎么实现的?

答:

A、B口地址均设置为1010,即R5,

PCàAR通过A口输出直接作为AM2901的Y输出,Y与寄存器AR相连;

PC+1àPC通过B口输出到ALU运算单元,与进位Cn进行运算后选择F端作为AM2901Y的输出,结果回送PC。

4.第三个实验中,若ADDR是偏移地址,则应如何修改指令?

答:

把MEMàPC改为IP+MEMàPC,IP指向当前指令的地址,MEM为ADDR(偏移地址)。

5.第三个实验中,第二条指令的SC位一定要是0吗?

答:

不一定为0。

此条微指令的SCC为111,SC只与R10~R8有关,所以SC位为任意值,即0和1均可。

6.第三个实验中,若将操作码改为D5XX,应如何修改指令?

答:

应将微程序入口地址改为100H,即把MOVR3,140H改为MOVR3,100H。

 

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

当前位置:首页 > 人文社科 > 视频讲堂

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

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