评语:课中检查完成的题号及题数:
一、实验目的:
1.综合运用计算机组成原理知识;
2.设计并实现完整的计算机功能;
3.掌握判断条件的使用;
二、实验内容:
1.熟悉复杂机的原理指令系统和程序流程
2.利用上述模型机通过编写程序实现两个8位二进制数的乘法运算。
三、项目要求及分析:
项目要求:利用复杂模型机通过编写程序实现两个8位二进制数的乘法运算。
分析:在计算机中乘法是通过加法和移位实现的。我们决定采用原码一位乘实现相关操作。采用一个寄存器R0存放部分和,R1 ?个寄存器存放乘数和部分和的低位;R2另一个寄存器存放执行操作的次数。然后,利用指令系统和运算器实现求和及移位操作,每次执行后循环次数自减一,当循环次数为零时结束操作并将计算结果输出。
四、具体实现:
1.画出算法流程图
2.根据算法实现,若需修改指令系统,画出修改后的微程序流程图
二进制数微代码表
地址十六进制表示高五位S3-S0A字段B字段C字段UA5-
UA0
00 00 00 01 00000 0000 000 000 000 00000
1
01 00 6D 43 00000 0000 110 110 101 00001
1
03 10 70 70 00010 0000 111 000 001 11000
04 00 24 05 00000 0000 010 010 000 00010
1
05 04 B2 01 00000 1001 011 001 000 00000
1
06 00 24 07 00000 0000 010 010 000 00011
1
07 01 32 01 00000 0010 011 001 000 00000
1
08 10 60 09 00010 0000 110 000 000 00100
1
09 18 30 01 00011 0000 011 000 000 00000
1
0A 10 60 10 00010 0000 110 000 000 01000
0B 00 00 01 00000 0000 000 000 000 00000
1
0C 10 30 01 00010 0000 011 000 000 00000
1
0D 20 06 01 00100 0000 000 011 000 00000
1
0E 00 53 41 00000 0000 101 001 101 00000
1
0F 00 00 CB 00000 0000 000 000 011 00101
1
10 28 04 01 00101 0000 000 010 000 00000
1
11 10 30 01 00010 0000 011 000 000 00000
1
12 06 B2 01 00000 1101 011 001 000 00000
1
13 00 24 14 00000 0000 010 010 000 01010
14 05 B2 01 00000 1011 011 001 000 00000
1
15 00 24 16 00000 0000 010 010 000 01011
16 01 B2 01 00000 0011 011 001 000 00000
1
17 0
0 24 18 00000 0000 010 010 000 01100
18 0
4 32 01 00000 1000 on 001 000 00000
1
IB 0
0 53 41 00000 0000 101 001 101 00000
1
1C 1
0 10 ID 00010 0000 001 000 000 01110
1
ID 1
0 60 8C 00010 0000 110 000 010 00110
IE 1
0 60 IF 00010 0000 no 000 000 01111
1
IF 1
0 10 20 00010 0000 001 000 000 10000
20 1
0 60 8C 00010 0000 110 000 010 00110
28 1
0 10 29 00010 0000 001 000 000 10100
1
29 0
0 28 2A 00000 0000 010 100 000 10101
2A 0
4 E2 2B 00000 1001 no 001 000 10101
1
2B 0
4 92 8C 00000 1001 001 001 010 00110
2C 1
0 10 2D 00010 0000 001 000 000 10110
1
2D 0
0 2
C
2E 00000 0000 010 110 000 10111
2E 0
4 E2 2F 00000 1001 110 001 000 10111
1
2F 0
4 92 8C 00000 1001 001 001 010 00110
30 0
0 16 04 00000 0000 001 Oil 000 00010
31 0
0 16 06 00000 0000 001 Oil 000 00011
32 0
0 6
D
48 00000 0000 110 110 101 00100
33 0
0 6
D
4A 00000 0000 110 110 101 00101
34 0
0 34 01 00000 0000 on 010 000 00000
1
35 0
0 00 35 00000 0000 000 000 000 11010
1
36 0
0 6
D
51 00000 0000 110 110 101 01000
1
37 0
0 16 12 00000 0000 001 Oil 000 01001
38 0
0 16 13 00000 0000 001 on 000 01001
1
39 0
0 16 15 00000 0000 001 on 000 01010
1
3A 0
0 16 17 00000 0000 001 Oil 000 01011
1
3B 0
0 00 01 00000 0000 000 000 000 00000
1
3C 0
0 6
D
5C 00000 0000 110 110 101 01110
3D 00 6D 5E 00000 0000 no no 101 01111
3E 00 6D 68 00000 0000 110 110 101 10100
0 3F 00 6D 6C 00000 0000 110 110 101 10110
0 地址十六进制表示高五位S3-S0A字段B字段c字段UA5-UA0
4.编写微程序
;机器指令
$P 00 60; IN RO 00H初始部分和
$P 01 00
$P 02 21; IN R1手动输入乘数
$P 03 00
$P 04 62; IN R2循环次数
$P 05 08
$P 06 23; IN R3手动输入被乘数
$P 07 00
$P 08 D3;STA,R3->MEM
$P 09 00
$P 0A 63; INR3 01H(提取最低位)
$P 0B 01
$P 0C D3;STA, R3->MEM
$P 0D 01
$P 0E C3;LAD,MEM->R3
$P OF 01
$P 10 17;R1 与 R3-〉R3 LOOP START
$P 11 FO;BZC,FZ 二 O,E->PC
$P 12 16
$P 13 C3;LAD,MEM->R3
$P 14 00
$P 15 0D;R0+R3-〉R0
$P 16 C3;LAD,MEM->R3
$P 17 01
$P 18 17;R1 与 R3->R3
$P 19 AF;R3 循环右移 R3 位-〉R3;
$P 1A D3;STA, R3->MEM
$P IB 02
$P 1C C3;LAD,MEM->R3
$P ID 01
$P IE BD;R1 右移 R3 位->R1
$P IF C3;LAD, MEM->R3
$P 20 02
$P 21 9D;R1 OR R3->R1
$P 22 C3;LAD,MEM->R3
$P 23 01;
$P 24 BC;RO 右移 R3 位->R0 $P 25 8E;R2-1-〉R2;
$P 26 FO;BZC R2
$P 27 30
$P 28 EO;JMP LOOP
$P 29 10
$P 30 30;OUT 40H
$P 31 40
$P 32 50;HALT
;微指令
$M 00 000001
$M 01 006D43
$M 03 107070
$M 04 002405
$M 05 04B201
$M 06 002407
$M 07 013201
$M 08 106009
$M 09 183001
$M 0A 106010
$M OB 000001
$M OC 103001
$M OD 200601
$M OE 005341
$M OF OOOOCB
$M 10 280401
$M 11 103001
$M 12 06B201
$M 13 002414
$M 14 05B201
$M 15 002416
$M 16 01B201
$M 17 002418
$M 18 043201
$M IB 005341
$M 1C 10101D
$M ID 10608C
$M IE 10601F
$M IF 101020
$M 20 10608C
$M 21 002422
$M 22 02B201
$M 28 101029
$M 29 00282A
$M 2A 04E22B
$M 2B 04928C
$M 2C 10102D
$M 2D 002C2E
$M 2E 04E22F
$M 2F 04928C
$M 30 001604
$M 31 001606
$M 32 006D48
$M 33 006D4A
$M 34 003401
$M 35 000035
$M 36 006D51
$M 37 001612
$M 38 001613
$M 39 001615
$M 3A 001617
$M 3B 001621
$M 3C 006D5C
$M 3D 006D5E
$M 3E 006D68
$M 3F 006D6C
;//** End Of Microcontroller Data **//
5.编写机器指令验证
联机装入调试:输入1111和11()0得到结果为:1()11010()
五、调试运行结果:
10110100
六、所遇问题及解决方法:
1原先的指令系统中不存在右移操作,首先对原指令系统的保留操作进行了修改
2将部分和的最低位移至乘数的最高位,我们进行了多步操作和想与相或操作进行了实现。
七、实验总结:
1.首先弄懂实验书上面的内容,懂的各部分的功能;
2.对于复杂操作,学会进行步骤的分解,实现问题的简化