基于复杂模型机两个8位二进制数乘法的实现.docx
- 文档编号:3407119
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:14
- 大小:52.15KB
基于复杂模型机两个8位二进制数乘法的实现.docx
《基于复杂模型机两个8位二进制数乘法的实现.docx》由会员分享,可在线阅读,更多相关《基于复杂模型机两个8位二进制数乘法的实现.docx(14页珍藏版)》请在冰豆网上搜索。
基于复杂模型机两个8位二进制数乘法的实现
评语:
课中检查完成的题号及题数:
成绩:
自评分:
实验报告
实验名称:
基于复杂模型机两个8位二进制数乘法的实现日期:
本人信息
班级:
学号:
姓名:
实验目的:
1、综合运用所学计算机组成原理知识,设计并实现较为完整的计算机;
2、理解计算机运行的原理以及微指令架构;
3、掌握原码一位乘实现的控制流程和硬件配置。
、实验内容:
1、根据实验指导书提供的复杂模型机电路图连接电路,并校验电路
2、装载示例程序并运行,分析理解所增加的微指令
3、根据复杂模型机现有条件设计两个8位二进制相乘的程序
三、项目要求及分析:
要求:
利用上述模型机通过编写程序实现两个8位二进制数的乘法运算。
分析:
要求利用复杂模型机现有的指令系统以及硬件电路设计一段实现八位二进制数相乘的程序。
因为乘法在计算机中有多种算法实现,包括整数乘、小数乘、原码乘、补码乘等等,因为此次实验并不要求给出一个完整的实用乘法程序段,故实验程序只实现两个八位二进制整数无符号相乘运算。
采用算法如下:
采用算法如下:
乘数AA7A6A5A4A3A2A1A0
被乘数B
乘积C=B•AO+2(B•A1+2(B•A2+……2•B•A7))))))
其中Ai为0或者1,在机器中使用原码表示2*X是使X左移1位。
若不采用循环模式而是直接使用指令将该算法的乘积等式直接表示出来,需要A,B,RL(结果低位),RH
(结果高位)四个通用寄存器;而若使用循环模式,则需要除A、BRLR申卜的CX(控制循环次数以及高低位相与寄存器)和AD(取中间结果高低位)的辅助。
此次实验为了充分的接触指令系统,采用循环模式。
由于复杂模型机中只有R0、R1、R2R3四个通用寄存器,故一些原来计划使用的寄存器改为使用主存。
另外,因为低位结果相加可能进位,所以修改原微指令AD为带进位加法。
四、具体实现:
1.画出算法流程图
AD作为被乘数的高低位划分数据,其中被乘数B中高位对应的AD的位置1,低位置0:
00000000
初始值
00000001
CXORAD->AD
00000011
11111111
另流程图中所用6个寄存器在实现中使用MEM弋替,CX,AD,A,B使用R2作RL,R3作RH左移1位等价右移7位。
2.根据算法实现,若需修改指令系统,画出修改后的微程序流程图
3.编写修改指令系统后的二进制代码表
二进制数微代码表
地址
十六进制表示
高五位
S3-S0
A字段
B字段
C字段
UA5-UA0
00
000001
00000
0000
000
000
000
000001
01
006D43
00000
0000
110
110
101
000011
03
107070
00010
0000
111
000
001
110000
04
002405
00000
0000
010
010
000
000101
05
04B201
00000
1001
011
001
000
000001
06
002407
00000
0000
010
010
000
000111
07
013201
00000
0010
011
001
000
000001
08
106009
00010
0000
110
000
000
001001
09
183001
00011
0000
011
000
000
000001
0A
106010
00010
0000
110
000
000
010000
0B
000001
00000
0000
000
000
000
000001
0C
103001
00010
0000
011
000
000
000001
0D
200601
00100
0000
000
011
000
000001
0E
005341
00000
0000
101
001
101
000001
0F
0000CB
00000
0000
000
000
011
001011
10
280401
00101
0000
000
010
000
000001
11
103001
00010
0000
011
000
000
000001
12
06B201
00000
1101
011
001
000
000001
13
002414
00000
0000
010
010
000
010100
14
05B201
00000
1011
011
001
000
000001
15
002416
00000
0000
010
010
000
010110
16
01B201
00000
0011
011
001
000
000001
17
002418
00000
0000
010
010
000
011000
18
043201
00000
1000
011
001
000
000001
1B
005341
00000
0000
101
001
101
000001
1C
10101D
00010
0000
001
000
000
011101
1D
10608C
00010
0000
110
000
010
001100
1E
10601F
00010
0000
110
000
000
011111
1F
101020
00010
0000
001
000
000
100000
20
10608C
00010
0000
110
000
010
001100
28
101029
00010
0000
001
000
000
101001
29
00282A
00000
0000
010
100
000
101010
2A
04E22B
00000
1001
110
001
000
101011
2B
04928C
00000
1001
001
001
010
001100
2C
10102D
00010
0000
001
000
000
101101
2D
002C2E
00000
0000
010
110
000
101110
2E
04E22F
00000
1001
110
001
000
101111
2F
04928C
00000
1001
001
001
010
001100
30
001604
00000
0000
001
011
000
000100
31
001606
00000
0000
001
011
000
000110
32
006D48
00000
0000
110
110
101
001000
33
006D4A
00000
0000
110
110
101
001010
34
003401
00000
0000
011
010
000
000001
35
000035
00000
0000
000
000
000
110101
36
006D51
00000
0000
110
110
101
010001
37
001612
00000
0000
001
011
000
010010
38
001613
00000
0000
001
011
000
010011
39
001615
00000
0000
001
011
000
010101
3A
001617
00000
0000
001
011
000
010111
3B
000001
00000
0000
000
000
000
000001
3C
006D5C
00000
0000
110
110
101
011100
3D
006D5E
00000
0000
110
110
101
011110
3E
006D68
00000
0000
110
110
101
101000
3F
006D6C
00000
0000
110
110
101
101100
地址
十六进制表示
高五位
S3-S0
A字段
B字段
C字段
UA5-UA0
4.编写微程序两个8位二进制数的乘法运算程序如下:
;机器指令
$P0020;INPUTTOR0
$P0100
$P0222;INPUTTOR2
$P0300
$P0461;SETR1TO00
$P0500
$P0663;SETR3TO00
$P0700
$P0863;SETR3TOF8
$P09F8
$P0AD3;STORER3TO80ASATAG
$P0B80
;循环主体
$P0C63;SETR3TO01
$P0D01
$P0E1B;ANDR2,R3
$P0FF0;BZCTO12
$P1012
$P1101;ADDR0,R1
$P1263;SETR3TO01
$P1301
$P14AD;RRR3,R1
$P15AE;RRR3,R2
$P1663;SETR3TO7F
$P177F
$P181E;ANDR3,R2
$P1963;SETR3TO80
$P1A80
$P1B17;ANDR1,R3
$P1C9E;ORR3,R2
$P1D63;SETR3TO01
$P1E01
$P1FAF;RRR3,R3JUSTTOMAKEFZNOTEQUALONETHENBZCDEPENDSONFC
$P20F0;BZCTO40
$P2140
$P2263;SETR3TO7F
$P237F
$P241D;ANDR3,R1TOMAKETHEHBOFR1AS0
$P2563;SETR3TO01
$P2601
$P27AF;RRR3,R3JUSTTO...
$P28C3;LAD80TOR3
$P2980
$P2A73;R3++
$P2BF0;BZCTOTHEENDWHICHIS90
$P2C90
$P2DD3;STAR3TO80
$P2E80
$P2FE0;JMPTOTHEENTRANCEOFTHECYCLE$P300C
;条件转移指令分支
$P4063;SETR3TO80
$P4180
$P429D;ORR3,R1TOMAKETHEHBOFR1AS1
$P43E0;JMPTO25
$P4425
;程序结尾
$P9034;OUTPUTR1
$P9140
$P9238;OUTPUTR2
$P9340
$P9450;STOP
;微指令
;//**StartOfMicroControllerData**//
$M00000001;NOP
$M01006D43;PC->AR,PC加1
$M03107070;MEM->IR,P<1>
$M04002405$M0504B201$M06002407$M07013201$M08106009$M09183001$M0A106010$M0B000001$M0C103001$M0D200601$M0E005341$M0F0000CB$M10280401$M11103001$M1206B201$M13002414$M1405B201$M15002416$M1601B201$M17002418$M18043201$M1B005341$M1C10101D$M1D10608C$M1E10601F$M1F101020$M2010608C$M28101029$M2900282A$M2A04E22B$M2B04928C$M2C10102D$M2D002C2E$M2E04E22F$M2F04928C
;RS->B
;A加B->RD
;RS->B
;A与B->RD
;MEM->AR
;IO->RD
;MEM->AR
;NOP
;MEM->RD
;RD->MEM
;A->PC
;NOP,P<3>
;RS->IO
;MEM->RD
;A加1->RD
;RS->B
;A减B->RD
;RS->B
;A或B->RD
;RS->B
;A右环移->RD
;A->PC
;MEM->A
;MEM->AR,P<2>
;MEM->AR
;MEM->A
;MEM->AR,P<2>
;MEM->A
;RI->B
;A加B->AR
;A加B->A,P<2>
;MEM->A
;PC->B
;A加B->AR
;A加B->A,P<2>
$M30001604
;RD->A
$M31001606
;RD->A
$M32006D48
;PC->AR,PC
加1
$M33006D4A
;PC->AR,PC
加1
$M34003401
;RS->RD
$M35000035
;NOP
$M36006D51
;PC->AR,PC
加1
$M37001612
;RD->A
$M38001613
;RD->A
$M39001615
;RD->A
$M3A001617
;RD->A
$M3B000001
;NOP
$M3C006D5C
;PC->AR,PC
加1
$M3D006D5E
;PC->AR,PC
加1
$M3E006D68
;PC->AR,PC
加1
$M3F006D6C
;PC->AR,PC
加1
;//**EndOfMicroControllerData**//
5.编写机器指令验证
;机器指令
$P0020;INPUTTOR0
$P0100
$P0222;INPUTTOR2
$P0300
$P0461;SETR1TO00
$P0500
$P0663;SETR3TO00
$P0700
$P0863;SETR3TOF8
$P09F8
$P0AD3;STORER3TO80ASATAG
$P0B80
;循环主体
$P0C63;SETR3TO01
$P0D01
$P0E1B;ANDR2,R3
$P0FF0;BZCTO12
$P1012
$P1101;ADDR0,R1
$P1263;SETR3TO01
$P1301
$P14AD;RRR3,R1
$P15AE;RRR3,R2
$P1663;SETR3TO7F
$P177F
$P181E;ANDR3,R2
$P1963;SETR3TO80
$P1A80
$P1B17;ANDR1,R3
$P1C9E;ORR3,R2
$P1D63;SETR3TO01
$P1E01
$P1FAF;RRR3,R3JUSTTOMAKEFZNOTEQUALONETHENBZCDEPENDSONFC
$P20F0;BZCTO40
$P2140
$P2263;SETR3TO7F
$P237F
$P241D;ANDR3,R1TOMAKETHEHBOFR1AS0
$P2563;SETR3TO01
$P2601
$P27AF;RRR3,R3JUSTTO...
$P28C3;LAD80TOR3
$P2980
$P2A73;R3++
$P2BF0;BZCTOTHEENDWHICHIS90
$P2C90
$P2DD3;STAR3TO80
$P2E80
$P2FE0;JMPTOTHEENTRANCEOFTHECYCLE
$P300C
;条件转移指令分支
$P4063;SETR3TO80
$P4180
$P429D;ORR3,R1TOMAKETHEHBOFR1AS1
$P43E0;JMPTO25
$P4425
;程序结尾
$P9034;OUTPUTR1
$P9140
$P9238;OUTPUTR2
$P9340
$P9450;STOP
联机装入调试
五、调试运行结果:
输入FD*FE输出FBO&
六、所遇问题及解决方法:
实验时不知道如何利用已有设备利用加法进行两个8位数乘法运算,通过上网查询知道了方法,并以此设计复杂模型机;
然后是开始时对机器程序不太了解,对微指令与机器指令之间的运行不太明白,后来在同组成员和其他同学的帮助与讨论下明白了它们之间的联系和运行顺序。
七、实验总结:
1、经过实验,深层次的了解了微指令系统以及它存在的意义;
2、体会到了机器语言的速度之快以及变成之繁琐,贯通了从电路到桌面应用这一系列体系知识;
3、复杂模型是对前面简单模型的升华,使我们更深入了解了机器程序的执行过程;
4、模型机的设计是一个新的知识,在编写时遇到了很多问题与难处,因此我们在编写时需要不断查阅课本,加深理解。
八、心得体会:
1、复杂模型机的实现比较简单,就是微程序的编写比较繁琐;
2、以后再遇到这种繁琐的程序,先仔细构思,画出流程图再编写,就能容易出错;
3、复杂模型机的调试是一个极其繁琐的过程,我们编写是要细心认真,调试出现问题时要耐心检查;
4、通过本次实验收获丰富,在做这次实验之前,通过深入的预习,理解了实验原理、明确了实验的目的,按部就班地连线,逐步完成了实验的要求。
在实验过程中,我认真进行实验操作和思考实验有关的内容,把自己不太明白的问题通过实验理解清楚。
通过这次实验我更加深刻的理解了计算机的工作原理,懂得了复杂模型机设计与实现的
基本操作,加深了对书本知识的认识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 复杂 模型 两个 二进制 乘法 实现