《计算机组成原理》课程设计报告微程序设计.docx

上传人:b****0 文档编号:8966060 上传时间:2023-05-16 格式:DOCX 页数:26 大小:1.12MB
下载 相关 举报
《计算机组成原理》课程设计报告微程序设计.docx_第1页
第1页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第2页
第2页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第3页
第3页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第4页
第4页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第5页
第5页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第6页
第6页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第7页
第7页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第8页
第8页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第9页
第9页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第10页
第10页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第11页
第11页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第12页
第12页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第13页
第13页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第14页
第14页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第15页
第15页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第16页
第16页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第17页
第17页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第18页
第18页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第19页
第19页 / 共26页
《计算机组成原理》课程设计报告微程序设计.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《计算机组成原理》课程设计报告微程序设计.docx

《《计算机组成原理》课程设计报告微程序设计.docx》由会员分享,可在线阅读,更多相关《《计算机组成原理》课程设计报告微程序设计.docx(26页珍藏版)》请在冰点文库上搜索。

《计算机组成原理》课程设计报告微程序设计.docx

《计算机组成原理》课程设计报告微程序设计

 

 

《计算机组成原理》

课程设计报告

——微程序设计

 

指导老师:

肖铁军,赵蕙

学院:

计算机学院

班级:

信息安全1501

姓名:

周里威

学号:

3150604044

一、个人感想

这一个多星期的课设做下来真是收获超大,我强烈建议以后的课可以实验课理论课对半开,现在我们的实验课真是太少了,平时上课基本听不懂,没有实验课根本学不到什么。

我刚开始学习计算机组成原理这门课程的时候感觉,这课怎么这么难啊,什么也看不懂,什么也听不懂,除了介绍一些基本的概念的时候,都没听懂过课讲真,于是乎考试也是一脸懵逼,就挂了。

但是其实上课期间的实验课还是挺有意思的,能够让我稍微了解一点计算机组成原理的一丁点,但是并没有什么卵用,我还是对之啥也不懂,在这挂科加上啥也不懂之际,迎来了可亲可爱的课设。

课设第一天,我在老师在人没来齐就走了的情况下扯了半小时的蛋才开始问到大神,他说老师让我们自己瞎搞先。

我当时心里真是一万个Whatthehell跑了出来,后来才了解原来这是老师的良苦用心,要是一开始就讲讲讲我也是啥也听不到,还不如先实际操作一下先,老师再讲,效果更好(但最好也要先告诉我们该干什么),于是在大神的帮助下,我开始看书上什么微指令,什么寻址方式,什么汇编指令等等东西,好在我还有之前实验的基础,才看了10分钟就看不下去了。

于是在社霸们的神奇的搜寻下,一个牛逼学长的报告已经在群里传开了,于是我顺利的完成了第一天的任务,虽然是抄的,但是我知道只是抄是没用的,于是我就不厌其烦的叨扰大神,让他给我一点一点得讲了每一条指令,每一个数据通路运行图上各个部件是啥有啥用等等,虽然有些似懂非懂,但是我似乎领悟到了什么。

第二天开始,我感觉我每天都能学到很多新知识,经过4天的洗礼,我感觉我已经从啥也不懂的小白晋级为青铜圣斗士了,有时其他同学不懂的问题我也能回答一些了,就在我觉得我可以爆发小宇宙的时候,堆栈和中断横亘而来,给了我一个猝不及防的打击,前4天的任务我已经提前半天完成,可剩下的半天我却一点都整不出来,然而听说隔壁的大神已经开始写报告了。

于是我开始方了,屁颠屁颠的跑去请教大神,于是我又自己加班跟着另一个班一起做,这么难的东西当然要多花时间才能搞定的啦,虽然到最后都没有完全搞定,但是堆栈,中断的基本原理和简单测试还是实现了,这让我感到一丝安慰,突然发现我的感想似乎写得有点长了。

总结一下,实验是个好东西,课设真的很有趣。

二、项目任务

本项目的任务是针对第2章所述的OpenJUC-II教学机模型机,设计控制器的微程序,实现该模型机的指令系统。

通过课程设计理解指令的执行过程,指令系统与硬件的关系,进而加深对计算机的结构和工作原理的理解。

三、报告主体

报告我分为三个阶段来描述

1熟悉寻址方式阶段;

2了解算术,逻辑,移位,程序控制等基本常用指令阶段;

3尝试堆栈与中断有关指令阶段;

1熟悉寻址方式阶段

①阶段开始我当然是熟悉数据通路图上画了什么

AR:

地址寄存器;DR:

数据寄存器;IR:

指令寄存器;

PC:

时钟信号;SP:

栈顶指针寄存器;TR:

临时寄存器;

ALU:

运算器;SHIFTER:

移位器;A:

暂存寄存器;

GRS:

寄存器组;IB:

总线;WD:

写;RD:

读;

PSW:

程序状态标志位;XXoe:

出口;XXce:

入口。

②此阶段第二步是熟悉基本的微指令,取指令,取源操作数,取目的操作数,执行指令,保存数据。

以汇编指令MOV#0001H,0033H为测试

(1)取指令的微程序

微地址(H)

微指令(H)

微命令

微指令运行效果

000

20080001

PCoe,ARoe

PC送出信号0030到AR

001

00069002

ARoe’,RD,DRce’,PCinc

主存读出地址0030的内容即测试汇编指令到DR

002

CC000003

DRoe,IRce

DR把指令送到IR

003

00000404

BM=2

BM=2是多分支转移,取源操作数入口为004,所以转向004H。

(2)取源操作数微程序

微地址(H)

微指令(H)

微命令

微指令运行效果

004

00000A08

BM=5

取源操作数入口

BM=5,NA=008H为寄存器寻址,立即寻址入口为00BH。

00B

20080012

PCoe,ARce

PC送出信号0031到AR

012

00069016

ARoe’,RD,DRce’,PCinc

主存读出地址0031的内容即源操作数到DR

016

D000006

DRoe,TRce

立即寻址直接把立即数放入TR

取出的源操作数放在TR中,转到取目的操作数的微程序入口006H

(3)取目的操作数微程序

微地址(H)

微指令(H)

微命令

微指令运行效果

006

00000A28

BM=5

取目的操作数入口

BM=5,NA=028H为寄存器寻址,直接寻址入口为02CH。

02C

20080033

PCoe,ARce

PC送出信号0032到AR

033

00069034

ARoe’,RD,DRce’,PCinc

主存读出地址0032的内容即目的操作数到DR

034

C0080035

DRoe,ARce

直接寻址把地址从DR送到AR

035

00061036

ARoe’,RD,DRce’

直接寻址中没用

036

D4000007

DRoe,TRce

直接寻址中没用

取出的目的操作数放在A中,转到执行指令的微程序入口007H

(4)执行阶段微程序

双操作数赋值指令MOV的微程序入口地址为041H

微地址(H)

微指令(H)

微命令

微指令运行效果

007

00000800

NOP

跳转到MOV的微指令

041

94000040

TRoe,Ace

把TR中保存的数据送入A

040

00300E50

SVce,BM=7

把A中的数据送入SHIFTER

将结果保存在主存中,依Md转移,所以转到051H

051

60030052

Soe,DRce

把SHIFTER中的数据送入DR

052

00052200

ARoe,DRoe’,WR

数据0001写入地址0033里

指令执行结果:

把0001写入0033地址中。

(1)取指令的微程序配图

(2)取源操作数微程序配图

(3)取目的操作数微程序配图

(4)执行阶段微程序配图

③前面使用了立即寻址以及直接寻址,以下为其他寻址方式的微程序。

(1)寄存器寻址

取源操作数阶段

微地址(H)

微指令(H)

微命令

008

D0000006

GRSoe,TRce

取目的操作数阶段

微地址(H)

微指令(H)

微命令

028

D4000007

GRSoe,TRce

(2)寄存器间接寻址

取源操作数阶段

微地址(H)

微指令(H)

微命令

008

50000006

GRSoe,TRce

取目的操作数阶段

微地址(H)

微指令(H)

微命令

028

54000007

GRSoe,Ace

(3)寄存器自增间接寻址

取源操作数阶段

微地址(H)

微指令(H)

微命令

00A

54080010

GRSoe,Ace,ARce

010

02700011

INC,SVce

011

68000015

Soe,GRSce

取目的操作数阶段

微地址(H)

微指令(H)

微命令

02A

54080030

GRSoe,Ace,ARce

030

02700031

INC,SVce

031

68000035

Soe,GRSce

(4)立即寻址

取源操作数阶段

微地址(H)

微指令(H)

微命令

00B

20080012

PCoe,ARce

012

00069016

ARoe’,RD,DRce’,PCinc

取目的操作数阶段

微地址(H)

微指令(H)

微命令

02B

00000007

NOP

(5)直接寻址

取源操作数阶段

微地址(H)

微指令(H)

微命令

00C

20080013

PCoe,ARce

013

00069014

ARoe’,RD,DRce’,PCinc

014

C0080015

DRoe,ARce

015

00061016

ARoe’,RD,DRce’

016

D0000006

DRoe,Tce

取目的操作数阶段

微地址(H)

微指令(H)

微命令

02C

20080033

PCoe,ARce

033

00069034

ARoe’,RD,DRce’,PCinc

034

C0080035

DRoe,ARce

035

00061036

ARoe’,RD,DRce’

036

D4000007

DRoe,Ace

(6)间接寻址

取源操作数阶段

微地址(H)

微指令(H)

微命令

00D

20080017

PCoe,ARce

017

00069018

ARoe’,RD,DRce’,PCinc

018

C0080019

DRoe,ARce

019

00061014

ARoe’,RD,DRce’

取目的操作数阶段

微地址(H)

微指令(H)

微命令

02D

20080037

PCoe,ARce

037

00069038

ARoe’,RD,DRce’,PCinc

038

C0080039

DRoe,ARce

039

00061034

ARoe’,RD,DRce’

(7)变址寻址

取源操作数阶段

微地址(H)

微指令(H)

微命令

00E

2008001A

PCoe,ARce

01A

0006901B

ARoe’,RD,DRce’,PCinc

01B

D400001C

DRoe,Ace

01C

40700020

GRSoe,ADD,SVce

020

60080015

Soe,ARce

取目的操作数阶段

微地址(H)

微指令(H)

微命令

02E

2008003A

PCoe,ARce

03A

0006903B

ARoe’,RD,DRce’,PCinc

03B

D400003C

DRoe,Ace

03C

40700032

GRSoe,ADD,SVce

032

60080035

Soe,ARce

(8)相对寻址

取源操作数阶段

微地址(H)

微指令(H)

微命令

00F

2008001D

PCoe,ARce

01D

0006901E

ARoe’,RD,DRce’,PCinc

01E

D400001F

DRoe,Ace

01F

20700020

PCoe,ADD,SVce

取目的操作数阶段

微地址(H)

微指令(H)

微命令

02F

2008003D

PCoe,ARce

03D

0006903E

ARoe’,RD,DRce’,PCinc

03E

D400003F

DRoe,Ace

03F

20700035

PCoe,ADD,SVce

 

2了解算术,逻辑,移位,程序控制等基本常用指令阶段

汇编指令

微地址(H)

微指令(H)

微命令

MOV(赋值)

041

94000040

TRoe,ace

MOV

040

00300E50

SVce,BM=7

ADD(加)

042

98700E50

TRoe,ADD,SVce,PSWce,BM=7

ADDC(带进位加)

043

98B00E50

TRoe,ADDC,SVce,PSWce,BM=7

SUB(减)

044

98F00E50

TRoe,SUB,SVce,PSWce,BM=7

SUBB(带进位减)

045

99300E50

TRoe,SUBB,SVce,PSWce,BM=7

AND(与)

046

99700E50

TRoe,AND,SVce,PSWce,BM=7

OR(或)

047

99B00E50

TRoe,OR,SVce,PSWce,BM=7

XOR(异或)

048

9A300E50

TRoe,XOR,SVce,PSWce,BM=7

CMP(比较)

049

98C00200

TRoe,SUB,PSWce,BM=1

TEST(测试)

04A

99400200

TRoe,AND,PSWce,BM=1

SAR(算术右移)

061

不会

SHL(逻辑左移)

062

18200E50

PSWce,SLce,BM=7

SHR(逻辑右移)

063

18100E50

PSWce,SRce,BM=7

ROL(循环左移)

064

00200E50

SLce,BM=7

ROR(循环右移)

065

00100E50

SRce,BM=7

RCL(进位循环左移)

066

不会

RCR(进位循环右移)

067

不会

JC(CF=1跳)

068

00000626

BM=3

JNC(CF=0跳)

069

00000626

BM=3

JO(OF=1跳)

06A

00000626

BM=3

JNO(OF=0跳)

06B

00000626

BM=3

JZ(ZF=1跳)

06C

00000626

BM=3

JNZ(ZF=0跳)

06D

00000626

BM=3

JS(SF=1跳)

06E

00000626

BM=3

JNS(SF=0跳)

06F

00000626

BM=3

J(条件不满足)

026

00000200

BM=1

J(条件满足)

027

A4000200

ARoe,PCce,BM=7

JMP(跳转)

070

A4000200

ARoe,PCce,BM=1

INC(自增)

071

1A700E50

PSWce,INC,SVce,BM=7

DEC(自减)

072

1AB00E50

PSWce,DEC,SVce,BM=7

NOT(取反)

073

19F00E50

PSWce,NOT,SVce,BM=7

HALT(停机)

058

00000058

NOP

NOP(空)

059

00000200

BM=1

 

部分指令配图

MOV指令1

MOV指令2

 

ADD指令

CMP指令

 

SHR指令

INC指令

 

3尝试堆栈与中断有关指令阶段

1)堆栈

入栈PUSH

微地址(H)

微指令(H)

微命令

微指令运行效果

078

0030009B

SVce

把A中的目的操作数放入SHFTER

09B

6003009C

Soe,DRce

把SHFTER中的目的操作数放入DR

09C

F400009D

SPoe,Ace

把栈顶指针地址放入A中

09D

02B0009E

DEC,SVce

把栈顶指针地址减一放入SHFTER

09E

7C080052

Soe,ARce,SPce

把减了1的栈顶地址放入AR和SP

入栈配图1

入栈配图2

出栈POP

微地址(H)

微指令(H)

微命令

微指令运行效果

079

B000009F

ARoe,TRce

AR把取到的目的操作数放入TR

0A0

02C610A1

SPinc,ARoe’,DRce’,RD

读出栈内的内容到DR

0A1

D40000A2

DRoe,Ace

DR把栈内的信息送到A

0A2

003000A3

SVce

A把栈内的信息送到SHFTER

0A3

80080051

TRoe,ARce

TR把保存的目的操作数送回AR

出栈配图1

出栈配图2

出栈配图3

测试汇编指令(如上图)

MOV#0051H,R2

PUSHR2

PUSH0050H

POP0053H

POP(R2)

CALL指令

微地址(H)

微指令(H)

微命令

微指令运行效果

07A

B00000A4

ARoe,TRce

AR把取到的目的操作数放入TR

0A4

230300A5

SPdec,PCoe,DRce

PC送到DR,栈顶指针减1

0A5

E00800A6

SPoe,ARce

栈顶指针送到AR

0A6

84000052

TRoe,PCce

TR把取到的目的操作数放入PC

RET指令

微地址(H)

微指令(H)

微命令

微指令运行效果

05A

E00800A7

SPoe,ARce

SP把栈顶指针送到AR

0A7

02C610A8

SPinc,ARoe’,DRce’,RD

主存读出栈中内容DR

0A8

C4000000

DRoe,PCce

DR把保存的内容送到PC

2)中断

微地址(H)

微指令(H)

微命令

微指令运行效果

EI开中断

05C

00005200

STI,BM=1

开中断,BM=1,依中断转移

DI关中断

05D

00006200

CLI,BM=1

关中断,BM=1,依中断转移

中断隐指令

080

F4000081

SPoe,Ace

把栈顶指针地址放入A中

081

22B30082

PCoe,DEC,SVce,DRce

把A中的栈顶指针地址自减1放入移位寄存器中,PC送到DR

082

74080083

Soe,Ace,ARce

把移位寄存器栈顶指针地址放入A和AR中

083

00052084

ARoe’,DRoe’,WR

把PC写入栈中

084

02B33085

DEC,SVce,DRce,PWSoe

栈顶指针自减1放入移位寄存器,PSW送到DR

085

7C080086

Soe,SPce,ARce

把移位寄存器栈顶指针地址放入A和SP中

086

00052087

ARoe’,DRoe’,WR

把PSW写入栈中

087

00027088

Droe’,INTA

中断

088

C0080089

DRoe,ARce

取到中断向量表放入AR

089

0006108A

ARoe’,DRoe’,RD

主存读出中断地址

08A

C4006000

DRoe,PCce,CLI

中断地址送到PC

RETI中断返回

05B

E00800A9

SPoe,ARce

把栈顶指针地址放入AR中

0A9

02C610AA

SPinc,ARoe’,DRce’,RD

栈顶指针自减1,读出栈中保存的PSW信息到DR

0AA

C00040AB

DRoe,PSWce’

把PSW信息从DR放回PSW

0AB

E00800AC

SPoe,ARce

把栈顶指针地址放入AR中

0AC

02C610AD

SPinc,ARoe’,DRce’,RD

栈顶指针自减1,读出栈中保存的PC信息到DR

0AD

C4005000

DRoe,PCce,STI

把PC信息从DR放回PC

 

测试汇编指令

MOV#0050H,0000H

MOV#FFFEH,FF00H

EI

AD:

MOV#0003H,R1

NOP

DECR1

JNZFFCH(PC)

NOTFF02H

JMPAD

0050H:

MOVFF08H,R4

RETI

中断隐指令配图1

中断隐指令配图2

RETI指令配图1

RETI指令配图2

报告完毕

鸣谢:

肖铁军老师,赵蕙老师以及帮助过我的同学们

参考书籍:

《计算机组成原理》主编肖铁军清华大学出版社

《计算机组成原理实践教程》肖铁军赵蕙等编著清华大学出版社

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

当前位置:首页 > PPT模板 > 其它模板

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

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