计算机系统结构.docx
《计算机系统结构.docx》由会员分享,可在线阅读,更多相关《计算机系统结构.docx(15页珍藏版)》请在冰豆网上搜索。
计算机系统结构
燕山大学
课程设计报告
名称:
复杂模型机的设计与实现
学院(系)信息科学与工程学院
年级专业11级信息安全
学生姓名谢京华
学号11014070006
日期2014年1月9号
一、课程设计目的:
综合运用所学的计算机原理知识,设计并实现较为完整的计算机。
二、课程设备:
TDN—CM+计算机组成原理实验教学系统一台,排线若干。
三、数据格式及指令格式
1.数据格式:
模型机规定的采用定点补码表示法表示数据,且字长为8位,其格式如下
7
6543210
符号
尾数
其中7位为符号位,树枝表示范围:
-1≤X<1
2.指令格式:
模型机设计四大类指令共十六条,其中包括算术逻辑指令,I/O指令,访问及转移指令和停机指令。
(1)算术逻辑指令
设计9条算术逻辑指令并用单节字表示,寻址方式采用寄存器直接寻址,其格式如下:
7654
32
10
OP-CODE
rs
rd
其中,OP-CODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:
rs或rd
选定的寄存器
00
01
10
R0
R1
R2
9条算术逻辑指令的名称,功能和具体格式见表9-1
(2)访问指令及转移指令
模型机设计2条访问指令,即存数(STA),取数(LDA),2条转移指令,即无条件转移指令(JMP),结果为零或有进位转移指令(BZC),指令格式为:
76
54
32
10
00
M
OP-CODE
rd
D
其中,OP-CODE为操作码,rd为目的寄存器(LDA,STA指令使用),D为位移量(正负均可),M为寻址模式,其定义如下:
寻址模式M
有效地址E
说明
00
01
10
11
E=D
E=(D)
E=(RI)+D
E=(PC)+D
直接寻址
间接寻址
RI变址寻址
相对寻址
本模型机规定变址寄存器RI指定为寄存器R2。
(3)I/O指令
输入和输出指令采用单字节指令,其格式如下:
7654
32
10
OP-CODE
addr
rd
其中,addr=01时,选中“INPUTDEVICE”中的开关组作为输入设备,addr=10时,选中“OUTPUTDEVICE”中的数码块作为输出设备。
(4)停机指令
指令格式如下:
7654
32
10
OP-CODE
00
00
HALT指令用于实现停机操作。
(4)指令系统
本模型机共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入输出指令2条,其他指令1条。
汇编符号
指令格式
功能
CLRrd
0111
00
rd
0→rd
MOVrs,rd
1000
rs
rd
rs→rd
ADCrs,rd
1001
rs
rd
rs+rd+cy→rd
SBCrs,rd
1010
rs
rd
rs-rd-cy→rd
LDAM,D,rd
00
M
00
rd
E→rs
D
STAM,D,rd
00
M
01
RD
rd→E
D
JMPM,D
00
M
10
00
E→PC
D
BZCM,D
00
M
11
00
当CY=1或Z=1时,E→PC
D
INCrd
1011
rd
rd
rd+1→rd
ANDrs,rd
1100
rs
rd
rs∧rd→rd
COMrd
1101
rd
rd
rd→rd
RRCrs,rd
1110
rs
rd
RLCrs,rd
1111
rs
rd
INaddr,rd
0100
01
rd
addr→rd
OUTarrd,rd
0101
10
rd
rd→addr
HALT
0110
00
00
停机
四、总体设计:
本模型机的数据通路框图如图9-1,根据机器指令系统要求,设计微程序流程图及确定微地址,如图9-2.
按照系统建议的伪指令格式,参照微指令流程图,将每条微指令代码化,译成二进制代码表,并将二进制代码表转换为联机操时的十六进制格式文件
121110
987
6
5
4
3
2
1
B
C
μA5
μA4
μA3
μA2
μA1
μA0
A字段
I5
I4
I3
选择
0
0
0
0
0
1
LDR1
0
1
0
LDDR1
0
1
1
LDDR2
1
0
0
LDIR
1
0
1
LOAD
1
1
0
LDAR
B字段
12
11
10
选择
0
0
0
0
0
1
RS-B
0
1
0
RD-B
0
1
1
RI-B
1
0
0
299-B
1
0
1
ALU-B
1
1
0
PC-B
C字段
9
8
7
选择
0
0
0
0
0
1
P
(1)
0
1
0
P
(2)
0
1
1
P(3)
1
0
0
P(4)
1
0
1
AR
1
1
0
LDPC
实验程序如下:
$P0044
$P0104
$P0260
$P0345
$P0405
$P0561
$P0672
$P0706
$P0862
$P0970
$P0A44
$P0B04
$P0C81
$P0D71
$P0E45
$P0F05
$P1070
$P1101
$P1261
$P13E5
$P140C
$P1518
$P1608
$P1722
$P1802
$P1962
$P1A00
$P1B60
$P1C01
$P1D70
$P1EE5
$P1F92
$P2006
$P2162
$P2200
$P2381
$P24E0
$P2504
$P2681
$P270C
$P282B
$P2908
$P2A11
$P2B5A
$P2C60
$M00018108
$M0101ED82
$M0200C050
$M0300A004
$M0400E0A0
$M0500E006
$M0600A007
$M0700E0A0
$M0801ED8A
$M0901ED8C
$M0A00A03B
$M0B018001
$M0C00203C
$M0D00A00E
$M0E01B60F
$M0F95EA25
$M1001ED83
$M1101ED85
$M1201ED8D
$M1301EDA6
$M14001001
$M15030401
$M16018016
$M173D9A01
$M18019201
$M1901A22A
$M1A01B22C
$M1B01A232
$M1C01A233
$M1D01A236
$M1E318237
$M1F318239
$M20009001
$M21028401
$M2205DB81
$M230180E4
$M24018001
$M2595AAA0
$M2600A027
$M2701BC28
$M2895EA29
$M2995AAA0
$M2A01B42B
$M2B959B41
$M2C01A42D
$M2D65AB6E
$M2E0D9A01
$M2F01AA30
$M300D8171
$M31959B41
$M32019A01
$M3301B435
$M3405DB81
$M35B99B41
$M360D9A01
$M37298838
$M38019801
$M3919883A
$M3A019801
$M3B070A08
$M3C068A09
实验原理:
本设计是计算两个4位原码2进制数相乘。
程序说明:
程序
助记符
说明
$P0044
INR0
输入一个4位2进制数(被乘数,这里输入03)
$P0104
STA60R0
将03从R0中存入60内存单元
$P0260
$P0345
INR1
输入一个4位2进制数(乘数,这里输入03)
$P04
STA61R1
将03从R1中存入61内存单元
$P0561
$P0672
CLRR2
R2清零
$P0706
STA62R2
将R2中的数存入62内存单元
$P0862
$P0970
CLRR0
R0清零
$P0A44
IN04R0
输入04(0100)到R0中
$P0B04
STA81R0
将04从R0中存入81内存单元
$P0C81
$P0D71
CLRR1
R1清零
$P0E45
IN00R1
输入00到R1中
$P0F05
STA70R1
将00从R1中存入70内存单元
$P1070
$P1101
LOOP1:
LDA61R1
从R1中取61内存单元的数
$P1261
$P13E5
RRCR1,R1
R1右移
$P140C
BZCLOOP2
当cy=1或z=1时跳转到18
$P1518
$P1608
JMPLOOP3
无条件跳转到22
$P1722
$P1802
LOOP2:
LDA62R2
从R2中取62内存单元的数
$P1962
$P1A00
LDA60R0
从R0中取60内存单元的数
$P1B60
$P1C01
LDA70R1
从R1中取70内存单元的数
$P1D70
$P1EE5
RRCR1,R1
R1右移
$P1F92
ADCR0,R2
R0和R2中的数相加后送R2
$P2006
STA62R2
将R2中的数存入62内存单元
$P2162
$P2200
LOOP3:
LDA81R0
从R0中取81内存单元的数
$P2381
$P24E0
RRCR0,R0
R0右移
$P2504
STA81R0
将R0中的数存81内存单元
$P2681
$P270C
BZCLOOP4
当cy=1或z=1时跳转到2B
$P282B
$P2908
JMPLOOP1
无条件跳转到11
$P2A11
$P2B5A
LOOP4:
OUTR2
输出R2
$P2C60
HALT
停机
五、实验步骤:
1.按图连接好电路
2.写程序
联机读/写程序
使用软件中的F1功能写入程序,然后用F4-LOAD功能装入机器指令格式文件写入实验箱,
3.运行程序
联机运行时,进入DEBUG调试界面,总清开关CLR(0-1)清零后,程序首地址为00H,按相应的功能键即可联机运行、调试程序。
实验结果:
输入数据:
03(被乘数),03(乘数),04(0100作为计量数),00(在后面用作cy清零使用)
最后输出结果为09结果正确。
6、心得体会:
一个星期的课程设计,终于设计出了成功的指令系统,心里有点小激动。
这次课设大部分的时间都是在了解指令和微指令。
开始的时候看书上的一些现成的指令、微指令等东西的时候都不是非常了解,读起来很费劲,最后通过询问老师,还有同学,终于弄懂了各条指令的含义和用法。
在调试过程中同样也遇到一些问题,经过不断的运行调试一步步改正从而达到正确的结果。
而且当自己完成了任务之后,还主动帮助其他有困难的同学,本来枯燥的课程设计结果却成了大家一起进步的阶梯。
我觉得,这次课程设计最主要的目的是然我们真正的了解运用并扩展课堂上的知识,并且能够真正正确的了解所有的细节,这是一种严谨而又细心的研究状态,是研究这必不可少的。
作为一个班级的一员,我们要学会跟团队合作。
这些在我们走进自己的工作岗位上时,是我们每个人都应该也是必须学会的。