资源描述
.实验五 CPU组成与机器指令执行周期实验一、实验目的1. 将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机。2. 用微程序控制器控制模型计算机的数据通路。3. 通过TEC-5执行由8条机器指令组成的简单程序,掌握机器指令与微指令的关系,牢固建立计算机的整机概念。二、实验电路l 本次实验将前面几个实验中的所有电路,包括运算器、存储器、通用寄存器堆、微程序控制器等模块组合在一起,构成一台简单的模型机。因此,在基本实验中,这是最复杂的一个实验,也将是最有收获的一个实验。在前面的实验中,实验者本身作为“控制器”,完成了对数据通路的控制。而在本次实验中,数据通路的控制将交由微程序控制器来完成。TEC-5从内存中取出一条机器指令到执行指令结束的一个指令周期,是由微程序完成的,即一条机器指令对应一个微程序序列。三、实验设备1. TEC-5计算机组成原理实验系统1台2. 逻辑测试笔一支(在TEC-5)上3. 双踪示波器一台(公用)4. 直流万用表一只(公用)四、实验任务1. 对机器指令组成的简单程序进行译码。将下表的程序按机器指令格式手工汇编成二进制机器代码,此项任务请在预习时完成。内存地址机器指令机器代码(十六进制表示)00HADD R1, R001HJC R302HSTA R1, R203HLDA R2, R204HAND R2, R005HSUB R2, R306HOUT R207HSTP 2. 按照下面框图,参考前面实验的电路图完成连线,工作量大概是:控制台、时序部件、数据通路和微程序控制器之间的连线。控制器是控制部件,数据通路是执行部件,时序发生器是时序部件。注意通用寄存器堆RF的RD1、RD0、RS1、RS0、WR1、WR0与IR3-IR0间的连线。精品.3. 将任务1中的程序代码用控制台指令存入内存中,并根据程序的需要,用数码开关SW7SW0设置通用寄存器的数据。注意:由于设置通用寄存器时会破坏存储器单元的数据,因此应先设置寄存器中的数据,再设置存储器中的程序和数据。要求使用两组寄存器数据,一组寄存器数据在执行 ADD R1,R0指令时产生进位,一组寄存器数据在执行ADD R1,R0指令时不产生进位,以观察同一程序程序的不同执行流程。4. 用单拍(DP)方式执行一遍程序,记录最后得到的四个寄存器的数据,以及由STA指令存入RAM中的数据,与理论分析值比较。执行时注意观察各个指示灯的显示,以跟踪程序执行的详细过程(可观察到每一条微指令的执行过程)。5. 用连续方式再次执行程序。这种情况相当于计算机正常的工作。程序执行到STP指令后自动停机。读出寄存器中的运算结果,与理论值比较。五、实验要求1. 务必做好实验预习,这样在实验中才能做到头脑清醒、思路清晰、忙而不乱、心中有数。2. 根据实验任务的要求,预习时做好必要的准备,填好相关表格、数据和理论分析值,以便与实验值对照。3. 本次实验接线较多,务必仔细,以免因接线错误导致控制出错,影响实验进度。4. 写出实验报告,内容是:(1) 实验目的。(2) 实验任务15中的数据表格。(3) 值得讨论的其他问题。六、实验步骤和实验结果(1)按照表1中的指令格式与功能对表2中的机器指令组成的简单程序进行译码。精品.表1 指令格式与功能名称助记符功能指令格式IR7 IR6 IR5 IR4IR3 IR2IR1 IR0加法ADD Rd, RsRd + RsRd0 0 0 0Rs1 Rs0Rd1 Rd0减法SUB Rd, RsRd - RsRd0 0 0 1Rs1 Rs0Rd1 Rd0逻辑与AND Rd, RsRd & RsRd0 0 1 0Rs1 Rs0Rd1 Rd0存数STA Rd, RsRdRs0 0 1 1Rs1 Rs0Rd1 Rd0取数LDA Rd, RsRsRd0 1 0 0Rs1 Rs0Rd1 Rd0条件转移JC R3若C1 则R3PC0 1 0 11 1 停机STP暂停执行0 1 1 0 输出OUT RsRsDBUS0 1 1 1Rs1 Rs0 表2 机器指令程序内存地址机器指令机器代码(十六进制表示)00HADD R1, R001HJC R302HSTA R1, R203HLDA R2, R204HAND R2, R005HSUB R2, R306HOUT R207HSTP (2)接线 本实验接线比较多,需仔细。接线表LDIRPC+1LDPC#AR+1LDAR#LDDR1LDDR2LDRi数据通路LDIRPC+1LDPC#AR+1LDAR#LDDR1LDDR2LDRi控制器SW_BUS#Rs_BUS#ALU_BUS#RAM_BUS#CER#CEL#数据通路SW_BUS#Rs_BUS#ALU_BUS#RAM_BUS#CER#CEL#控制器LR/W#Cn#M S0 S1 S2 S3数据通路LR/W#Cn# M S0 S1 S2 S3控制器进位CIR7IR6IR5IR4数据通路进位CIR7IR6IR5IR4数据通路IR3IR2IR1IR0IR1IR0精品.数据通路RS1RS0RD1RD0WR1WR0控制器TJ时序电路TJ只要把上表种同列的信号用线连接即可,一共接线33条。接好线后,将编程开关拨到“正常位置”。合上电源,按CLR#按钮,使TEC-5实验实验系统处于初始状态。(3)存程序代码,设置通用寄存器R0、R1、R2和R3的第一组值及存储器相关单元的数据。本组的寄存器数据是R0=35H,R1=43H,R2=10H,R3=07H。存储器10H单元的内容为55H。选择这组数据的目的是执行ADD R1,R0指令时不产生进位C,从而在执行JC R3指令时不产生跳转,而是顺序执行。 设置通用寄存器R0、R1、R2和R3的值在本操作中,我们打算使R0=35H,R1=43H,R2=10H,R3=07H1令DP=0,DB=0,使系统处于连续运行状态。令SWC=0,SWB=1,SWA=1,使系统处于写寄存器状态WRF。按CLR#按钮,使实验系统处于初始状态。2 在SW7SW0上设置一个存储器地址,该存储器地址供设置通用寄存器使用。该存储器地址最好是不常用的一个地址,以免设置通用寄存器操作破坏重要的存储器单元的内容。例如可将该地址设置为0FFH。按一次QD按钮,将0FFH写入左端口地址寄存器AR。3 在SW7SW0上设置00H,作为通用寄存器R0的寄存器号。按一次QD按钮,将00H写入指令寄存器IR。4 在SW7SW0设置35H,按一次QD按钮,将35H写入IR指定的R0寄存器。5 在SW7SW0上设置01H,作为通用寄存器R1的寄存器号。按一次QD按钮,将01H写入指令寄存器IR。6 在SW7SW0设置43H,按一次QD按钮,将43H写入IR指定的R1寄存器。7 在SW7SW0上设置02H,作为通用寄存器R2的寄存器号。按一次QD按钮,将02H写入指令寄存器IR。8 在SW7SW0设置10H,按一次QD按钮,将10H写入IR指定的R2寄存器。9 在SW7SW0上设置03H,作为通用寄存器R3的寄存器号。按一次QD按钮,将03H写入指令寄存器IR。精品.10. 在SW7SW0设置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置SW7SW0为00H,按QD按钮,将00H写入左端口地址寄存器AR。3置SW7SW0 为01H,按QD按钮,将01H写入存储器00H单元。AR自动加1,变为01H。4置SW7SW0 为5CH,按QD按钮,将5CH写入存储器01H单元。AR自动加1,变为02H。5置SW7SW0 为39H,按QD按钮,将39H写入存储器02H单元。AR自动加1,变为03H。6置SW7SW0 为4AH,按QD按钮,将4AH写入存储器03H单元。AR自动加1,变为04H。7置SW7SW0 为22H,按QD按钮,将22H写入存储器04H单元。AR自动加1,变为05H。8置SW7SW0 为1EH,按QD按钮,将1EH写入存储器05H单元。AR自动加1,变为06H。7置SW7SW0 为78H,按QD按钮,将78H写入存储器06H单元。AR自动加1,变为07H。8置SW7SW0 为60H,按QD按钮,将60H写入存储器07H单元。AR自动加1,变为08H。9按CLR#按钮,使实验系统恢复到初始状态。10置SW7SW0为10H,按QD按钮,将10H写入左端口地址寄存器AR。11置SW7SW0 为55H,按QD按钮,将55H写入存储器10H单元。AR自动加1,变为11H。往存储器输入程序和数据结束,按CLR#按钮,使实验系统恢复到初始状态。注意:设置完存0储器的程序和数据后,最好用存储器器控制台操作检查一下写入的内容是否正确。读存储器内容的控制台操作见第一章的第七部分控制台。用单拍(DP)方式执行一遍程序。精品.置SWC=0,SWB=0,SWA=0,DP=1,DB=0,使实验系统处于单拍运行状态。置SW7SW0=00H,使程序从地址00H开始执行。按CLR#按钮,使实验系统处于初始状态,然后一次一次按QD按钮,使程序一拍一拍的执行。在单拍执行过程中,首先要随时监测AR、PC、A5A0和IR的值,以判定程序执行到何处,正在执行哪条指令和微指令。对照微程序流程图,可以判断出微指令的地址和正在进行的微操作。程序执行的结果如下:初值:R0=35H,R1=43H,R2=10H,R3=07H。存储器10H单元的内容为55H。1ADD R1,R0执行结果 R0=35H,R1=78H,R2=10H,R3=07H。存储器10H单元的内容为55H。无进位C。2JC R3执行结果 R0=35H,R1=78H,R2=10H,R3=07H。存储器10H单元的内容为55H。PC为02H。进位C不变。3STA R1,R2执行结果 R0=35H,R1=78H,R2=10H,R3=07H。存储器10H单元的内容为78H。4LDA R2,R2执行结果 R0=35H,R1=78H,R2=78H,R3=07H。存储器10H单元的内容为78H。5AND R2,R0执行结果 R0=35H,R1=78H,R2=30H,R3=07H。存储器10H单元的内容为78H。6SUB R2,R3执行结果 R0=35H,R1=78H,R2=29H,R3=07H。存储器10H单元的内容为78H。进位C为1。7OUT R2执行结果 R0=35H,R1=78H,R2=29H,R3=07H。存储器10H单元的内容为78H。可在数据总线DBUS指示灯上观察到29H。8STP执行结果 R0=35H,R1=78H,R2=29H,R3=07H。存储器10H单元的内容为78H。最后的执行结果可通过控制台的读寄存器操作和读存储器操作观察到,在观察最后结果之前,首先应按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,使实验系统处于连续运行状态。置SW7SW0=00H,使程序从地址00H开始执行。按CLR#按钮,使实验系统处于初始状态,然后按一次QD按钮,则程序自动连续运行到地址为07H的STP指令。执行结果 R0=35H,R1=78H,R2=29H,R3=07H。存储器10H单元的内容为78H。最后的执行结果可通过控制台的读寄存器操作和读存储器操作观察到,在观察最后结果之前,首先应按CLR#按钮,使实验系统处于初始状态。(4)存程序代码,设置通用寄存器R0、R1、R2和R3的第二组值及存储器相关单元的数据。本组的寄存器数据是R0=86H,R1=88H,R2=10H,R3=07H。存储器10H单元的内容为55H。选择这组数据的目的是执行ADD R1,R0指令时产生进位C,从而在执行JC R3指令时产生跳转,而不是顺序执行。 设置通用寄存器R0、R1、R2和R3的值在本操作中,我们打算使R0=86H,R1=88H,R2=10H,R3=07H1令DP=0,DB=0,使系统处于连续运行状态。令SWC=0,SWB=1,SWA=1,使系统处于写寄存器状态WRF。按CLR#按钮,使实验系统处于初始状态。2在SW7SW0上设置一个存储器地址,该存储器地址供设置通用寄存器使用。该存储器地址最好是不常用的一个地址,以免设置通用寄存器操作破坏重要的存储器单元的内容。例如可将该地址设置为0FFH。按一次QD按钮,将0FFH写入左端口地址寄存器AR。3在SW7SW0上设置00H,作为通用寄存器R0的寄存器号。按一次QD按钮,将00H写入指令寄存器IR。4在SW7SW0设置86H,按一次QD按钮,将86H写入IR指定的R0寄存器。5在SW7SW0上设置01H,作为通用寄存器R1的寄存器号。按一次QD按钮,将01H写入指令寄存器IR。6在SW7SW0设置88H,按一次QD按钮,将88H写入IR指定的R1寄存器。7在SW7SW0上设置02H,作为通用寄存器R2的寄存器号。按一次QD按钮,将02H写入指令寄存器IR。8在SW7SW0设置10H,按一次QD按钮,将10H写入IR指定的R0寄存器。9SW7SW0上设置03H,作为通用寄存器R3的寄存器号。按一次QD按钮,将03H写入指令寄存器IR。精品.10在SW7SW0设置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置SW7SW0为00H,按QD按钮,将00H写入左端口地址寄存器AR。3置SW7SW0 为01H,按QD按钮,将01H写入存储器00H单元。AR自动加1,变为01H。4置SW7SW0 为5CH,按QD按钮,将5CH写入存储器01H单元。AR自动加1,变为02H。5置SW7SW0 为39H,按QD按钮,将39H写入存储器02H单元。AR自动加1,变为03H。6置SW7SW0 为4AH,按QD按钮,将4AH写入存储器03H单元。AR自动加1,变为04H。7置SW7SW0 为22H,按QD按钮,将22H写入存储器04H单元。AR自动加1,变为05H。8置SW7SW0 为1EH,按QD按钮,将1EH写入存储器05H单元。AR自动加1,变为06H。7置SW7SW0 为78H,按QD按钮,将78H写入存储器06H单元。AR自动加1,变为07H。8置SW7SW0 为60H,按QD按钮,将60H写入存储器07H单元。AR自动加1,变为08H。9按CLR#按钮,使实验系统恢复到初始状态。10置SW7SW0为10H,按QD按钮,将10H写入左端口地址寄存器AR。11置SW7SW0 为55H,按QD按钮,将55H写入存储器10H单元。AR自动加1,变为11H。往存储器输入程序和数据结束,按CLR#按钮,使实验系统恢复到初始状态。注意:设置完存储器的程序和数据后,最好用存储器器控制台操作检查一下写入的内容是否正确。读存储器内容的控制台操作见第一章的第七部分控制台。用单拍(DP)方式执行一遍程序。精品.置SWC=0,SWB=0,SWA=0,DP=1,DB=0,使实验系统处于单拍运行状态。置SW7SW0=00H,使程序从地址00H开始执行。按CLR#按钮,使实验系统处于初始状态,然后一次一次按QD按钮,使程序一拍一拍的执行。在单拍执行过程中,首先要随时监测AR、PC、A5A0和IR的值,以判定程序执行到何处,正在执行哪条指令和微指令。对照微程序流程图,可以判断出微指令的地址和正在进行的微操作。程序执行的结果如下:初值:R0=86H,R1=88H,R2=10H,R3=07H。存储器10H单元的内容为55H。1ADD R1,R0执行结果 R0=86H,R1=0EH,R2=10H,R3=07H。存储器10H单元的内容为55H。有进位C。2JC R3执行结果 R0=86H,R1=0EH,R2=10H,R3=07H。存储器10H单元的内容为55H。PC为07H。进位C不变。3STP执行结果 R0=86H,R1=0EH,R2=10H,R3=07H。存储器10H单元的内容为55H,进位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,使实验系统处于连续运行状态。置SW7SW0=00H,使程序从地址00H开始执行。按CLR#按钮,使实验系统处于初始状态,然后按一次QD按钮,则程序自动连续运行到地址为07H的STP指令。执行结果 R0=86H,R1=0EH,R2=10H,R3=07H。存储器10H单元的内容为55H。最后的执行结果可通过控制台的读寄存器操作和读存储器操作观察到,在观察最后结果之前,首先应按CLR#按钮,使实验系统处于初始状态。如有侵权请联系告知删除,感谢你们的配合!精品
展开阅读全文