组原课设 复杂模型机.docx
- 文档编号:18372701
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:14
- 大小:163.13KB
组原课设 复杂模型机.docx
《组原课设 复杂模型机.docx》由会员分享,可在线阅读,更多相关《组原课设 复杂模型机.docx(14页珍藏版)》请在冰点文库上搜索。
组原课设复杂模型机
评语:
课中检查完成的题号及题数:
成绩:
自评分:
95
实验报告
实验名称:
基于复杂模型机两个8位二进制数乘法的实现
日期:
2013/12/27
本人信息
班级:
学号:
姓名:
同组同学信息
班级:
学号:
姓名:
一、实验目的:
1.进一步了解计算机组成,设计并完成较为完整的计算机,完成复杂模型机的设计与试验的验证
2.通过此次试验体验机器码与微程序的区别与联系
3.在此基础上,去实现乘法向加法的转变,并在此条件下实现算法的优化
二、实验内容:
1.
利用复杂模型机编写程序实现两个8位二进制的乘法运算
三、项目要求及分析:
本程序要求编写程序实现两个8位二进制的乘法运算并将结果输出,根据理论课的学习,可将乘法转换为加法实现。
具体步骤如下:
1.R1、R0分别存放乘数与被乘数,其中乘数作为累加计数器;R3、R2清零以分别存放后续的乘法结果的高位和低位。
2.将R2与被乘数R0进行累加,若溢出(FC==1),则将R3自加1作为进位。
3.将R1自减1,若为0,结束循环,否则继续步骤2
4.向OUT单元输出结果,先输出高位,后输出低位
5.停机
四、具体实现:
1.画出算法流程图
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
011
000
000101
05
04B201
00000
1001
011
001
000
000001
06
002407
00000
0000
010
011
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
001
100
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
011
000
010100
14
05B201
00000
1011
011
001
000
000001
15
002416
00000
0000
010
011
000
010110
16
01B201
00000
0011
011
001
000
000001
17
002418
00000
0000
010
011
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
110
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
010
000
000100
31
001606
00000
0000
001
010
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
010
000
010011
39
001615
00000
0000
001
010
000
010101
3A
001617
00000
0000
001
010
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
4.编写微程序
红色为改动过的微程序代码
$M00000001;NOP
$M01006D43;PC->AR,PC加1
$M03107070;MEM->IR,P<1>
$M04002405;RS->B
$M0504B201;A加B->RD
$M06002407;RS->B
$M07013201;A与B->RD
$M08106009;MEM->AR
$M09183001;IO->RD
$M0A106010;MEM->AR
$M0B000001;NOP
$M0C103001;MEM->RD
$M0D200601;RD->MEM
$M0E005341;A->PC
$M0F0000CB;NOP,P<3>
$M10280401;RS->IO
$M11103001;MEM->RD
$M12063201;A-1->RD
$M13002414;RS->B
$M1405B201;A减B->RD
$M15002416;RS->B
$M1601B201;A或B->RD
$M17002418;RS->B
$M1802B201;A循环右移->RD
$M1B005341;A->PC
$M1C10101D;MEM->A
$M1D10608C;MEM->AR,P<2>
$M1E10601F;MEM->AR
$M1F101020;MEM->A
$M2010608C;MEM->AR,P<2>
$M28101029;MEM->A
$M2900282A;RI->B
$M2A04E22B;A加B->AR
$M2B04928C;A加B->A,P<2>
$M2C10102D;MEM->A
$M2D002C2E;PC->B
$M2E04E22F;A加B->AR
$M2F04928C;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
5.编写机器指令验证
$P0020;IN-RO(被乘数)
$P0100
$P0221;IN-R1(乘数)
$P0300
$P0463;LDIR3(清零)
$P0500
$P06D0;R0-MEM
$P0760
$P08D1;R1-MEM
$P0961
$P0A60;LDIR0(清零)
$P0B00
$P0C62;LDIR2(循环次数08H)
$P0D08
$P0ED2;R2-MEM
$P0F63
$P1062;LDIR2(01H)
$P1101
$P12D2;R2-MEM
$P1364
$P1462;LDIR2(80H)
$P1580
$P16D2;R2-MEM
$P1765
$P18C2;64H-R2(LOOP)
$P1964
$P1A19;R1ANDR2
$P1BF0;BZC
$P1C22
$P1DC2;60H-R2
$P1E60
$P1F08;R0+60H
$P20F0;BZC
$P2129
$P22D0;R0-MEM
$P2362
$P24C2;64H-R2
$P2564
$P26A8;SHRR0,1
$P27E0;JUMP
$P2831
$P29D0;RO-MEM
$P2A62
$P2BC2;64H-R2
$P2C64
$P2DA8;SHRRO,1
$P2EC2;65H-R2
$P2F65
$P3008;R0+65H
$P31D0;RO-MEM
$P3266
$P33C0;62H-R0
$P3462
$P35C1;61H-R1
$P3661
$P37C2;64H-R2
$P3864
$P39A9;SHRR1,1
$P3AD1;R1-61H
$P3B61
$P3CAB;SHRR3,1
$P3D18;R0ANDR2
$P3EF0;BZC
$P3F43
$P40C2;65H-R2
$P4165
$P420B;R3+65H
$P43C0;66H-R0
$P4466
$P45C2;63H-R2
$P4663
$P478A;R2-1
$P48F0;BZC
$P494E
$P4AD2;R2-MEM
$P4B63
$P4CE0;JMPLOOP
$P4D18
$P4E30;OUTR0
$P4F40
$P503C;OUTR3
$P5140
$P5250;HLT
五、调试运行结果:
输入:
03H
03H
输出:
OUT单元:
00H09H
六、所遇问题及解决方法:
1.初始算法设计将计数器自减放在循环首位,由于其补码运算机制,再减1,即加FFH之后FC标志被置为1,影响了之后BZC的跳转条件;之后设计为添加一条结果不为0的与运算,但FC标志没有被重置为0。
最终采用将计数器放在循环末尾更新的方法。
2.在实现自减的操作时,可以采用向微指令中添加新指令的方法,也可以运用已有微指令拼凑实现。
在实验中我们采取了第二种方法。
七、实验总结:
1.
通过实验的机会将平时课堂所学的理论用机器来实现,对复杂模型机内部数据流动和控制有了更加深入的理解,初步理解了机器语言是通过怎样的处理转换成为对各种运算器和存储器的控制信号。
2.
通过实验,增强了我们的团队也做能力。
3.
另外,感谢老师们的支持和帮助,帮助我们顺利完成实验。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 组原课设 复杂模型机 复杂 模型