实验报告
学
院:
课程:
班级:
学号:
学生姓名:
指导教师:
2016年 6月25日
实验过程
R0 存储被乘数
R1存储乘数
R2存储结果的高8位
R3存储结果的低8位
S:
MOV A R1
01H
71
AND A #01H
02H
5C
03H
01
JZ S0
04H
A4
05H
3F
MOV A R2
06H 72
AND A 01H
07H
5C
08H
01
JZ S1
09H
A4
OAH
27
MOV A R2
0BH
72
RR A
0CH
D0
MOV R2 A
0DH
82
MOV A R2
OEH
72
ADD A R0
0FH
10
MOV R2 A
10H
82
MOV A R3
11H
73
RR A
12H
D0
MOV R3 A
13H
83
MOV A R3
14H
73
ADD A 80H
15H
1C
16H
80
MOV R3 A
17H
83
MOV A R1
18H
71
RR A
19H
D0
MOV R1 A
1AH
81
MOV
A A1
1BH
78
1C
A1
ADD A 01H
1DH
1C
1EH
01
MOV A1 A
1FH
88
20H
A1
SUB A1 09H
21H
3C
22H
09
JZ A2
23H
A4
24H
A2
JMP S
25H
AC
26H
01
S1:
MOV A R2
27H
72
RR A
28H
D0
29H
82
MOV A R2
2AH
72
ADD A R0
2BH
10
MOV R2 A
2CH
82
MOV A R3
2DH
73
RR A
2EH
D0
MOV R3 A
2FH
83
MOV A R1
30H
71
RR A
31H
D0
MOV R1 A
32H
81
MOV
A A1
33H
78
34H
A1
ADD A 01H
35H
1C
36H
01
MOV A1 A
37H
88
38H
A1
SUB A1 09H
39H
3C
3AH
09
JZ A2
3BH
A4
3CH
A2
JMP S
3DH
AC
3EH
01
S0:
MOV A R2
3FH
72
AND A 01H
40H
5C
41H
01
JZ S2
42H
A4
43H
5D
MOV A R2
44H
72
RR A
45H
D0
MOV R2 A
46H
82
MOV A R3
47H
73
RR A
48H
D0
MOV R3 A
49H
83
MOV A R3
4AH
73
ADD A 80H
4BH
1C
4CH
80
MOV R3 A
4DH
83
MOV A R1
4EH
71
RR A
4FH
D0
MOV R1 A
50H
81
MOV
A A1
51H
78
52H
A1
ADD A 01H
53H
1C
54H
01
MOV A1 A
55H
88
56H
A1
SUB A1 09H
57H
3C
58H
09
JZ A2
59H
A4
5AH
A2
JMP S
5BH
AC
5CH
01
S2:
MOV A R2
5DH
72
RR A
5EH
D0
MOV R2 A
5FH
82
MOV A R3
60H
73
RR A
61H
D0
MOV R3 A
62H
83
MOV A R1
63H
71
RR A
64H
D0
MOV R1 A
65H
81
MOV A A1
66H
78
67H
A1
ADD A 01H
68H
1C
69H
01
MOV A1 A
6AH
88
6BH
A1
SUB A1 09H
6CH
3C
6DH
09
JZ A2
6EH
A4
6FH
A2
JMP S
70H
AC
71H
01
FFF7F7
FFFCB7
FFFB9F
CBFFFF
FFF7F7
FFFCD7
FFFB9F
CBFFFF
FFF7F7
C7FFEF
FFFE91
CBFFFF
FFF7F7
C7FFEF
FFFE90
CBFFFF
FFF7EF
本次实验主要有两部分内容。一个是原码(八位)一位乘法的实现,另一个是设计五条微程序指令。
在原码(八位)一位乘法的实现实验中主要涉及到位数的扩展以及进位和移位等问题,为了解决这些问题我们在实验中采取了分情况讨论的方式,主要分四种情况进行讨论(1)高八位的末尾是0,低八位的末尾是1,此时高八位右移,并且加R0,低八位右移。(2)高八位末尾是1,低八位末尾是1,此时高八位右移,并且加R0,低八位右移加80H.(3)高八位末尾是0,低八位末尾是0,此时高八位右移,低八位右移。(4)高八位末尾是1,低八位末尾是0,高八位右移,低八位右移加80H.
(6)在设计五条微程序指令的实验中我们主要设计了五条机器指令:RR
R? 实现寄存器的右移,RL R? 实现寄存器的左移,SUB R? #II实现寄存器减去一个立即数,ADD R?
#II实现寄存器加上一个立即数,MOV W
R?将寄存器里的内容存入W。在这次实验中主要参考了已经存在的机器指令,分别给24位控制位赋0或者1来决定功能的实现,一条指令分为4个状态。
实验的不足之处是没有进行符号位的判断,但是思路是这样的在程序执行之前加上这样一段指令
MOV A R0
AND A 80H
MOV A5 A
MOV A R1
AND A 80H
MOV A6 A
MOV A A5
AND A A6
MOV A7 A
在结束循环时把A7赋给R1
另外如果输入的是负数还要进行与运算把他变成正数