一、本课程设计的性质、目的、任务

《计算机组成与系统结构课程设计》是计算机学院各专业集中实践性环节之一,是学习完《计算机组成与系统结构》课程后进行的一次全面的综合练习。其目的是综合运用所学计算机原理知识,设计并实现一台模型计算机,以便巩固所学的知识,提高分析问题和解决问题的能力。

二、本课程设计的基本理论

1、掌握算术、逻辑、移位运算实验,熟悉ALU运算控制位的运用。

2、掌握存储器组织、读写方式及与总路线组成的数据通路,掌握地址总线、数据总线的工作原理。

3、掌握指令结构和指令取指、执行工作过程。

4、掌握CPU的微程序控制原理。

三、题目

1、综合运用所学计算机原理知识,设计并实现具有以下指令集结构的模型计算机:

编号

助记符

机器指令码

说明

0

SUB  Rd,Rs

1000 RdRs

Rd-Rs→Rd

1

ADD  Rd,Rs

1001 RdRs

Rd+Rs→Rd

2

AND  Rd,Rs

1010 RdRs

Rd&Rs→Rd (Rd和Rs相与)

3

DEC Rd

1011 Rd00

将Rd值减1

4

CLR Rd

1100 Rd00

将Rd清零

5

RL  Rd

1101 Rd00

Rd循环左移一位

6

RRC  Rd

1110 Rd00

Rd带进位右移一位

7

MOV Rd,Rs

1111 RdRs

Rs→Rd

8

LDI  Rd,*

0000 Rd00   XXXXXXXX

将指令中的立即数(第二字节)送入Rd

9

OUT  IOH,Rs

0001 00Rs

Rs→i/o(数据开关)高字节

10

LDA  Rd,M

0010 Rd00   XXXXXXXX   XXXXXXXX

[M] →Rd

11

STA  M,Rs

0011 00Rs   XXXXXXXX   XXXXXXXX

Rs→[M]

12

JMP M

0100 0000  XXXXXXXX   XXXXXXXX

[M]→PC,即跳转到M所指单元

13

JZ M

0101 0000  XXXXXXXX   XXXXXXXX

当Z=1时,跳转到M所指单元

14

JC M

0110 0000  XXXXXXXX   XXXXXXXX

当CY=1时,跳转到M所指单元

15

HALT

0111 0000

停机

2、设计提示:

1)上表中,机器指令码的高4位为指令操作码,M为16位存储器地址, Rs为源寄存器,Rd为目的寄存器,占2位,并规定:

Rs或Rd

选定的寄存器

00

01

10

11

R0

R1

R2

R3

2)在微程序中,微地址001为取指。

3)各指令指行阶段微程序入口地址的确定方式:

微地址位号

10   9

8   7  6   5

4  3  2  1  0

内容

1    1

IR7~IR4

0  0  0  0  0

例如,第5条指令”RL  Rd”  的指令码为0101 Rd00  则指令码的高4位IR7~IR4为0101,由上表知,微程序入口微地址为: 11 0101 00000 ,即6A0H。

注:第10、9位来自0001条微指令中upc所设置值的第10、9位。例如,如果是600则为11,如果是400则为10.

3、主要步骤:

(1)按照第3点的方法,给出所有16条指令的微程序入口微地址;

(2)通过分析每条指令的功能明确其的微程序流程,可参考实验指导书图3-4-1、图3-2-2、图3-3-1;

(3)写出每条微指令的微命令,即24个微控制位信号,可参考实验指导书表3.4.1、表3.2.1、表3.3.1和“微控制器编程手册”第2章。

(4)建议采用逐条指令设计实现的方式,一条实现并用汇编语句测试通过后(指令功能、下址顺序均正确)再进行下一条的设计。

5、检查

模型计算机设计完成后,用所给的测试程序check_1.asm(测12条非转移指令)和check_2.asm(测3条转移指令)检查正确性。检查方法:在测试程序中#load s本人的.IS微指令程序,实验箱电源关闭重启并连接,装载后选择“运行”或“单步”执行。

check_1.asm运行的正确结果为:寄存器R0R1R2R3分别显示00112233,IOH显示33。

check_2.asm运行的正确结果为:寄存器R0R1R2R3分别显示00112233,如果显示EE则执行有错误。

四、模型机指令系统(用列表方式给出,含助记符、操作数、指令码、长度、注释等)

;复杂模型机指令系统

;助记符 操作数              指令码 长度;-----------------------------------------------------LDI     R0,*               00     2;LDI     R1,*               04     2;LDI     R2,*               08     2;LDI     R3,*               0C     2;  将指令中的立即数(第二字节)送入OUT     IOH,R0             10     1;OUT     IOH,R1             11     1;OUT     IOH,R2             12     1;OUT     IOH,R3             13     1;  Rs→I/O(数据开关)高字节STA     *,R0               30     3;STA     *,R1               31     3;STA     *,R2               32     3;STA     *,R3               33     3;   Rs→[M]JMP     *                  40     3; [M]→PC,即跳转到M所指单元JZ      *                  50     3; 当Z=1时,跳转到M所指单元JC      *                  60     3; 当CY=1时,跳转到M所指单元HALT    ""                 70     1;停机(总线锁定)SUB     R0,R0              80     1SUB     R0,R1              81     1SUB     R0,R2              82     1SUB     R0,R3              83     1SUB     R1,R0              84     1SUB     R1,R1              85     1SUB     R1,R2              86     1SUB     R1,R3              87     1SUB     R2,R0              88     1SUB     R2,R1              89     1SUB     R2,R2              8A     1SUB     R2,R3              8B     1SUB     R3,R0              8C     1SUB     R3,R1              8D     1SUB     R3,R2              8E     1SUB     R3,R3              8F     1 ;减法,Rd-Rs→RdADD     R0,R0              90     1ADD     R0,R1              91     1ADD     R0,R2              92     1ADD     R0,R3              93     1ADD     R1,R0              94     1ADD     R1,R1              95     1ADD     R1,R2              96     1ADD     R1,R3              97     1ADD     R2,R0              98     1ADD     R2,R1              99     1ADD     R2,R2              9A     1ADD     R2,R3              9B     1ADD     R3,R0              9C     1ADD     R3,R1              9D     1ADD     R3,R2              9E     1ADD     R3,R3              9F     1 ;加法,Rd-Rs→RdAND     R0,R0              A0     1AND     R0,R1              A1     1AND     R0,R2              A2     1AND     R0,R3              A3     1AND     R1,R0              A4     1AND     R1,R1              A5     1AND     R1,R2              A6     1AND     R1,R3              A7     1AND     R2,R0              A8     1AND     R2,R1              A9     1AND     R2,R2              AA     1AND     R2,R3              AB     1AND     R3,R0              AC     1AND     R3,R1              AD     1AND     R3,R2              AE     1AND     R3,R3              AF     1 ;Rd&Rs→Rd (Rd和Rs相与)DEC     R0                 B0     1;DEC     R1                 B4     1;DEC     R2                 B8     1;DEC     R3                 BC     1;将Rd值减1CLR     R0                 C0     1;CLR     R1                 C4     1;CLR     R2                 C8     1;CLR     R3                 CC     1;将Rd清零LDA     R0,*               20     3;LDA     R1,*               24     3;LDA     R2,*               28     3;LDA     R3,*               2C     3;[M] →RdRL      R0                 D0     1;RL      R1                 D4     1;RL      R2                 D8     1;RL      R3                 DC     1;Rd循环左移一位RRC     R0                 E0     1;RRC     R1                 E4     1;RRC     R2                 E8     1;RRC     R3                 EC     1;Rd带进位右移一位MOV     R0,R0              F0     1;MOV     R0,R1              F1     1;MOV     R0,R2              F2     1;MOV     R0,R3              F3     1;MOV     R1,R0              F4     1;MOV     R1,R1              F5     1;MOV     R1,R2              F6     1;MOV     R1,R3              F7     1;MOV     R2,R0              F8     1;MOV     R2,R1              F9     1;MOV     R2,R2              FA     1;MOV     R2,R3              FB     1;MOV     R3,R0              FC     1;MOV     R3,R1              FD     1;MOV     R3,R2              FE     1;MOV     R3,R3              FF     1;  Rs→Rd

六、画出微程序流程图

七、填写下面的微指令表(只填写有微指令的相关行):

注意:这个好像还是有点问题的。。但是答辩的时候都通过了,老师问的问题也很简单基础。。。后来自己再回过来看发现还是有点问题-----

微址00002)1)

M23

M22

M21

M20

M19

M18

M17

M16

代码

M15

M14

M13

M12

M11

M10

M9

M8

代码

M7

M6

M5

M4

M3

M2

M1

M0

代码

后续微址

说明

E/M

IP

MWR

R/M

o2

o1

O0

OP

M

CN

S2

S2

S0

X2

X1

X0

XP

W

ALU

Iu

IE

IR

Icz

Ids

0000

0

0

0

0

0

0

0

0

00

0

0

0

0

0

0

0

0

00

0

0

0

0

0

0

0

0

00

0001

空操作

0001

0

1

0

0

0

0

0

0

40

0

0

0

0

0

0

0

0

00

0

0

0

0

0

1

1

1

07

0600

IBUS->IR

0600

0

0

0

0

0

1

0

1

05

0

0

0

0

0

1

0

0

04

0

0

0

0

0

0

0

0

00

+1

ROM->BX

0601

0

1

0

0

1

1

1

1

4F

0

0

1

1

1

0

0

1

39

1

0

0

1

0

0

1

0

92

0001

BX->RD

0620

0

0

0

0

1

0

1

0

0A

0

0

0

0

0

1

1

0

06

0

0

0

1

0

0

1

0

12

0001

RS->IOH

0640

0

0

0

0

0

1

0

1

05

0

0

0

0

0

1

0

0

04

0

0

1

0

0

0

0

0

20

+1

ROM->BL

0641

0

1

0

0

0

1

0

0

44

0

0

1

1

0

1

0

0

34

0

0

1

0

0

0

0

0

20

+1

R0M->BH

0642

0

1

0

0

0

0

1

1

43

0

0

1

1

1

0

0

1

39

1

1

0

0

0

0

0

0

C0

+1

BX->AR

0643

1

0

0

0

1

1

1

1

8F

0

0

0

0

0

1

0

0

04

0

0

0

1

0

0

1

0

12

0001

RAM->RD

0660

0

0

0

0

0

1

0

1

05

0

0

0

0

0

1

0

0

04

1

0

0

0

0

0

0

0

80

+1

ROM->BL

0661

0

1

0

0

0

1

0

0

44

0

0

0

0

0

1

0

0

04

0

0

0

0

0

0

0

0

00

+1

ROM->BH

0662

0

1

0

0

0

0

1

1

43

0

0

1

1

1

0

0

1

39

1

1

0

0

0

0

0

0

C0

+1

BX->AR

0663

1

0

1

0

0

0

0

0

A0

0

0

0

0

0

1

1

0

06

0

0

0

1

0

0

1

0

12

0001

RS->RAM

0680

0

0

0

0

0

1

1

1

07

0

0

0

0

0

1

0

0

04

0

0

0

0

0

0

0

0

00

+1

ROM->BL

0681

0

1

0

0

0

1

1

0

46

0

0

0

0

0

1

0

0

04

0

0

0

0

0

0

0

0

00

+1

ROM->BH

0682

1

1

0

0

0

0

0

1

C1

0

0

0

0

0

0

0

1

01

1

1

0

1

0

0

1

0

D2

0001

BX->PC

6A0

0

0

0

0

0

1

0

1

05

0

0

1

1

1

1

0

0

3C

0

0

0

0

0

0

0

0

00

+1

ROM->BL

6A1

0

1

0

0

0

1

0

0

44

0

0

1

1

1

1

0

0

3C

0

0

0

0

0

0

0

0

00

+1

ROM->BH

6A2

0

0

1

1

1

1

0

1

40

0

0

1

1

1

0

0

0

38

0

0

0

0

0

0

1

1

03

06A4

判定0标志

06A4

0

0

0

0

0

0

0

0

00

0

0

1

1

1

0

0

0

38

0

0

0

1

0

0

1

0

12

0001

空操作

06A5

1

1

0

0

0

0

0

0

C1

0

0

1

1

1

0

0

1

38

0

0

1

0

1

1

0

1

D2

0001

BX->PC

06C0

1

1

1

1

1

0

1

0

05

1

1

1

1

1

0

1

1

04

0

0

0

0

0

0

0

0

00

+1

ROM->BL

06C1

0

1

0

0

0

1

0

0

44

0

0

0

0

0

1

0

0

04

0

0

0

0

0

0

0

0

00

+1

ROM->BH

06C2

0

0

0

0

0

0

0

0

40

0

0

0

0

0

0

0

0

00

0

0

0

0

1

0

0

1

05

06C4

判断CY标志

06C4

0

0

0

0

0

0

0

0

00

0

0

0

0

0

0

0

0

00

0

0

0

1

0

0

1

0

12

0001

空操作

06C5

1

1

0

0

0

0

0

0

C1

0

0

1

0

1

0

0

1

39

1

1

0

1

0

0

1

0

D2

0001

BX->PC

06E0

0

0

0

0

0

1

1

1

07

0

0

0

0

0

1

1

1

07

1

1

0

0

0

0

0

0

C0

+1

PC->AX

06E1

1

1

0

0

0

0

0

0

C0

0

0

1

0

1

0

0

1

29

1

1

0

1

0

0

1

0

D2

06E0

AX-1->PC

0700

0

0

0

0

0

1

1

1

07

0

0

0

0

0

1

1

0

06

1

0

0

0

1

0

0

0

88

+1

RD->AX

0701

0

0

0

0

0

1

0

1

05

0

0

0

0

0

1

1

0

06

0

0

0

0

0

0

0

0

00

+1

RS->BX

0702

0

0

0

0

1

1

1

1

0F

1

0

0

1

0

0

0

0

91

1

0

0

1

0

0

1

0

92

0001

AX-BX->RD

0720

0

0

0

0

0

1

1

1

07

0

0

0

0

0

1

1

0

06

1

0

0

0

0

0

0

0

80

+1

RD->AX

0721

0

0

0

0

0

1

0

1

05

0

0

0

0

0

1

1

0

06

0

0

0

0

0

0

0

0

00

+1

RS->BX

0722

0

0

0

0

1

1

1

1

0F

1

0

0

1

1

0

0

1

99

1

0

0

1

0

0

1

0

92

0001

AX+BX->RD

0740

0

0

0

0

0

1

1

1

07

0

0

0

0

0

1

1

0

06

1

0

0

0

0

0

0

0

80

+1

RD->AX

0741

0

0

0

0

0

1

0

1

05

0

0

0

0

0

1

1

0

06

0

0

0

0

0

0

0

0

00

+1

RS->BX

0742

0

0

0

0

1

1

1

1

0F

0

0

0

1

0

0

0

1

11

1

0

0

1

0

0

1

0

92

0001

AX&BX->RD

0760

0

0

0

0

0

1

1

1

07

0

0

0

0

0

1

1

0

06

1

0

0

0

0

0

0

0

80

+1

RD->AX

0761

0

0

0

0

1

1

1

1

0F

0

0

1

0

1

0

0

1

29

1

0

0

1

0

0

1

0

92

0001

AX-1->RD

0780

0

0

0

0

0

1

1

1

07

0

0

0

0

0

1

1

0

06

1

0

1

0

0

0

0

0

A0

+1

RD->AX

0781

0

0

0

0

1

1

1

1

0F

0

0

1

0

0

0

0

1

21

1

0

1

1

0

0

1

0

B2

0001

AX=0->RD

07A0

0

0

0

0

0

1

1

1

07

0

0

0

0

0

1

1

0

06

1

0

0

0

0

0

0

0

80

+1

RD->AX

07A1

0

0

0

0

1

1

1

1

0F

1

0

1

0

1

0

0

1

A9

1

0

0

1

0

0

1

0

92

0001

RL AX->RD

07C0

0

0

0

0

0

1

1

1

07

0

0

0

0

0

1

1

0

06

1

0

0

0

0

0

0

0

80

+1

RD->AX

07C1

0

0

0

0

1

1

1

1

0F

1

0

1

0

0

0

0

1

A1

1

0

0

1

0

0

1

0

92

0001

RR AX->RD

07E0

0

0

0

0

1

1

1

1

0F

0

0

0

0

0

1

1

0

06

0

0

0

1

0

0

1

0

12

0001

Rd=Rs

八、验证程序

程序一:

;课程设计检查程序1,含除跳转指令外的12条指令:add,and,dec,ldi,clr,rl,rr,ldr,sta,mov,out,hlt

#LOAD "test1.IS"  ;预调入指令系统/微程序,用自己的微程序文件名称org   0start:LDI  r0,12hsta 100h,r0lda r1,100hdec r1rl r0add r0,r1rrc r0add r0,r1ldi r2,76hand r2,r0mov r3,r2add r3,r1clr r0out ioh,r3halt;qq:jmp qqEnd

程序二:

;课程设计检查程序2,含3条跳转指令:jz,jc,jmp

#LOAD "test.IS"  ;预调入指令系统/微程序,用自己的微程序文件名称org   0start:ldi r0,12hsub r0,r0jz p1ldi r0,0eehp1:ldi r1,11hldi r2,0ffhadd r1,r2jc p2ldi r1,0eehjmp p3p2:ldi r1,11hp3:ldi r2,22hldi r3,011hadd r3,r2jc p4jmp p5p4:ldi r2,0eehp5:haltend

检查结果:

Check1:

Check2:

  • 存在的问题及体会
  1. HALT终止指令是取出PC放在AX,经过ALU使得A-1后重新赋值给PC,然后PC跳回后经过0001时又PC++,相当于不断循环PC-1+1=PC的操作,死锁在循环中,起了终止的作用。
  2. CY进位/Z置零跳转是在标志位为1时,跳转到地址转移的微指令地址的下一个地址,否则直接跳转到地址转移的微指令地址入口
  3. 涉及到立即数时,需要把存储立即数的地址放在ROM后存在AX/BX,在经过ALU传到AR/输出到指定寄存器
  4. 取分寄存器和暂存器的作用。寄存器是有限存贮容量的高速存贮部件,可用来暂存指令、数据和位址等;暂存器暂时存放一定数量数据,例如:编程时某一逻辑信号经常多次使用,中间结果需要暂时记忆。

广州大学2021计算机组成原理课程设计实验报告相关推荐

  1. 计算机组成原理课程实验报告,计算机组成原理课程设计实验报告

    <计算机组成原理课程设计实验报告>由会员分享,可在线阅读,更多相关<计算机组成原理课程设计实验报告(18页珍藏版)>请在人人文库网上搜索. 1.计算机组成原理课程设计实验报告( ...

  2. 计算机组成原理模型机设计实验总结,计算机组成原理课程设计实验报告-基本模型机设计与实现.docx...

    计算机组成原理课程设计实验报告-基本模型机设计与实现 计 算 机 组 成 原 理 实 验 报 告 评 语: 成绩 教 师: 年 月 日 班 级: 1403011 学 号: 140301124 姓 名: ...

  3. 计算机模型机设计实验报告,计算机组成原理课程设计实验报告-基本模型机设计与实现...

    计算机组成原理课程设计实验报告-基本模型机设计与实现 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 计 算 机 组 成 原 理实 ...

  4. 计算机原理综合设计实验报告,计算机组成原理--课程设计实验报告.doc

    武汉工业学院 数学与计算机学院 组成原理课程设计 专 业:计算机科学与技术 班 级:________________ 学 号:________________ 姓 名:________________ ...

  5. 西工大计算机操作系统实验报告,西工大计算机操作系统课程设计实验报告bh05xh5...

    <西工大计算机操作系统课程设计实验报告bh05xh5>由会员分享,可在线阅读,更多相关<西工大计算机操作系统课程设计实验报告bh05xh5(7页珍藏版)>请在人人文库网上搜索. ...

  6. 计算机课设微程序最大值,计算机组成原理课程设计(微程序)报告

    <计算机组成原理课程设计(微程序)报告>由会员分享,可在线阅读,更多相关<计算机组成原理课程设计(微程序)报告(17页珍藏版)>请在人人文库网上搜索. 1.微程序控制器的设计与 ...

  7. 计算机课设微程序最大值,计算机组成原理课程设计(微程序)报告.doc

    计算机组成原理课程设计(微程序)报告.doc (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 .微程序控制器的设计与实现目录1 设 ...

  8. 计算机组成原理课程设计总结,计算机组成原理课程设计的实验报告

    计算机组成原理课程设计的实验报告 长治学院课程设计报告课程名称: 计算机组成原理课程设计 设计题目: 设计一台性能简单的计算机 系 别: 计算机系 专 业: 计科1101班 组 别: 第三组 学生姓名 ...

  9. 计算机组成原理课程设计a,计算机组成原理课程设计报告.doc

    计算机组成原理课程设计报告.doc (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 计算机组成原理课程设计报告实验项目:1.设计一 ...

最新文章

  1. 计算机查找文件的速度,如何快速搜索文件_怎么加快电脑里的文件搜索速度
  2. Hibernate 统计记录总数方法汇总
  3. 禁用FCKeditor浏览服务器
  4. c语言边沿与内芯的差noj题目,西工大noj答案完整版148.doc
  5. Centos7 安装 Kubernetes dashboard (安装篇)
  6. Codeforces Round #413(Div. 1 + Div. 2, combined)——ABCD
  7. 使用lex与yacc词法语法工具进行简单的SQL语义检查
  8. shotcut视频压缩
  9. 计算机专业术语pe什么意思,pe是什么意思
  10. 新型智能优化算法——海鸥优化算法(基于Matlab代码实现)
  11. 【C语言开源库】C语言必备实用第三方库Melon(包括数据结构算法)
  12. 节点精灵免root脚本之直播间秒抢红包雨
  13. 2J9国内外相同牌号对照表
  14. su、sudo命令和限制root远程登录
  15. SQL Server 2008 (2008 R2) 清理日志方法
  16. ArrayMap的源码分析
  17. SOAOffice和iWebOffice、NTKO的比较及其优势
  18. 微信公众号开发和小程序开发
  19. 博图TIA软件安装完成后各软件作用
  20. 2016年我的看电影计划

热门文章

  1. 运放指标-压摆率SR
  2. ajax asp后台获取不到post数据,asp.net webapi [FromBody]string 获取不到ajax post的数据的解决方法...
  3. Android_水平滚动控件HorizontalScrollView
  4. java web ip_详解Java Web如何限制访问的IP的两种方法
  5. 关机代码(强制关机)
  6. 前端面试-浏览器原理
  7. 初中级前端面试复习总结(浏览器、HTTP、前端安全)
  8. Hacking Team泄露数据表明韩国、哈萨克斯坦针对中国发起网络攻击
  9. formidable词根词缀_实用文档之英语单词(词根词缀)
  10. 推荐系统论文:Personalized News Recommendation Based on ClickBehavior