计算机组成原理实验报告.docx
- 文档编号:26514001
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:37
- 大小:662.49KB
计算机组成原理实验报告.docx
《计算机组成原理实验报告.docx》由会员分享,可在线阅读,更多相关《计算机组成原理实验报告.docx(37页珍藏版)》请在冰豆网上搜索。
计算机组成原理实验报告
计算机组成原理课程设计
报告
指导教师:
班级:
姓名:
学号:
一、目的和要求
1.实验目的:
深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。
2、实验要求:
要进行这项大型实验,必须清楚地懂得:
(1)TEC-2机的功能部件及其连接关系;
(2)TEC-2机每个功能部件的功能与具体组成;
(3)TEC-2机支持的指令格式;
(4)TEC-2机的微指令格式,AM2910芯片的用法;
(5)已实现的典型指令的执行实例,即相应的微指令与其执行次序的安排与衔接;
(6)要实现的新指令的格式与功能。
二、实验环境
PC机模拟TEC-2机
3、具体内容
一、实验内容:
选定指令格式、操作码,设计如下指令:
(1)把用绝对地址表示的内存单元ADDR1中的内容与内存单元ADDR2中的内容相减,结果存于内存单元ADDR3中。
指令格式:
D4××,ADDR1,ADDR2,ADDR3四字指令(控存入口100H)
功能:
[ADDR3]=[ADDR1]-[ADDR2]
(2)将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。
指令格式:
E0DRSR,ADDR(SR,DR源、目的寄存器各4位)双字指令(控存入口130H)
功能:
DR=SR+[ADDR]
(3)转移指令。
判断两个通用寄存器内容是否相等,若相等则转移到指定绝对地址,否则顺序执行。
指令格式:
E5DRSR,ADDR双字指令(控存入口140H)
功能:
ifDR==SRgotoADDRelse 顺序执行。
设计:
利用指令的CND字段,即IR10~8,令IR10~8=101,即CC=Z
则当DR==SR时Z=1,微程序不跳转,接着执行MEMPC(即ADDRPC)
而当DR!
=SR时Z=0,微程序跳转至A4。
二、实验要求:
(1)根据内容自行设计相关指令微程序;(务必利用非上机时间设计好微程序)
(2)设计测试程序、实验数据并上机调试。
(3)设计报告内容:
包括1、设计目的2、设计内容3、微程序设计(含指令格式、功能、设计及微程序)4、实验数据(测试所设计指令的程序及结果)。
(具体要求安最新规范为准)
(4)课程设计实验报告必须打印成册,各班班长收齐大型实验报告于18周星期六下午(15:
00)前,交张芳老师办公室。
四、实验程序与分析:
(一).把用绝对地址表示的内存单元ADDR1中的内容与内存单元ADDR2中的内容相减,结果存于内存单元ADDR3中。
指令格式:
D4××,ADDR1,ADDR2,ADDR3四字指令(控存入口100H)
功能:
[ADDR3]=[ADDR1]-[ADDR2]
指令格式:
D4XX
ADDR1
ADDR2
ADDR3
微程序:
PC→AR,PC+1→PC:
00000E00A0B55402;程序计数器加1,开辟1个内存单元
MEM→AR:
00000E0010F00002;将指令地址送AR(ADDR1)
MEM→Q:
00000E0000F00000;将内存单元中的数据送入Q寄存器
PC→AR,PC+1→PC:
00000E00A0B55402;PC加1,开辟第二个内存单元
MEM→AR:
00000E0010F00002;将指令地址送AR(ADDR2)
Q-MEM→Q:
00000E0101E00000;完成减法(Q内容-ADDR2内容→Q寄存器)
PC→AR,PC+1→PC:
00000E00A0B55402;PC加1,开辟第三个内存单元
MEM→AR:
00000E0010F00002;将指令地址送AR(ADDR3)
Q→MEM,CC#=0:
0029030010200010;将结果送入ADDR3,低电平有效
指令分析:
1PC→AR,PC+1→PC:
00000E00A0B55402程序计数器加1,开辟1个内存单元
000E00A0B55402
0000
0000
0000
1110
0000
0000
1010
0000
1011
0101
0101
0100
0000
0010
B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0
B36B35B31B27B23B10B8B7B3
(B2-B0)DC2:
2/GAR地址寄存器接收,故DC2为010
(B6-B4)DC1:
未向IB总线发送控制,故DC1为000
(B7)SA=0,作Am2901
(B3)SB=0,作Am2901
(B9B8)SSH:
未移位
(B11B10)SCI:
自加1
(B15-B12)B口:
使用了寄存器R5,即程序计数器PC,即0101
(B19-B16)A口:
使用了寄存器R5,即程序计数器PC,即0101
(B22-B20)MI2-0:
此时ALU的R端输入为0,S端输入为B
(B26-B24)MI5-3:
运算功能选择为“R+S”,即执行+1功能
(B30-B28)BI8-6:
有返回值,且返回值返回至B,而Y的输出选择为A
(B31B27B23)MI0#,REQ,WE#:
三位用于控制内外数据总线的读和写,此处不操作,故取10X
(B34-B32)SST:
状态位不需进行判断,即为000
(B35)备用位为0
(B36)SCCC#始终低电平有效,即SC=000,CC=0
(B39-B37)SCC
(B43-B40)CI3-CI0:
Am2901命令第14#命令,即为顺序执行
(B55-B44)下地址:
由于顺序执行,并未使用下地址,故下地址为0
②MEM→AR:
00000E0010F00002将指令地址送AR(ADDR1)
000E0010F00002
0000
0000
0000
1110
0000
0000
0001
0000
1111
0000
0000
0000
0000
0010
B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0
B36B35B31B27B23B10B8B7B3
(B2-B0)DC2:
地址寄存器接收,故DC2为010
(B6-B4)DC1:
未向IB总线发送控制,故DC1为000
(B7)SA=0,作Am2901,即0000
(B3)SB=0,作Am2901,即0000
(B9B8)SSH:
未移位,即00
(B11B10)SCI:
未进位.,即00
(B15-B12)B口:
未使用寄存器,故为0000
(B19-B16)A口:
未使用寄存器,故为0000
(B22-B20)MI2-0:
此时ALU的R端输入为D(外部数据),S端输入为0
(B26-B24)MI5-3:
运算功能选择为“R+S”,即执行D+0
(B30-B28)BI8-6:
没有返回值,Y的输出选择为F
(B31B27B23)MI0#,REQ,WE#:
三位用于控制内外数据总线的读和写,此处为存储器读,故取001
(B34-B32)SST:
状态位不需进行控制,故为000
(B35)备用位为0
(B36)SCCC#始终低电平有效,即SC=000,CC=0
(B39-B37)SCC
(B43-B40)CI3-CI0:
Am2901命令第14#命令,即为顺序执行
(B55-B44)下地址:
由于顺序执行,并未使用下地址,故下地址为0
③[MEM]→Q:
00000E0000F00000将内存单元中的数据送入Q寄存器
000E0000F00000
0000
0000
0000
1110
0000
0000
0000
0000
1111
0000
0000
0000
0000
0000
B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0
B36B35B31B27B23B10B8B7B3
(B2-B0)DC2:
寄存器未接收,故DC2为000
(B6-B4)DC1:
未向IB总线发送控制,故DC1为000
(B7)SA=0,作Am2901,即0000
(B3)SB=0,作Am2901,即0000
(B9B8)SSH:
未移位,为00
(B11B10)SCI:
未进位,为00
(B15-B12)B口:
未使用寄存器,故为0000
(B19-B16)A口:
未使用寄存器,故为0000
(B22-B20)MI2-0:
此时ALU的R端输入为D(外部数据),S端输入为0
(B26-B24)MI5-3:
运算功能选择为“R+S”,即执行D+0
(B30-B28)BI8-6:
有返回值,且返回值返回至Q,而Y的输出选择为F,故此处为000
(B31B27B23)MI0#,REQ,WE#:
存储器读即取001
(B34-B32)SST:
状态位不需进行控制,故为000
(B35)备用位为0
(B36)SCCC#始终低电平有效,即为0000
(B39-B37)SCC
(B43-B40)CI3-CI0:
Am2901命令第14#命令,即为顺序执行,
(B55-B44)下地址:
由于顺序执行,并未使用下地址,故下地址为0
④PC→AR,PC+1→PC:
00000E00A0B55402PC加1,开辟第二个内存单元
000E00A0B55402
0000
0000
0000
1110
0000
0000
1010
0000
1011
0101
0101
0100
0000
0010
B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0
B36B35B31B27B23B10B8B7B3
⑤MEM→AR:
00000E0010F00002将指令地址送AR(ADDR2)
000E0010F00002
0000
0000
0000
1110
0000
0000
0001
0000
1111
0000
0000
0000
0000
0010
B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0
B36B35B31B27B23B10B8B7B3
这两条指令同①②。
⑥[MEM]-Q→Q:
00000E0101E00000完成减法(ADD2内容-Q内容→Q寄存器)
000E0101E00000
0000
0000
0000
1110
0000
0001
0000
0001
1110
0000
0000
0000
0000
0000
B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0
B36B35B31B27B23B10B8B7B3
(B2-B0)DC2:
寄存器未接收,故DC2为000
(B6-B4)DC1:
未向IB总线发送控制,故DC1为000
(B7)SA:
为0,作Am2901
(B3)SB:
为0,作Am2901
(B9B8)SSH:
未移位,即00
(B11B10)SCI:
未进位,即00
(B15-B12)B口:
未使用寄存器,故为0000
(B19-B16)A口:
未使用寄存器,故为0000
(B22-B20)MI2-0:
此时ALU的R端输入为D(外部数据),S端输入为Q
(B26-B24)MI5-3:
运算功能选择为“S-R”,即执行D-Q
(B30-B28)BI8-6:
有返回值,且返回值返回至Q,而Y的输出选择为F,故此处为000
(B31B27B23)MI0#,REQ,WE#:
存储器读即取001
(B34-B32)SST:
由运算带来的状态保存,故为001
(B35)备用位为0
(B36)SCCC#始终低电平有效,即为0000
(B39-B37)SCC
(B43-B40)CI3-CI0:
Am2901命令第14#命令,即为顺序执行
(B55-B44)下地址:
由于顺序执行,并未使用下地址,故下地址为0
⑦PC→AR,PC+1→PC:
00000E00A0B55402PC加1,开辟第三个内存单元
000E00A0B55402
0000
0000
0000
1110
0000
0000
1010
0000
1011
0101
0101
0100
0000
0010
B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0
B36B35B31B27B23B10B8B7B3
⑧MEM→AR:
00000E0010F00002将指令地址送AR(ADDR3)
000E0010F00002
0000
0000
0000
1110
0000
0000
0001
0000
1111
0000
0000
0000
0000
0010
B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0
B36B35B31B27B23B10B8B7B3
这两条指令同①②。
⑨Q→MEM,CC#=0:
0029030010200010将结果送入ADDR3,低电平有效
29030010200010
0010
1001
0000
0011
0000
0000
0001
0000
0010
0000
0000
0000
0001
0000
B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0
B36B35B31B27B23B10B8B7B3
(B2-B0)DC2:
寄存器未接收,故DC2为000
(B6-B4)DC1:
向IB总线发送运算器的指令,故DC1为001
(B7)SA=0,作Am2901
(B3)SB=0,作Am2901
(B9B8)SSH:
未移位,即00
(B11B10)SCI:
未进位,即00
(B15-B12)B口:
未使用寄存器,故为0000
(B19-B16)A口:
未使用寄存器,故为0000
(B22-B20)MI2-0:
此时ALU的R端输入为0,S端输入为Q
(B26-B24)MI5-3:
运算功能选择为“R+S”,即执行0+Q
(B30-B28)BI8-6:
没有返回值,Y的输出选择为F
(B31B27B23)MI0#,REQ,WE#:
三位用于控制内外数据总线的读和写,此处为将Q寄存器中值写入内存单元,故取000
(B34-B32)SST:
未用状态,故为000
(B35)备用位为0
(B36)SC此处低电平有效,故取SCC为000,SC为0
(B39-B37)SCC
(B43-B40)CI3-CI0:
Am2901命令第3#命令,即为条件转移,低电平有效,有效时,转入下地址
(B55-B44)下地址:
此命令为最后一条命令,若指令跳转,将转入A4H,即下地址为29
程序调试:
(1)用E命令输入微码:
(将微码输入到由900H开始的内存单元中)
(2)用D命令查看输入的微码:
(3)用A命令输入加载微码的程序:
(将微码加载到微控存中)
>A800;TEC-2机主存储器中RAM地址分配为0800H-0FFFH
0800:
MOVR1,900;微码在内存中的首地址
0802:
MOVR2,9;共9条微指令
0804:
MOVR3,100;微码在微控存中的首地址,题目规定为100H
0806:
LDMC;加载微码指令
0807:
RET;返回
0808:
(4)用G命令运行加载微码的程序:
>G800
(5)用A命令输入程序:
>A820
0820:
MOVR0,0023;将立即数23赋给寄存器R0
0822:
MOVR1,0020;将立即数20赋给寄存器R1
0824:
MOV[A00],R0;将寄存器R0中数据赋值给内存单元0A00
0826:
MOV[A01],R1;将寄存器R0中数据赋值给内存单元0A01
0828:
NOP;NOP起等待作用,因为指令占四个字节,所以用4个NOP
0829:
NOP
082A:
NOP
082B:
NOP
082C:
RET;返回
082D:
(6)用E命令输入新指令:
>E828;因为第一个空操作的地址是0828所以此处输入0828
08280000:
D4010000:
0A000000:
0A010000:
0A02
(4)(5)(6)的实现如下图:
(7)用U命令查看输入的程序:
(反编译观察操作过程)
(8)用“G”命令运行程序:
(9)用“D”命令查看运行结果:
在命令行提示符状态下输入:
DA00(回车)
(二)将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。
指令格式:
E0DRSR,ADDR(SR,DR源、目的寄存器各4位)双字指令(控存入口130H)
功能:
DR=SR-[ADDR]
指令分析:
根据指令的功能和指令格式,先读取地址ADDR单元内容暂时放置于Q寄存器中,然后再读取内存单元中的DATA,同时与Q寄存器内容相减,结果存放在DR寄存器中。
每条指令系统微操作详细:
①PC→AR,PC+1→PC:
00000E00A0B55402程序计数器加1
000E00A0B55402
0000
0000
0000
1110
0000
0000
1010
0000
1011
0101
0101
0100
0000
0010
B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0
B36B35B31B27B23B10B8B7B3
(B2-B0)DC2:
在本条微码中,地址寄存器接收,故DC2为010
(B6-B4)DC1:
未向IB总线发送控制,故DC1为000
(B7)SA:
为0,作Am2901
(B3)SB:
为0,作Am2901
(B9B8)SSH:
未移位
(B11B10)SCI:
未进位
(B15-B12)B口:
使用了寄存器R5,即程序计数器PC
(B19-B16)A口:
使用了寄存器R5,即程序计数器PC
(B22-B20)MI2-0:
此时ALU的R端输入为0,S端输入为B
(B26-B24)MI5-3:
运算功能选择为“R+S”,即执行+1功能
(B30-B28)BI8-6:
有返回值,且返回值返回至B,而Y的输出选择为A
(B31B27B23)MI0#,REQ,WE#:
三位用于控制内外数据总线的读和写,此处不操作,故取10X
(B34-B32)SST:
未用状态,故为000
(B35)备用位为0
(B36)SC未用条件码,故为0
(B39-B37)SCC
(B43-B40)CI3-CI0:
Am2901命令第14#命令,即为顺序执行
(B55-B44)下地址:
由于顺序执行,并未使用下地址,故下地址为0
②MEM→AR:
00000E0010F00002将指令地址送AR
000E0010F00002
0000
0000
0000
1110
0000
0000
0001
0000
1111
0000
0000
0000
0000
0010
B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0
B36B35B31B27B23B10B8B7B3
(B2-B0)DC2:
在本条微码中,地址寄存器接收,故DC2为010
(B6-B4)DC1:
未向IB总线发送控制,故DC1为000
(B7)SA:
为0,作Am2901
(B3)SB:
为0,作Am2901
(B9B8)SSH:
未移位,即00
(B11B10)SCI:
未进位,即00
(B15-B12)B口:
未使用寄存器,故为0
(B19-B16)A口:
未使用寄存器,故为0
(B22-B20)MI2-0:
此时ALU的R端输入为D(外部数据),S端输入为0
(B26-B24)MI5-3:
运算功能选择为“+S”,即执行D+0
(B30-B28)BI8-6:
没有返回值,Y的输出选择为F
(B31B27B23)MI0#,REQ,WE#:
三位用于控制内外数据总线的读和写,此处为存储器读,故取001
(B34-B32)SST:
未用状态,故为000
(B35)备用位为0
(B36)SC未用条件码,故为0
(B39-B37)SCC
(B43-B40)CI3-CI0:
Am2901命令第14#命令,即为顺序执行
(B55-B44)下地址:
由于顺序执行,并未使用下地址,故下地址为0
③SR-MEM→
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 实验 报告