当前位置:首页 > 计算机组成原理指令系统设计
安徽理工大学课程设计(论文)
2.系统设计
2.1 指令、微指令系统设计
1.打开CPTH组成原理实验软件,选择[文件|新建指令系统/微程序],清除原来的指令/微程序系统,观察软件下方的“指令集”窗口,如图2-1所示,所有指令码都“未使用”。
图2-1 指令集窗口
2.选择第二行,即“机器码1”为0000 01XX行,在下方的“助记符”栏填入数据装载功能的指令 助记符“IN”,按“修改”按钮确认。
3.选择第三行,即“机器码1”为0000 10XX行,在下方的“助记符”栏填入指令助记符“MOV”,在“操作码1”栏选择“R1”,表示第一操作数为立即数,在“操作数2”栏选择“A”,表示第二操作数为累加器A。按“修改”按钮确认。
4.选择第四行,即“机器码1”为0000 11XX行,在下方的“助记符”栏填入指令助记符“MOV”,在“操作码1”栏选择“A”, 表示第一操作数为累加器A,在“操作数2”栏选择“R”,表示第二操作数为立即数。按“修改”按钮确认。
5.选择第五行,即“机器码1”为000100XX行,在下方的“助记符”栏填入指令助记符“CPL”,在“操作码1”栏选择“A”,表示第一操作数为累加器A取反,没有操作数2。按“修改”按钮确认。
6. 选择第六行,即“机器码1”为000101XX行,在下方的“助记符”栏填入指令助记符“AND”,在“操作码1”栏选择“A”, 表示第一操作数为累加器A,在“操作数2”栏选择“R”,表示第二操作数为立即数。按“修改”按钮确认。
7. 选择第七行,即“机器码1”为000110XX行,在下方的“助记符”栏填入指令助记符“OR”,在“操作码1”栏选择“A”, 表示第一操作数为累加器A,在“操作数2”栏选择“R”,表示第二操作数为立即数。按“修改”按钮确认。
8. 选择第五行,即“机器码1”为0001 00XX行,在下方的“助记符”栏填入输出数据功能的指令助记符“OUT”,由于此指令隐含指定了将累加器A输出到输出寄存器,所以不用选择“操作码1”和“操作数2”,也可在“操作码1”栏选择“A”,按“修改”按钮确认,结果如图2-2所示。
-4-
安徽理工大学课程设计(论文)
图2-2 指令集窗口结果
2.2 模型机的微指令设计
(1)微指令的24位控制位如下:
XRD EMWR EMRD PCOE EMEN IREN EINT ELP MAREN MARDE OUTEN STEN RRD RWR CN FEN X2 X1 X0 WEN AEN S2 S1 S0
(2)设计出的微指令集如图2-3、2-4所示:
图2-3 微指令集1
-5-
安徽理工大学课程设计(论文)
图2-4 微指令集2
2.3 异或程序设计
程序设计思路:有等式
,则有程序流程图如图2-5:
开始 先后输入两个数 第一个数存入R1中 第二个数存入R0中 将R0取反,再和R1与的结果存入R2 将R1取反,再和R0与结果存入A 将A和R2或的结果存入A 输出A
图2-5 流程图
-6-
安徽理工大学课程设计(论文)
3.系统实现
3.1 程序编写与分析
按照系统分析中得到的指令集,在DJ-CPT816实验软件中新建指令系统,生成.mac文件和.mic文件。在DJ-CPT816实验软件中新建.asm文件,输入程序: IN //准备输入第一个二进制数
MOV R1,A //IN //MOV R0,A //CPL A //AND A,R1 //MOV R2,A //MOV A,R1 //CPL A //AND A,R0 //OR A,R2 //OUT //END
调试窗口如图3-1所示。
输入第一个二进制数到寄存器R1 准备输入第二个二进制数 输入第二个二进制数到寄存器R0 对累加器A里面的值取反
将A和R1与的结果放到累加器A中 将累加器A里的值存入R2 将R1中的值存到累加器A中 对累加器A里面的值取反
将A和R0与的结果放到累加器A中 将A和R2或的结果放到累加器A中 将输出A的值
图3-1 调试窗口
-7-
共分享92篇相关文档