计算机组成原理课程设计 1Word文档下载推荐.docx
《计算机组成原理课程设计 1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计 1Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
002
ARoe’,RD,DRce’,PCinc
CC000003
6
3
003
DRoe,IRce
00000404
004
NOP
②.取源操作数为立即数的微程序
00000A08
5
008
005
4
006
GRSoe,TRce
009
015
GRSoe,ARce
00A
010
00B
012
00C
013
00D
017
00E
2008001A
01A
00F
2008001D
01D
02700011
9
011
INC,SVce
Soe,GRSce
00069016
016
ARoe’,RD,DRCE’,PCinc
00069014
014
C0080015
DRoe,ARce
00061016
ARoe’,RD,DRce’
D0000006
DRoe,TRce
00069018
018
C0080019
019
00061014
0006901B
01B
D400001C
01C
DRoe,Ace
020
GRSoe,ADD,SVce
0006901E
01E
D400001F
01F
PCoe,ADD,SVce
Soe,ARce
③.取目的操作数为寄存器寻址的微程序
00000A28
028
007
GRSoe,Ace
029
035
02A
030
GRSoe,ARce,Ace
02B
00000007
02C
033
02D
037
02E
2008003A
03A
02F
2008003D
03D
02700031
031
032
00069034
034
C0080035
00061036
036
D4000007
00069038
038
C0080039
039
00061034
0006903B
03B
D400003C
03C
0006903E
03E
D400003F
03F
④.单操作数的微程序
其中,运算指令如下:
指令助记符
入口地址
Inc
071H
Dec
072H
Not
073H
补全执行结果存入目的操作数的微程序
4、输入调机程序
INCFF02H
DEC(0040H)
JMP0030H
5、调试微程序。
运行前的截图如下:
运行后的截图如下:
结果显示,LED输出寄存器自加成功,间接寻址的自减也正确
第二天:
双操作数指令的微程序设计与调试
完成双操作数指令的微程序设计和验证;
取源操作数阶段和取目的操作数阶段相关的寻址方式的微程序设计和验证
二、运算指令微程序入口地址
指令
微程序入口地址
助记符
操作码
二进制
十六进制
MOC
0001B
001000001B
041H
ADD
0010B
001000010B
042H
ADDC
0011B
001000011B
043H
SUB
0100B
001000100B
044H
SUBB
0101B
001000101B
045H
AND
0110B
001000110B
046H
OR
0111B
001000111B
047H
XOR
1000B
001001000B
048H
CMP
1001B
001001001B
049H
TEST
1010B
001001010B
04AH
三、双操作指令微程序
四、测试程序、数据及运行结果
测试内容:
MOV#0010H,R1
MOV#0020H,R0
SUB#FFFFH,R1
ADD0010H,(R0)
ADDC#FFFF,(0010H)
运行结果:
首先将数值移动进寄存器中:
然后进行加减法的运算:
五、设计中遇到的问题及解决办法
调试双操作数指令执行微程序,先要写出双操作数指令执行微程序的微地址,微命令,然后写微程序,最后上机调试,判断是否正确,检查微程序运行结果是否正确是一项稍繁琐的事情,需要检查每步的寄存器、标志位、总线上的地址和数据。
但经过几天的熟悉,我们已慢慢熟悉掌握。
第三天:
条件转移指令的微程序设计与调试
为CPU扩充转移指令,完成转移指令的微程序设计与调试
二、设计任务
(1)根据第二章介绍的微地址形成方法,算出条件转移指令的微程序入口地址
JC
068H
JNC
069H
JO
06AH
JNO
06BH
JZ
06CH
JNZ
06DH
JS
06EH
JNS
06FH
JMP
070H
(2)转移指令的微程序设计
第一天已经完成所有单操作入口的设计,其中068h-070h是转移指令的微程序
补全其它操作:
HALT:
058H
NOP:
059H
三、测试程序、数据及运行结果
测试程序:
0030H:
MOV#0001H,R1
CMP#0002H,R1
JC003A
MOV#0001H,FF01H
HALT
003AH:
MOV#0080H,FF01H
无跳转:
有跳转:
运行前
运行后:
四、设计中遇到的问题和解决方法
由于不是很理解转移指令的操作方式,导致了设计测试程序出现问题,后来经过同学的指正,得出了以上三图
第四天:
移位指令的微程序设计与调试
为CPU扩充移位指令,完成移位指令的微程序设计与调试
二、单操作数运算和移位指令微程序入口地址
入口地址:
入口地址(H)
SAR
061
SHL
062
SHR
063
ROL
064
ROR
065
RCL
066
RCR
067
三、单操作数和移位指令微程序设计
微程序:
移位运算微程序
0030:
1601MOV#0001H,R0
0031:
0001
0032:
00C0SHRR0
0033:
0238JCFFFDH(PC)
0034:
FFFD
0035:
0000HALT
运行前:
由于操作设计简单,依照参考书和指导手册,并没有什么问题,同时我了解了移位类指令的作用方式,位移指令对二进制进行操作,把目的操作数Dst按照与操作码OP对应的规则移动一位,保存移位结果到Dst,并保存移位产生的CF到PSW中。
第五天:
子程序调用、堆栈微程序、中断系统的设计与调试
完成CALL、RET、PUSH、POP、RETI、EI、DI指令的微程序的设计。
二、PUSH、POP、CALL、RET指令微程序的设计
PUSH
078
0030009B
09B
SVce
6003009C
A
09C
Soe,DRce
F400009D
7
09D
SPoe,Ace
02B0009E
09E
DEC,SVce
7C080052
052
Soe,ARce,SPce
POP
CALL
微程序:
RET
RETI
EI(05CH)、DI(05DH)
中断隐指令
测试程序1:
1600MOV#0041H,R0
0041
0060PUSHR0
0620PUSH0040H
0040
0648POP(R0)
0036:
0641POPR1
运行结果及分析:
测试程序2:
1600MOV#0100H,0000H
0100
0000
0004INC0040H
0004EI
0460INC0041H
0037:
0410
0038:
04A0DEC0043H
0039:
0043
003A:
1A01MOV(0040H),R1
003B:
0040
003C:
HALT
……:
0060:
1820MOVFF0AH,FF02H
0061:
FF0A
0062:
FF02
0063:
A260TEST(R1),0040H
0064:
0065:
0003RETI
0100:
1620MOV#0060H,0001H
0101:
0060
0102:
0001
0103:
1820MOVFF08H,FF02H
0104:
FF08
0105:
0106:
0004EI
0107:
3820ADDC0040H,0043H
0108:
0040
0109:
0043
010A:
4820SUB0040H,0041H
010B:
010C:
0041
010D:
0460INC0040H
010E:
0044
010F:
0003RETI
结果分析:
执行INC0040H
按键请求中断,跳转到中断向量地址0100H,定义按键1为中断请求键,使红灯亮
执行到0106单元再次跳转到0060H,红灯亮,执行TEST操作,中断返回
继续执行0107的ADDC操作,再进行SUB和INC的操作,中断返回
回到0038H执行DEC操作,接下来进行MOV操作,停机
运行成功
四、设计中遇到的问题及解决办法
写微指令时遇到许多问题,刚开始没弄明白各条指令的意思,然后经过同学的讲解,弄懂了各个指令的意思,通过参考书籍,成功的写出了各个指令的微程序。
但是自己写出的调试程序执行后总会无限循环某几个指令,后来通过询问同学,获得了上面的调试程序,并且理解了这样做的意义,最终运行成功。
第六天检查和考核
一、设计目标
1.将学号后两位保存
2.对学号判断:
小于30则为一班,同时将1压栈,红灯亮;
大于等于30则为二班,同时将2压栈,绿灯亮
二、测试程序、数据及运行结果
0030:
1604;
MOV#000BH,R4
0031:
000B;
0032:
MOV#001FH,R3
001F;
0034:
MOV#0001H,R1
0035:
0001;
0036:
MOV#0002H,R2
0037:
0002;
0038:
9604;
CMPR3,R4
0039:
0260;
JNC0040H
003A:
0040;
003B:
0620;
PUSHR2
003C:
1620;
MOVR1,FF01H
003D:
FF01;
003E:
0000;
0040:
PUSHR1
0041:
MOVR1,FF02H
0042:
FF02;
0043:
运行结果正确,但程序过于简洁
总结:
这次关于微程序控制计算机微程序的课程设计,我受益匪浅,通过实验将实际问题和课本内容紧密的联系在一起,将知识运用到了实际之中,更加深入地掌握了微程序设计。
实验过程中按照老师的计划,每天完成一定的量,使我们能够更加清晰的了解计算机内部组成以及数据通路,并且对实例化的语句有所了解,通过自己编写的程序能够实现运算、转移、移位等功能,让我进一步加深了对微程序各种功能的理解。
实验中我们利用调试软件运行自己设计的程序,对自己的程序产生的错误进行改正,这使我们对调试软件的工作方式及程序的设计有了进一步的掌握。
在每天的设计过程中我也遇到了很多问题,但是以前在学习中没有发现的。
为此,我在通过仔细的研究课本及向老师和同学提问,拓宽了自己的知识面。
同时也深感实践对于我们这门学科的重要性。
同时,在经过老师的检查后发现自己在前面的实验中有些疏忽的问题,为此,在最后的两天时间里,对其进行了相应的修改,最后得以完美的测试结果。
另一方面,通过本次课程设计能够联系之前的学习内容,发现自己在理解的基础上,实践能力得到了很大的提升。
同时,也意识到自己存在的不足,在今后的学习中,一定要认真对待,学会多和同学交流,解决自身的知识盲点,让自己的学习能力得到强化。