CPU组成与机器指令执行周期实验.docx
《CPU组成与机器指令执行周期实验.docx》由会员分享,可在线阅读,更多相关《CPU组成与机器指令执行周期实验.docx(12页珍藏版)》请在冰豆网上搜索。
CPU组成与机器指令执行周期实验
CPU组成与机器指令执行周期实验
一、实验目的
1.将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机。
2.用微程序控制器控制模型计算机的数据通路。
3.通过TEC-5执行由8条机器指令组成的简单程序,掌握机器指令与微指令的关系,牢固建立计算机的整机概念。
二、实验电路
本次实验将前面几个实验中的所有电路,包括运算器、存储器、通用寄存器堆、微程序控制器等模块组合在一起,构成一台简单的模型机。
因此,在基本实验中,这是最复杂的一个实验,也将是最有收获的一个实验。
在前面的实验中,实验者本身作为“控制器”,完成了对数据通路的控制。
而在本次实验中,数据通路的控制将交由微程序控制器来完成。
TEC-5从内存中取出一条机器指令到执行指令结束的一个指令周期,是由微程序完成的,即一条机器指令对应一个微程序序列。
三、实验设备
1.TEC-5计算机组成原理实验系统1台
2.逻辑测试笔一支(在TEC-5)上
3.双踪示波器一台(公用)
4.直流万用表一只(公用)
四、实验任务
1.对机器指令组成的简单程序进行译码。
将下表的程序按机器指令格式手工汇编成二进制机器代码,此项任务请在预习时完成。
2.按照下面框图,参考前面实验的电路图完成连线,工作量大概是:
控制台、时序
部件、数据通路和微程序控制器之间的连线。
控制器是控制部件,数据通路是执行部件,时序发生器是时序部件。
注意通用寄存器堆RF的RD1、RD0、RS1、RS0、WR1、WR0与IR3-IR0间的连线。
3.将任务1中的程序代码用控制台指令存入内存中,并根据程序的需要,用数码开关SW7-SW0设置通用寄存器的数据。
注意:
由于设置通用寄存器时会破坏存储器单元的数据,因此应先设置寄存器中的数据,再设置存储器中的程序和数据。
要求使用两组寄存器数据,一组寄存器数据在执行ADDR1,R0指令时产生进位,一组寄存器数据在执行ADDR1,R0指令时不产生进位,以观察同一程序程序的不同执行流程。
4.用单拍(DP)方式执行一遍程序,记录最后得到的四个寄存器的数据,以及由STA指令存入RAM中的数据,与理论分析值比较。
执行时注意观察各个指示灯的显示,以跟踪程序执行的详细过程(可观察到每一条微指令的执行过程)。
5.用连续方式再次执行程序。
这种情况相当于计算机正常的工作。
程序执行到STP指令后自动停机。
读出寄存器中的运算结果,与理论值比较。
五、实验要求
1.务必做好实验预习,这样在实验中才能做到头脑清醒、思路清晰、忙而不乱、心中有数。
2.根据实验任务的要求,预习时做好必要的准备,填好相关表格、数据和理论分析值,以便与实验值对照。
3.本次实验接线较多,务必仔细,以免因接线错误导致控制出错,影响实验进度。
4.写出实验报告,内容是:
(1)实验目的。
(2)实验任务1-5中的数据表格。
(3)值得讨论的其他问题。
六、实验步骤和实验结果
(1)对机器指令系统组成的简单程序进行译码。
(2)接线
本实验接线比较多,需仔细。
接线表
只要把上表中同列的信号用线连接即可,一共接线33条。
接好线后,将编程开关拨到“正常位置”。
合上电源,按CLR#按钮,使TEC-5实验实验系统处于初始状态。
(3)存程序代码,设置通用寄存器R0、R1、R2和R3的第一组值及存储器相关单元的数据。
本组的寄存器数据是R0=35H,R1=43H,R2=10H,R3=07H。
存储器10H单元的内容为55H。
选择这组数据的目的是执行ADDR1,R0指令时不产生进位C,从而在执行JCR3指令时不产生跳转,而是顺序执行。
●设置通用寄存器R0、R1、R2和R3的值
在本操作中,我们打算使R0=35H,R1=43H,R2=10H,R3=07H
1.令DP=0,DB=0,使系统处于连续运行状态。
令SWC=0,SWB=1,SWA=1,使系统处于写寄存器状态WRF。
按CLR#按钮,使实验系统处于初始状态。
2.在SW7—SW0上设置一个存储器地址,该存储器地址供设置通用寄存器使用。
该存储器地址最好是不常用的一个地址,以免设置通用寄存器操作破坏重要的存储器单元的内容。
例如可将该地址设置为FFH。
按一次QD按钮,将FFH写入左端口地址寄存器AR。
3.在SW7—SW0上设置00H,作为通用寄存器R0的寄存器号。
按一次QD按钮,将00H写入指令寄存器IR。
4.在SW7—SW0设置35H,按一次QD按钮,将35H写入IR指定的R0寄存器。
5.在SW7—SW0上设置01H,作为通用寄存器R1的寄存器号。
按一次QD按钮,将01H写入指令寄存器IR。
6.在SW7—SW0设置43H,按一次QD按钮,将43H写入IR指定的R1寄存器。
7.在SW7—SW0上设置02H,作为通用寄存器R2的寄存器号。
按一次QD按钮,将02H写入指令寄存器IR。
8.在SW7—SW0设置10H,按一次QD按钮,将10H写入IR指定的R2寄存器。
9.在SW7—SW0上设置03H,作为通用寄存器R3的寄存器号。
按一次QD按钮,将03H写入指令寄存器IR。
10.在SW7—SW0设置07H,按一次QD按钮,将07H写入IR指定的R3寄存器。
设置寄存器内容完毕。
按CLR#按钮,使系统恢复到初始状态。
注意:
设置完R0、R1、R2、R3的值后,最好用读寄存器控制台操作检查一下写入的内容是否正确。
读寄存器内容的控制台操作见第一章的第七部分控制台。
●存程序机器代码
本操作中,我们从00地址开始存8个机器代码:
01H,5CH,39H,4AH,22H,1EH,78H,60H。
在10H单元存入55H,作为10H单元的初值,以检查LDA和STA两条指令的作用。
1.令DP=0,DB=0,使实验系统处于连续运行状态。
令SWC=0、SWB=0、SWA=1,使实验系统处于写双端口存储器工作方式WRM。
按CLR#按钮,使实验系统处于初始状态。
2.置SW7—SW0为00H,按QD按钮,将00H写入左端口地址寄存器AR。
3.置SW7—SW0为01H,按QD按钮,将01H写入存储器00H单元。
AR自动加1,变为01H。
4.置SW7—SW0为5CH,按QD按钮,将5CH写入存储器01H单元。
AR自动加1,变为02H。
5.置SW7—SW0为39H,按QD按钮,将39H写入存储器02H单元。
AR自动加1,变为03H。
6.置SW7—SW0为4AH,按QD按钮,将4AH写入存储器03H单元。
AR自动加1,变为04H。
7.置SW7—SW0为22H,按QD按钮,将22H写入存储器04H单元。
AR自动加1,变为05H。
8.置SW7—SW0为1EH,按QD按钮,将1EH写入存储器05H单元。
AR自动加1,变为06H。
9.置SW7—SW0为78H,按QD按钮,将78H写入存储器06H单元。
AR自动加1,变为07H。
10.置SW7—SW0为60H,按QD按钮,将60H写入存储器07H单元。
AR自动加1,变为08H。
11.按CLR#按钮,使实验系统恢复到初始状态。
12.置SW7—SW0为10H,按QD按钮,将10H写入左端口地址寄存器AR。
13.置SW7—SW0为55H,按QD按钮,将55H写入存储器10H单元。
AR自动加1,变为11H。
往存储器输入程序和数据结束,按CLR#按钮,使实验系统恢复到初始状态。
注意:
设置完存储器的程序和数据后,最好用存储器器控制台操作检查一下写入的内容是否正确。
读存储器内容的控制台操作见第一章的第七部分控制台。
●用单拍(DP)方式执行一遍程序。
置SWC=0,SWB=0,SWA=0,DP=1,DB=0,使实验系统处于单拍运行状态。
置SW7—SW0=00H,使程序从地址00H开始执行。
按CLR#按钮,使实验系统处于初始状态,然后一次一次按QD按钮,使程序一拍一拍的执行。
在单拍执行过程中,首先要随时监测AR、PC、μA5—μA0和IR的值,以判定程序执行到何处,正在执行哪条指令和微指令。
对照微程序流程图,可以判断出微指令的地址和正在进行的微操作。
程序执行的结果如下:
初值:
R0=35H,R1=43H,R2=10H,R3=07H。
存储器10H单元的内容为55H。
1.ADDR1,R0
执行结果R0=35H,R1=78H,R2=10H,R3=07H。
存储器10H单元的内容为()。
无进位C。
2.JCR3
执行结果R0=35H,R1=78H,R2=10H,R3=07H。
存储器10H单元的内容为()。
PC为()。
进位C不变。
3.STAR1,[R2]
执行结果R0=35H,R1=78H,R2=(),R3=07H。
存储器10H单元的内容为()。
4.LDAR2,[R2]
执行结果R0=35H,R1=78H,R2=(),R3=07H。
存储器10H单元的内容为()。
5.ANDR2,R0
执行结果R0=35H,R1=78H,R2=(),R3=07H。
存储器10H单元的内容为()。
6.SUBR2,R3
执行结果R0=35H,R1=78H,R2=(),R3=07H。
存储器10H单元的内容为()。
进位C为1。
7.OUTR2
执行结果R0=35H,R1=78H,R2=(),R3=07H。
存储器10H单元的内容为()。
可在数据总线DBUS指示灯上观察到()。
8.STP
执行结果R0=(),R1=(),R2=(),R3=()。
存储器10H单元的内容为()。
最后的执行结果可通过控制台的读寄存器操作和读存储器操作观察到,在观察最后结果之前,首先应按CLR#按钮,使实验系统处于初始状态。
●用连续方式执行一遍程序。
1.由于上面的单拍执行程序,已破坏了寄存器R1、R2和存储器10单元的内容(程序没有破坏),因此需要重新设置寄存器R1、R2和存储器10单元的值。
初值:
R0=35H,R1=43H,R2=10H,R3=07H。
存储器10H单元的内容为55H。
2.置SWC=0,SWB=0,SWA=0,DP=0,DB=0,使实验系统处于连续运行状态。
置SW7—SW0=00H,使程序从地址00H开始执行。
按CLR#按钮,使实验系统处于初始状态,然后按一次QD按钮,则程序自动连续运行到地址为07H的STP指令。
执行结果R0=(),R1=(),R2=(),R3=()。
存储器10H
单元的内容为()。
最后的执行结果可通过控制台的读寄存器操作和读存储器操作观察到,在观察最后结果之前,首先应按CLR#按钮,使实验系统处于初始状态。
(4)存程序代码,设置通用寄存器R0、R1、R2和R3的第二组值及存储器相关单元的数据。
本组的寄存器数据是R0=86H,R1=88H,R2=10H,R3=07H。
存储器10H单元的内容为55H。
选择这组数据的目的是执行ADDR1,R0指令时产生进位C,从而在执行JCR3指令时产生跳转,而不是顺序执行。
●设置通用寄存器R0、R1、R2和R3的值
在本操作中,我们打算使R0=86H,R1=88H,R2=10H,R3=07H
1.令DP=0,DB=0,使系统处于连续运行状态。
令SWC=0,SWB=1,SWA=1,使系统处于写寄存器状态WRF。
按CLR#按钮,使实验系统处于初始状态。
2.在SW7—SW0上设置一个存储器地址,该存储器地址供设置通用寄存器使用。
该存储器地址最好是不常用的一个地址,以免设置通用寄存器操作破坏重要的存储器单元的内容。
例如可将该地址设置为0FFH。
按一次QD按钮,将0FFH写入左端口地址寄存器AR。
3.在SW7—SW0上设置00H,作为通用寄存器R0的寄存器号。
按一次QD按钮,将00H写入指令寄存器IR。
4.在SW7—SW0设置86H,按一次QD按钮,将86H写入IR指定的R0寄存器。
5.在SW7—SW0上设置01H,作为通用寄存器R1的寄存器号。
按一次QD按钮,将01H写入指令寄存器IR。
6.在SW7—SW0设置88H,按一次QD按钮,将88H写入IR指定的R1寄存器。
7.在SW7—SW0上设置02H,作为通用寄存器R2的寄存器号。
按一次QD按钮,将02H写入指令寄存器IR。
8.在SW7—SW0设置10H,按一次QD按钮,将10H写入IR指定的R0寄存器。
9.SW7—SW0上设置03H,作为通用寄存器R3的寄存器号。
按一次QD按钮,将03H写入指令寄存器IR。
10.在SW7—SW0设置07H,按一次QD按钮,将07H写入IR指定的R3寄存器。
设置寄存器内容完毕。
按CLR#按钮,使系统恢复到初始状态。
注意:
设置完R0、R1、R2、R3的值后,最好用读寄存器控制台操作检查一下写入的内容是否正确。
读寄存器内容的控制台操作见第一章的第七部分控制台。
●存程序机器代码
本操作中,我们从00地址开始存8个机器代码:
01H,5CH,39H,4AH,22H,1EH,78H,60H。
在10H单元存入55H,作为10H单元的初值,以检查LDA和STA两条指令的作用。
1.令DP=0,DB=0,使实验系统处于连续运行状态。
令SWC=0、SWB=0、SWA=1,使实验系统处于写双端口存储器工作方式WRM。
按CLR#按钮,使实验系统处于初始状态。
2.置SW7—SW0为00H,按QD按钮,将00H写入左端口地址寄存器AR。
3.置SW7—SW0为01H,按QD按钮,将01H写入存储器00H单元。
AR自动加1,变为01H。
4.置SW7—SW0为5CH,按QD按钮,将5CH写入存储器01H单元。
AR自动加1,变为02H。
5.置SW7—SW0为39H,按QD按钮,将39H写入存储器02H单元。
AR自动加1,变为03H。
6.置SW7—SW0为4AH,按QD按钮,将4AH写入存储器03H单元。
AR自动加1,变为04H。
7.置SW7—SW0为22H,按QD按钮,将22H写入存储器04H单元。
AR自动加1,变为05H。
8.置SW7—SW0为1EH,按QD按钮,将1EH写入存储器05H单元。
AR自动加1,变为06H。
7.置SW7—SW0为78H,按QD按钮,将78H写入存储器06H单元。
AR自动加1,变为07H。
8.置SW7—SW0为60H,按QD按钮,将60H写入存储器07H单元。
AR自动加1,变为08H。
9.按CLR#按钮,使实验系统恢复到初始状态。
10.置SW7—SW0为10H,按QD按钮,将10H写入左端口地址寄存器AR。
11.置SW7—SW0为55H,按QD按钮,将55H写入存储器10H单元。
AR自动加1,变为11H。
往存储器输入程序和数据结束,按CLR#按钮,使实验系统恢复到初始状态。
注意:
设置完存储器的程序和数据后,最好用存储器器控制台操作检查一下写入的内容是否正确。
读存储器内容的控制台操作见第一章的第七部分控制台。
●用单拍(DP)方式执行一遍程序。
置SWC=0,SWB=0,SWA=0,DP=1,DB=0,使实验系统处于单拍运行状态。
置SW7—SW0=00H,使程序从地址00H开始执行。
按CLR#按钮,使实验系统处于初始状态,然后一次一次按QD按钮,使程序一拍一拍的执行。
在单拍执行过程中,首先要随时监测AR、PC、μA5—μA0和IR的值,以判定程序执行到何处,正在执行哪条指令和微指令。
对照微程序流程图,可以判断出微指令的地址和正在进行的微操作。
程序执行的结果如下:
初值:
R0=86H,R1=88H,R2=10H,R3=07H。
存储器10H单元的内容为55H。
1.ADDR1,R0
执行结果R0=(),R1=(),R2=(),R3=()。
存储器10H单元的内容为()。
有进位C。
2.JCR3
执行结果R0=(),R1=(),R2=(),R3=()。
存储器10H单元的内容为()。
PC为()。
进位C不变。
3.STP
执行结果R0=(),R1=(),R2=(),R3=()。
存储器10H单元的内容为(),进位C为1。
最后的执行结果可通过控制台的读寄存器操作和读存储器操作观察到,在观察最后结果之前,首先应按CLR#按钮,使实验系统处于初始状态。
●用连续方式执行一遍程序。
1.由于上面的单拍执行程序,已破坏了寄存器R1内容(程序没有破坏),因此需要重新设置寄存器R1的值。
初值:
R0=86H,R1=88H,R2=10H,R3=07H。
存储器10H单元的内容为55H。
2.置SWC=0,SWB=0,SWA=0,DP=0,DB=0,使实验系统处于连续运行状态。
置SW7—SW0=00H,使程序从地址00H开始执行。
按CLR#按钮,使实验系统处于初始状态,然后按一次QD按钮,则程序自动连续运行到地址为07H的STP指令。
执行结果R0=(),R1=(),R2=(),R3=()。
存储器10H单元的内容为()。
最后的执行结果可通过控制台的读寄存器操作和读存储器操作观察到,在观察最后结果之前,首先应按CLR#按钮,使实验系统处于初始状态。