计算机组成原理课程设计江苏大学版Word格式.docx
《计算机组成原理课程设计江苏大学版Word格式.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计江苏大学版Word格式.docx(14页珍藏版)》请在冰点文库上搜索。
5、调试微程序。
利用调试软件“Step”按钮控制微指令单步执行,执行结果如图所示
例MOV指令的单步运行跟踪数据
6、分析微程序的执行结果,一般方法如下:
首先分析微程序执行流程是否正确,根据前面指令微流程的设计,理论上该指令微程序
的执行顺序应该是001→002→003→004→00B→00F→016→006→018→007→031→02D→
02E→000,通过调试软件的执行结果图可以看出,该指令微程序的微指令次序是正确的。
如果执行的微指令次序不正确,那就要分析原因,检查BM和NC设置是否正确、检查uAR
的各个输入信号的值是否正确,如IR、NA等。
然后分析指令的运行结果。
理论上本条测试指令执行完后,R1的值应该是0001。
通过
调试软件的执行结果图可以看出,指令执行结果是正确的。
如果结果不对,就需要进一
步分析每一条微指令。
分析的方法是针对微指令的每一条微命令,查看相应微操作前后相关
模块的数据变化是否与指令微流程一致。
下面举个例子说明如何分析每条微指令的。
图的微地址为000B(uAR=000B)的控存单元所对应的内容为2008000F,即微指
令为2008000F,所代表的微操作是:
PCoe,ARce,即PC的内容送IB、IB的内容送AR,
理论上的正确结果应该是IB=0031,AR=0031;
通过图的000B单元微指令的执行结果可
以看出,IB的数据由上一条微指令的结果0000→0031,AR的数据由上一条微指令的结果
0030→0031,说明本条微指令执行结果是正确。
从上面的分析可以看出,要想检查运行结果是否正确,关键是要清楚理论上正确的结果
是什么。
这就要求实验者对指令的微程序流程非常清楚,从而达到了理解计算机内部信息流
动过程、掌握计算机工作原理的目的。
所以实验者应重视实验数据的分析工作,否则就失去
了实验的意义。
1、测试内容:
立即数寻址、寄存器寻址
测试指令(或程序):
MOV#0001H,R1
机器码:
内存地址(H)
机器码(H)
汇编指令
0030
07610001
运行结果:
第二天取操作数微程序的设计和调试
设计并调试取操作数的微程序。
二、取操作数微流程
取目的操作数流程:
三、测试程序、数据及运行结果
格式如下:
间接寻址、寄存器寻址
MOF(0048)R1
0721004800580001
四、设计中遇到的问题及解决办法
在设计过程中开始对调试程序的运行不熟悉,不是很了解了此程序的运行。
在操作过程中,粗心导致了输入机器码的错误,或者是所在位置错误,重新输入解决了此问题。
我详细地了解了它的整个过程和对于每一步的分析和验证,对微程序设计有了更深入的了解。
第三天双操作数指令的微程序设计与调试
设计并调试运算指令的微程序。
二、双操作数指令微程序入口地址
指令助记符
指令编码
入口地址(H)
F
E
D
C
B
A
9
8
7
6
5
4
3
2
1
MOVsrc,dst
源地址码
目的地址码
031
ADDsrc,dst
032
ADDCsrc,dst
033
SUBsrc,dst
034
SUBBsrc,dst
035
CMPsrc,dst
036
ANDsrc,dst
037
ORsrc,dst
038
XORsrc,dst
039
TESTsrc,dst
03A
三、双操作数指令执行微程序
微地址(H)
微指令(H)
微命令
BM
NA
注释
007
00000800
044
指令执行入口
048
9870006F
TRoe,ADD,PSWce,SV
06F
ADD
04C
98B0006F
TRoe,ADDC,PSWce,SV
ADDC
050
98F0006F
TRoe,SUB,PSWce,SV
SUB
054
9930006F
TRoe,SUBB,PSWce,SV
SUBB
058
98C00000
TRoe,CMP,PSWce
000
CMP
05C
9970006F
TRoe,AND,PSWce,SV
AND
060
9980006F
TRoe,OR,PSWce,SV
OR
064
9A30006F
TRoe,XOR,PSWce,SV
XOR
068
TRoe,AND,PSWce
TEST
06F
00000E70
NOP
070
回送
四、测试程序、数据及运行结果
立即寻址,直接寻址,间接寻址,寄存器寻址,寄存器间接寻址
测试程序:
MOV(0048H)R1
TEST0048HR1
AND#0078H(R0)
ADDR1R0
072100480001
0048
2B480001
TEST0048HR1
0078
1F70FFF00000
AND#0078H(R0)
0820
ADDR1R0
五、设计中遇到的问题及解决办法
调试双操作数指令执行微程序,先要写出双操作数指令执行微程序的微地址,微命令,然后写微程序,最后上机调试,判断是否正确,检查微程序运行结果是否正确是一项稍繁琐的事情,需要检查每步的寄存器、标志位、总线上的地址和数据。
但经过几天的熟悉,我们已慢慢熟悉掌握。
第四天单操作数运算和移位指令的微程序设计与调试
完成单操作数运算指令INC、DEC、NOT和7条移位指令微程序的设计。
二、单操作数运算和移位指令微程序入口地址
INC
071
SAR
061
DEC
072
SHL
062
NOT
073
SHR
063
ROL
ROR
065
RCL
066
RCR
067
三、单操作数运算和移位指令微程序的设计
092
1810006F
094
1820006F
096
098
09A
09C
09E
0A4
1A70006F
INC,PSWce,SV
0A8
1AB0006F
DEC,PSWce,SV
0AC
19F0006F
NOT,PSWce,SV
Soe,GRSce
存入寄存器
Soe,DRce
存入dr
00052000
DRoe’,ARoe’,WR
存入贮存
1.测试内容:
间接寻址
SHL(0010)H
00590010
微指令的执行次序为:
001—>
002—>
003—>
006—01B—>
01F—>
022—>
023—>
024—>
025—>
026—>
007—>
62—>
02F,参照取指令、取操作数和SHL指令执行微流程分析,所执行的微指令的次序是正确的。
2.测试内容:
相对寻址
DEC(0001)
机器码:
02580001
DEC(0001)
运行结果及分析:
第五天子程序调用、堆栈和转移指令微程序设计与调试
完成CALL、RET、PUSH、POP和9条转移指令的微程序的设计。
二、PUSH、POP、CALL、RET指令微程序的设计
PUSH
0C0
F40000C1
SPoe,Ace
0C1
堆栈地址存入A
02B000C2
DEC,SV
0C2
地址减1,输出
7C0800C3
Soe,SPce,ARce
0C3
地址存入堆栈和AR中
ARoe'
,DRoe'
,WR
地址写入主存
POP
0C8
B00000C9
ARoe,TRce
0C9
AR内容存入TR
F40800CA
SPoe,Ace,ARce
0CA
SP内容存入A和AR
027610CB
,RD,DRce'
,INC,SV
0CB
800800CC
TRoe,ARce
0CC
TR内容存入AR
7C052000
Soe,SPce,ARoe'
堆栈内容写入新地址
CALL
0D0
F40000D1
0D1
B2B000D2
DEC,SV,ARoe,TRce
0D2
地址减1,AR内容存入TR
7C0800D3
Soe,ARce,SPce
0D3
地址存入AR,SP
200300D4
PCoe,DRce
0D4
PC内容存入DR
,WR,TRoe,PCce
PC个数写入内存,TR内容存入PC
RET
03C
F408003D
03D
堆栈地址写入A和AR
0276103F
INC,SV,ARoe'
03F
地址加1,同时读数
C4000040
DRoe,PCce
040
DR值存入PC
7C000000
Soe,SPce
堆栈存入新地址
直接寻址
CALL000AH
035A000A
首先,微指令的执行次序为:
07A—>
047—>
048—>
049—>
04A—>
000,参照取指令、取操作数和CALL指令执行微流程分析,所执行的微指令的次序是正确的。
2、测试内容:
JMP+2
02180002
3.测试程序:
PUSH0010HPOP0012H//0010存放AAAA
机械码:
031A0010033A0012
PUSH0010HPOP0012H
第六天检查指令
用综合应用程序测试JU-C1十六位微程序控制计算机。
二、测试程序、数据及运行结果
MOV#0031H,0080H077A00310080
PUSH0080H031A0080
CALL0060H035A0060
SHL0080H005A0080
总结
这次计算机组成原理简单微程序的设计,通过实验将实际问题和课本内容紧密的联系在一起,将知识运用到了实际之中,更加深入地掌握了微程序设计。
课本的知识是死的,只有经过自己的动手实践调试,才能更好的掌握知识
我意识到了上机实践的重要性,因为在进行调试时,因此在对于一些错误的处理还是很生疏,这就暴露了平时不注重实践的弊端。
既然是程序设计,就应该多动手,当然不仅仅是纸上谈兵,还应注重多上机操作。
还有就是,在执行指令的过程中出现的错误,我还不能准确的定位出到底是哪地方面出现了错误,往往需要询问老师或者是思考很久之后才能找到原因。
对于这点,应该是对于整个过程还不够了解的原因,因此在以后的学习中还应该加强对知识的认识程度。
刚开始时,由于下载器件的问题保存微程序时中间会有一部分突然就没了,最开始还没在意,就是总发现验证时总出错,后来才知道是下载的微程序有问题,当时真的是非常的郁闷,后来在经过一翻重新检查后,终于把微程序完整的保存好了。
在完成整个课设后,我对取操作数的过程,MOV指令,运算类指令,CPU硬件的基本设计,转移指令,移位指令,堆栈类指令以及中断系统都有了更加深刻的理解,因为是通过实践的缘故,能够将抽象化的过程更加形象化,便于理解,使我明确了各种指令的执行过程。
我认为整个课设的设计还是很合理的,每天都有每天的任务,任务也很明确,每天都可以充分利用,后一天的内容与前一天的内容紧密相连,难度也是逐渐加深,这个循序渐进的过程更容易让我们接受。