当前位置:文档之家› 基于复杂模型机两个8位二进制数乘法的实现.doc

基于复杂模型机两个8位二进制数乘法的实现.doc

基于复杂模型机两个8位二进制数乘法的实现.doc
基于复杂模型机两个8位二进制数乘法的实现.doc

评语:课中检查完成的题号及题数:

一、实验目的:

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.对于复杂操作,学会进行步骤的分解,实现问题的简化

相关主题
文本预览
相关文档 最新文档