简单模型机的组成与程序运行计算机组成原理实验报告文档格式.docx
《简单模型机的组成与程序运行计算机组成原理实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《简单模型机的组成与程序运行计算机组成原理实验报告文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
R0->
[0EH],直接寻址
LDA0FH,R0;
0FH]->
R0,直接寻址
LOP:
DECR0;
R0-1->
R0
BZCEXIT;
当FC或FZ为1时,转到EXIT
JMPLOP
EXIT:
OUT0EH,R0;
[0EH]->
LED,直接寻址
0DH、0EH、0FH单元内容分别为03H、04H、02H。
2设计设备
PC机一台,TD-CMA实验系统一套。
3设计原理和方法
3.1设计原理
3.1.1数据格式:
本实验计算机采用定点补码表示法表示数据,字长为8位,其格式如下:
7
6543210
符号
尾数
其中第七位为符号位,数值表示范围是:
-1≤X<1
3.1.2指令格式
所有单字节指令(SUB等)格式如下:
7654
32
10
OP-CODE
RS
RD
其中OP-CODE为操作码,RS为源寄存器,RD为目的寄存器,并规定:
RS或RD
选定的寄存器
00
01
10
11
R1
R2
R3
本实验的输入IN指令和OUT指令采用单字节指令,其格式如下:
7654
(1)
32
(1)
10
(1)
本实验中的两个访问指令,即存数STA,一条转移指令,即无条件转移指令JMP,指令格式如下:
7-0
(2)
M
D
其中OP-CODE为操作码,RD为目的寄存器地址(STA、LDA指令使用),D为位移量(正负均可),M为寻址模式,其定义如下:
寻址模式M
有效地址E
说明
E=D
E=(D)
E=(RI)+D
E=(PC)+D
直接寻址
间接寻址
RI变址寻址
相对寻址
3.1.3指令系统
本实验共有10条基本指令,其中算术指令有2条(DEC、SUB),访问内存指令和程序控制指令7条,输入指令1条。
3.2按微指令格式,参照微程序流程图将每条微指令代码化,译成二进制微代码。
系统涉及到的微程序流程见图3-1-4所示,当拟定“取指”微指令时,该微指令的判别测试
字段为P<
1>
测试。
由于“取指”微指令是所有微程序都使用的公用微指令,因此P<
的测试结果出现多路分支。
微程序流程图3-1-4
微指令字长共24位,格式如下:
23
22
21
20
19
18-15
14-12
11-9
8-6
5-0
M23
M22
WR
IOM
S3-S0
A字段
B字段
C字段
MA5-MA0
141312
选择
11109
876
000
NOP
001
LDA
ALU-B
P
(1)
010
LDB
R0_B
保留
011
LDR0
100
101
LOAD
LDPC
110
LDAR
PC_B
P(4)
111
LDIR
运算器逻辑功能表:
运算类型
S3S2S1S0
CN
功能
逻辑运算
0000
0001
0010
0011
0100
x
F=A(直通)
F=B(直通)
F=AB(直通)
F=/AA+B(直通)
F=/A(直通)
移位运算
0101
0110
0111
1
F=A不带进位循环右移B(取低3位)位(FZ)
F=A逻辑右移一位(FZ)
F=A带进位循环右移一位(FC,FZ)
F=A逻辑左移一位(FZ)
F=A带进位循环左移一位(FC,FZ)
算术运算
1000
1001
1010
1011
1100
1101
1110
1111
置FC=CN(FC)
F=A加B(FC,FZ)
F=A加B加FC(FC,FZ)
F=A减B(FC,FZ)
F=A减1(FC,FZ)
F=A加1(FC,FZ)
(保留)
4代码清单
4.1机器指令代码
;
//**StartOfMicroControllerData**//
//**其中地址和微指令均为十六进制**//
//地址微指令操作***********//
$P0020;
START:
INR0,00H从IN单元读入数据送R0
$P0100
$P0284;
SUBR0,R1R0-R1->
$P03A0;
LLR0,R0R0LEFTMOVE->
$p04D0;
STA[0EH],R0R0->
E
$P052E
$P06C0;
LAD000FR0
$P072F
$P0870;
DECR0
$P09F0;
BZC11,02H
$P0A0D
$P0BE0;
JMP00,08H
$P0C08
$P0DC0;
OUTOEH,R0
$P0E2E
$P0F30;
$P1040;
$P1150;
$P1250;
$P1350;
$P2F02;
//*****EndOfMainMemoryData*****//
4.2化简后的微程序代码
$M00000001;
NOP
$M01006D43;
PC->
AR,PC加1
$M03107070;
MEM->
IR,P<
$M04002405;
RS->
B
$M0504B201;
A加B->
RD
$M06002407;
$M07013201;
A与B->
$M08106009;
AR
$M09183001;
IO->
$M0A106010;
$M0B000001;
$M0C103001;
$M0D200601;
RD->
MEM
$M0E005341;
A->
PC
$M0F0000CB;
NOP,P<
3>
$M10280401;
IO
$M11103001;
$M12063201;
A加1->
$M13002414;
$M1405B201;
A减B->
$M15002416;
$M1601B201;
A或B->
$M17002418;
$M1803B201;
A右环移->
$M1B005341;
PC
//**EndOfMicroControllerData**//
5设计运行结果分析
5.1出错情况:
IN的初始值为00,所以将00赋值给R0,寄存器B为随机数,与实验要求不符;
逻辑左移没有实现,所得结果不正确;
JMP指令的跳转没有实现,微指令没问题;
5.2出错原因:
忘记给地址0DH赋值;
微指令流程图有问题,经过改正运行通过;
经过检查和同学的讨论及老师的指导,有了改善,但仍需调整。
5.3运行结果例子:
实现指令INR0,00H的截屏如下:
初始状态:
6设计小结(即收获和体会)
通过本次课程设计了解了简单模型机的结构及其原理,通过给定的机器指令,基于计算机组成及工作原理的基础上,确定了模型机的数据通路结构,根据机器指令和微指令的译码情况,设计了机器指令格式和微指令格式。
虽然最后的结果不是很理想,未能完全将其功能实现,但对简单模型机有了一定的了解。
通过本次课程设计体会到团队合作的重要性,在做实验的过程中细心和耐心也是非常重要的。
还让我相信,只要自己在每一次实践中都能仔细思考,课程设计其实都不会很难,关键在于自己能不能认真思考,能不能亲自动手做实验,而不是想着其他人的劳动果实,其次你还要多操作,只有多操作才能从中发现问题,才能及时向老师和同学请教,解决问题,从而更好的掌握书本中知识。
还有通过这次实践也让我懂得了:
学校安排课程设计目的不在于你做了多少,不在于你做得好不好,关键在于你能否认真去对待,在于你能否通过这次设计对课本上知识有了更深刻的认识,在于能否从中学到书本上学不到的知识。
因此,我会认真地对待我的每一次实验。
最后感谢老师的指导。
附录
实验电路连接图: