基于复杂模型机两个8位二进制数乘法的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
评语: 课中检查完成的题号及题数:
成绩: 自评分:
实验报告
实验名称:基于复杂模型机两个8位二进制数乘法的实现日期:
本人信息
班级:学号:姓名:
一、实验目的:
1、综合运用所学计算机组成原理知识,设计并实现较为完整的计算机;
2、理解计算机运行的原理以及微指令架构;
3、掌握原码一位乘实现的控制流程和硬件配置。
二、实验内容:
1、根据实验指导书提供的复杂模型机电路图连接电路,并校验电路
2、装载示例程序并运行,分析理解所增加的微指令
3、根据复杂模型机现有条件设计两个8位二进制相乘的程序
三、项目要求及分析:
要求:利用上述模型机通过编写程序实现两个8位二进制数的乘法运算。
分析:
要求利用复杂模型机现有的指令系统以及硬件电路设计一段实现八位二进制数相乘的程序。因为乘法在计算机中有多种算法实现,包括整数乘、小数乘、原码乘、补码乘等等,因为此次实验并不要求给出一个完整的实用乘法程序段,故实验程序只实现两
个八位二进制整数无符号相乘运算。
采用算法如下:
采用算法如下:
乘数 A A7A6A5A4A3A2A1A0
被乘数B
乘积 C = B·A0 +2(B·A1+2(B·A2+ ……2·B·A7))))))其中Ai为0或者1,在机器中使用原码表示2*X是使X左移1位。若不采用循环模式而是直接使用指令将该算法的乘积等式直接表示出来,需要A,B,RL(结果低
位),RH(结果高位)四个通用寄存器;而若使用循环模式,则需要除A、B、RL、RH外的CX(控制循环次数以及高低位相与寄存器)和AD(取中间结果高低位)的辅助。
此次实验为了充分的接触指令系统,采用循环模式。由于复杂模型机中只有R0、R1、R2、R3四个通用寄存器,故一些原来计划使用的寄存器改为使用主存。
另外,因为低位结果相加可能进位,所以修改原微指令ADD为带进位加法。
四、具体实现:
1. 画出算法流程图
该流程图使用了以下6个寄存器CX, AD,A,B,RL,RH;其中CX作为计数以及辅助生成AD的,CX变化为
1000 0000 初始值
0000 0001
0000 0010
……
1000 0000 程序结束
AD作为被乘数的高低位划分数据, 其中被乘数B中高位对应的AD的位置1,低位置0:
0000 0000 初始值
0000 0001 CX OR AD -> AD
0000 0011
……
1111 1111
另流程图中所用6个寄存器在实现中使用MEM代替,CX,AD,A,B使用R2作RL,R3作RH,左移1位等价右移7位。
2.根据算法实现,若需修改指令系统,画出修改后的微程序流程图
3.编写修改指令系统后的二进制代码表
二进制数微代码表
地址十六进制表示高五位S3-S0 A字段B字段C字段UA5-UA0
00 00 00 01 00000 0000 000 000 000 000001
01 00 6D 43 00000 0000 110 110 101 000011
03 10 70 70 00010 0000 111 000 001 110000
04 00 24 05 00000 0000 010 010 000 000101
05 04 B2 01 00000 1001 011 001 000 000001
06 00 24 07 00000 0000 010 010 000 000111
07 01 32 01 00000 0010 011 001 000 000001
08 10 60 09 00010 0000 110 000 000 001001
09 18 30 01 00011 0000 011 000 000 000001
0A 10 60 10 00010 0000 110 000 000 010000 0B 00 00 01 00000 0000 000 000 000 000001 0C 10 30 01 00010 0000 011 000 000 000001 0D 20 06 01 00100 0000 000 011 000 000001 0E 00 53 41 00000 0000 101 001 101 000001 0F 00 00 CB 00000 0000 000 000 011 001011
10 28 04 01 00101 0000 000 010 000 000001
11 10 30 01 00010 0000 011 000 000 000001
12 06 B2 01 00000 1101 011 001 000 000001
13 00 24 14 00000 0000 010 010 000 010100
14 05 B2 01 00000 1011 011 001 000 000001
15 00 24 16 00000 0000 010 010 000 010110
16 01 B2 01 00000 0011 011 001 000 000001
17 00 24 18 00000 0000 010 010 000 011000
18 04 32 01 00000 1000 011 001 000 000001 1B 00 53 41 00000 0000 101 001 101 000001 1C 10 10 1D 00010 0000 001 000 000 011101 1D 10 60 8C 00010 0000 110 000 010 001100 1E 10 60 1F 00010 0000 110 000 000 011111 1F 10 10 20 00010 0000 001 000 000 100000 20 10 60 8C 00010 0000 110 000 010 001100
28 10 10 29 00010 0000 001 000 000 101001
29 00 28 2A 00000 0000 010 100 000 101010 2A 04 E2 2B 00000 1001 110 001 000 101011 2B 04 92 8C 00000 1001 001 001 010 001100 2C 10 10 2D 00010 0000 001 000 000 101101 2D 00 2C 2E 00000 0000 010 110 000 101110 2E 04 E2 2F 00000 1001 110 001 000 101111 2F 04 92 8C 00000 1001 001 001 010 001100
30 00 16 04 00000 0000 001 011 000 000100
31 00 16 06 00000 0000 001 011 000 000110
32 00 6D 48 00000 0000 110 110 101 001000