计组实验报告
计组课程设计
课程设计报告
学院:
广州大学计算机科学与网络工程学院
专业班级:
计算机科学与技术专业 184 班
姓名:
学号:
指导老师:
第 1 页1
计算机组成原理程序设计
目录
一. 课程设计性质、目的、任务……………………………….....…3
二. 课设基本理论…………………………………………………....3
三. 课程设计题目………………...……...………………………….3
四. 数据格式定义……………………………………………………5
五. 模型机指令系统…………………………………………………6
六. 微程序流程图…………………………………………….………11
七.微指令表………………………………………………….…………12
八.验证程序..........................................................……..... …..…...........15
九.实验结果及分析...............................................….....….......…..........24
十.参考资料......................................................….....….....…..............25
第 1 页- 2 -
计组实验报告
一、本课程设计的性质、目的、任务
《计算机组成与系统结构课程设计》是计算机学院各专业集中实践性环节之一,是学习
完《计算机组成与系统结构》课程后进行的一次全面的综合练习。其目的是综合运用所学计
算机原理知识,设计并实现一台模型计算机,以便巩固所学的知识,提高分析问题和解决问
题的能力。
二、本课程设计的基本理论
1、掌握算术、逻辑、移位运算实验,熟悉 ALU 运算控制位的运用。
2、掌握存储器组织、读写方式及与总路线组成的数据通路,掌握地址总线、数据总线
的工作原理。
3、掌握指令结构和指令取指、执行工作过程。
4、掌握 CPU 的微程序控制原理。
三、题目
综合运用所学计算机原理知识,设计并实现具有以下 16 条指令的指令集结构的模型计算机:
编
号
0
1
2
3
4
5
6
7
8
9
助记符
机器指令码
说明
SUB
Rd,Rs
0000 RdRs ( 600H)
ADD
Rd,Rs
0001 RdRs ( 620H)
Rd-Rs→Rd
Rd+Rs→Rd
AND
Rd,Rs
0010 RdRs
(640H)
Rd&Rs→Rd (Rd 和 Rs 相与)
DEC Rd
CLR Rd
RL
RR
Rd
Rd
0011 Rd00
(660H)
0100 Rd00 (680H)
0101 Rd00 (6A0H)
0110 Rd00
(6C0H)
将 Rd 值减 1
将 Rd 清零
Rd 循环左移一位
Rd 循环右移一位
MOV Rd,Rs
0111 RdRs
(6E0H)
Rs→Rd
LDI
Rd,*
1000 Rd00
XXXX XXXX
(700H) 将指令中的立即数(第二字
节)送入 Rd
OUT
IOH,Rs
1001 00Rs
(720H)
Rs→I/O(数据开关)高字节
10 LDA
Rd,M
1010 Rd00
XXXXXXXX
XXXXXXXX(740H) [M] →Rd
(400h)
11 STA
M,Rs
1011
00Rs
XXXX(760H)
XXXX
XXXX
XXXX
Rs→[M]
(408H)
12 JMP M
1100 0000
XXXXXXXX
XXXXXXXX(780h)
[M]→PC,即跳转到 M 所指单
元(410H)
13 JZ M
14 JC M
1101 0000
XXXXXXXX
XXXXXXXX(7A0) 当 Z=1 时,跳转到 M 所指单元
1110 0000
XXXXXXXX
XXXXXXXX(7C0H) 当 CY=1 时,跳转到 M 所指单
15 HALT
1111 0000
元
(7E0H) 停机
设计提示:
1、上表中,机器指令码的高 4 位为指令操作码,M 为 16 位存储器地址, Rs 为源寄存器,
Rd 为目的寄存器,占 2 位,并规定:
计组实验报告
Rs 或 Rd 选定的寄存器
00
01
10
11
R0
R1
R2
R3
2、在微程序中,微地址 001 为取指,微指令为 BF FB F8。
3、各指令指行阶段微程序入口地址的确定方式:
微地址位号
内容
10
1
9
1
8
7
6
5
IR7~IR4
4
0
3
0
2
0
1
0
0
0
例如,第 5 条指令”RL Rd” 的指令码为 0101 Rd00 则指令码的高 4 位 IR7~IR4 为 0101,
由上表知,微程序入口微地址为: 11 0101 00000 ,即 6A0H。
4、主要步骤:
(1)按照第 3 点的方法,给出所有 16 条指令的微程序入口微地址;
(2)通过分析每条指令的功能明确其的微程序流程,可参考实验指导书图 3-4-1、图 3-2-2、
图 3-3-1;
(3)写出每条微指令的微命令,即 24 个微控制位信号,可参考实验指导书表 3.4.1、表 3.2.1、
表 3.3.1 和“微控制器编程手册”第 2 章。
(4)建议采用逐条指令设计实现的方式,一条实现并用汇编语句测试通过后(指令功能、
下址顺序均正确)再进行下一条的设计。
5、检查
模型计算机设计完成后,用所给的测试程序 check_1.asm(测 12 条非转移指令)和
check_2.asm(测 3 条转移指令)检查正确性。检查方法:在测试程序中#load s 本人的.IS 微
指令程序,实验箱电源关闭重启并连接,装载后选择“运行”或“单步”执行。
check_1.asm 运行的正确结果为:寄存器 R0R1R2R3 分别显示 00112233,IOH 显示 33。
check_2.asm 运行的正确结果为:寄存器 R0R1R2R3 分别显示 00112233,如果显示 EE
则执行有错误。
check1.asm 程序的运行结果
第 4页
check2.asm 程序的运行结果
我的程序自测的效果如下:
计组实验报告
check1.asm 程序的运行结果
check2.asm 程序的运行结果
四、数据格式定义
1.数据格式
按照模型机规定采用定点补码表示数据,且字长为 8 位,格式如下
7
符号
6
5
3
4
2
尾 数
1
0
其中第 7 位为符号位,数值表示范围是:-1<=X<1。
指令格式
算术逻辑指令
设计 9 条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:
7 6 5 4
3 2
OP-CODE Rs
1 0
Rd
其中,OP-CODE 为操作码,Rs 为源寄存器,Rd 为目的寄存器,并规定:
Rs 或 Rd 选定的寄存器
00
01
10
11
R0
R1
R2
R3
⑵ 访问指令及转移指令
模型机设计 2 条访问指令,即存数(STA)、取数(LDA),指令格式为:
3 2
2OP-COD
E
1 0
Rd
7
0
6
5 4
0 M
D(低八)
D(高八)
第 5页
其中“0 0 M ”为源码段,2OP-CODE 为目的码段(LDA、STA 指令使用)。D 为十六位地址
段(低八在前,高八随后),M 为源寻址模式,其定义如下:
计组实验报告
寻址模式
M
00
01
10
11
有效地址 E 说 明
E = D
E = (D)
E = (SP)+D
E = (PC)+D
直接寻址
间接寻址
SP 变址寻址
相对寻址
⑶ I/O 指令
输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:
⑷ 停机指令
指令格式如下:
7 6 5 4
OP-CODE
7 6 5 4
OP-CODE
3 2
0 0
3 2
0 0
1 0
Rd
1 0
0 0
HALT 指令,用于实现停机操作。
五、模型机指令系统
1.各指令的微程序入口地址和微程序:
编
号
0
助记符
机器指令码
说明
0000 RdRs
Rd-Rs→Rd
SUB
Rd,Rs
微程序入口
微程序
地址
600
600: F8 F9 7F
601:FA F9 FF
602:F0 6E 6D
1
ADD
Rd,Rs
0001 RdRs
Rd+Rs→Rd
620
620:F8 F9 7F
2
AND
Rd,Rs
0010 RdRs
Rd&Rs→Rd (Rd 和 Rs 相与) 640
第 6页
621:FA F9 FF
622:F0 66 6D
640:F8 F9 7F
3
DEC Rd
0011 Rd00
将 Rd 值减 1
4
5
CLR Rd
RL
Rd
0100 Rd00
将 Rd 清零
0101 Rd00
Rd 循环左移一位
6
RR
Rd
0110 Rd00
Rd 循环右移一位
7
8
MOV Rd,Rs
0111 RdRs
Rs→Rd
LDI
Rd,*
1000
XXXXXXXX
Rd00
将指令中的立即数(第二字
节)送入 Rd
计组实验报告
641:FA F9 FF
642:F0 66 6D
660
660:F8 F9 5F
661:F0 D6 4D
680
6A0
680:F0 DE 4D
6A0: F8 F9 7F
6A1:F0 76 6D
6C0
6C0: F8 F9 7F
6E0
700
6C1:F0 7E 6D
6E0:F0 F9 ED
700:F0 FB FF
701:BF FF ED
9
OUT
IOH,Rs
1001 00Rs
Rs→I/O(数据开关)高字节 720
720:F5 F9 ED
10 LDA
Rd,M
11 STA
M,Rs
12 JMP M
13 JZ M
14 JC M
1010
XXXXXXXX
XXXXXXXX
1011
XXXXXXXX
XXXXXXXX
1100
XXXXXXXX
XXXXXXXX
1101
XXXXXXXX
XXXXXXXX
1110
XXXXXXXX
XXXXXXXX
Rd00
[M] →Rd
740
740:FA FB FF
741:BB FB FF
742:BC C6 3D
743:70 FB ED
00Rs
Rs→[M]
760
760:FA FB 7F
0000
[M]→PC,即跳转到 M 所指单
元
0000
当 Z=1 时,跳转到 M 所指单
元
761:BB FB FF
762:BC C6 3F
763:5F F9 AD
780
780:FA FB DF
781:BB FB DF
782:3F C6 0D
7A0
7A0:FA FB FF
7A1:BB FB FF
7A2:BF FF FC
764:FF FF ED
765:3F C6 2D
0000
当 CY=1 时,跳转到 M 所指单
元
7C0
7C0:FA FB FF
7C1:BB FB FF
第 7页
计组实验报告
7C2:BF FF F4
7C4:FF FF ED
7C5:3F C6 2D
7E0
7E0:F8 F8 3F
7E1:3F D6 2D
15 HALT
1111 0000
停机
2. 设计的模型机指令系统
;移位模型机指令系统
;助记符 操作数
;-------------------------------------------------------------------
;原来使用 IN 代替 LDI 功能,实现交互式数据传输到 4 个寄存器,指令码规定有限,只能
有 16 个操作,所以去掉了 IN
;以下按照老师给的任务顺序实现
;IN
;IN
;IN
;IN
;将 IOL 数据读出到寄存器 R0
;将 IOL 数据读出到寄存器 R1
;将 IOL 数据读出到寄存器 R2
;将 IOL 数据读出到寄存器 R3
R0,IOL
R1,IOL
R2,IOL
R3,IOL
指令码 长度
A0
A1
A2
A3
1
1
1
1
SUB
SUB
SUB
SUB
SUB
SUB
SUB
SUB
SUB
SUB
SUB
SUB
SUB
SUB
SUB
SUB
ADD
ADD
ADD
ADD
ADD
ADD
ADD
R0,R0
R0,R1
R0,R2
R0,R3
R1,R0
R1,R1
R1,R2
R1,R3
R2,R0
R2,R1
R2,R2
R2,R3
R3,R0
R3,R1
R3,R2
R3,R3
R0,R0
R0,R1
R0,R2
R0,R3
R1,R0
R1,R1
R1,R2
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相减
;将 2 个寄存器相加
;将 2 个寄存器相加
;将 2 个寄存器相加
;将 2 个寄存器相加
;将 2 个寄存器相加
;将 2 个寄存器相加
;将 2 个寄存器相加
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15
16
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
第 8页