1、计算机组成原理课程设计复杂模型机设计实验复杂模型机设计实验一、 实验目的综合运用所学计算机原理知识,设计并实现较为完整的计算机。二、 实验设备1、 ZYE1603B计算机组成原理教学实验系统一台,排线若干。2、 PC机一台。三、 数据格式及指令系统1. 指令格式模型机设计四大类指令共十六条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。1). 算术逻辑指令设计9条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:D7 D6 D5 D4 D3 D2D1 D0OPCODErsrd其中,OPCODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:rs或rd选定的寄
2、存器000110R0R1R29条算术逻辑指令的名称、功能和具体格式见表2). 访存指令及转移指令模型机设计2条访存指令存数(STA)和取数(LDA),2条转移指令无条件转移(JMP)和结果为零或有进位转移指令(BZC),这4条指令长度为2个字节,其指令格式为:D7 D6D5 D4D3 D2D1 D00 0MOPCODErdD其中,OPCODE为操作码,rd为目的寄存器地址(LDA、STA指令使用)。D为偏移量(正负均可),M为寻址模式,其定义如下:寻址模式M有效地址E说明00011011EDE(D)E(RI)DE(PC)D直接寻址间接寻址RI变址寻址相对寻址本模型机规定变址寄存器RI指定为寄存
3、器R2。3). I/O指令输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:D7 D6 D5 D4 D3 D2D1 D0OPCODEaddrrd其中,addr01时,选中“INPUT DEVICE”中的开关组作为输入设备,addr10时,选中“OUTPUT DEVICE”中的数码块作为输出设备。4).停机指令指令格式如下:D7 D6 D5 D4 D3 D2D1 D0OPCODE0000HALT指令用于实现停机操作。2. 指令系统本模型机共有16条基本指令,其中算术逻辑指令7条,访存指令和程序控制指令4条,输入输出指令2条,其它指令1条,表列出了各条指令的格式、汇编符号、指令功能。表1
4、助记符号指令格式功能CLR rdMOV rs,rdADC rs,rdSBC rs,rdINC rdAND rs,rdCOM rdRRC rs,rdRLC rs,rd011100rd1000rsrd1001rsrd1010rsrd1011rd1100rsrd1101rd1110rsrd1111rsrd0rdrsrdrs+rd+cyrdrs-rd-cyrdrd+1rdrsrdrdrdrsrdrsrdLDA M, D, rdSTA M, D, rdJMP M, DBZC M, D00M00rdD00M01rdD00M00rdD00M00rdDErsrdEEPC当CY1或Z1,EPCIN addr,
5、rdOUT addr, rd010001rd010101rdaddrrdrdaddrHALT010001rd停机四、 总体设计本模型机的数据通路框图如图所示。图1: 复杂模型机数据通路图根据机器指令系统的要求,设计微程序流程图及确定微地址如下:图2:复杂模型机微程序流程图按照系统建议的微指令格式,参照微指令流程图,将每条微指令代码化,译成二进制代码表,并将二进制代码表转换为联机操作时的十六进制格式文件。五、 实验步骤1. 根据复杂模型机的指令系统,编写实验程序。实验过程如下:本实验完全使用寄存器操作。程序首先从数据输入开关采集数据放入R0中,经循环左移两次放入R1中。然后再次从数据输入开关采集
6、数据放入R0中,经循环将右移一次与R1中的数据相加,其结果送到R1中,然后判断加法的结果是否有进位或为全零,若是就循环运行,否则,输出结果到数码管上显示。实验的机器指令程序如下:根据流程图,确定如下微程序:微程序:$M00018108 $M2205DB81$M0101ED82 $M230180E4$M0200C050 $M24018001$M0300A004 $M2595AAA0$M0400E0A0 $M2600A027$M0500E006 $M2701BC28$M0600A007 $M2895EA29$M0700E0A0 $M2995AAA0$M0801ED8A $M2A01B42B$M09
7、01ED8C $M2B959B41$M0A00A03B $M2C01A42D$M0B018001 $M2D65AB6E$M0C00203C $M2E0D9A01$M0D00A00E $M2F01AA30$M0E01B60F $M300D8171$M0F95EA25 $M31959B41$M1001ED83 $M32019A01$M1101ED85 $M3301B435$M1201ED8D $M3405DB81$M1301EDA6 $M35B99B41$M14001001 $M360D9A01$M15030401 $M37298838$M16018016 $M38019801$M173D9A01
8、 $M3919883A$M18019201 $M3A019801$M1901A22A $M3B070A08$M1A01B22C $M3C068A09$M1B01A232$M1C01A233$M1D01A236$M1E318237$M1F318239$M20009001$M21028401验证程序:助记符 机器码IN 01, R0 $P0044IN 01, R2 $P0146SBC R2,R0 $P02A8MOV R0, R1 $P0381RLC R1, R1 $P04F5OUT R1,R1 $P0559HALT $P0600指令功能:在实验板的数据开关手动输入一个数存到R0寄存器里,在输入另一
9、个数到R2寄存器里,然后用R2-R0存到R0寄存器里,接着把R0里的数转存到R1寄存器,然后再把R1的数左移一位存到R1,接着在数码管显示输出当前R1寄存器里的数,最后停止。1. 按图连接实验线路2. 写入程序/运行程序1) 手动写入A. 按如下步骤讲微代码写入微控器中的存储器2816中:1 将编程开关置为PROM(编程)状态。2 将实验板上“STATE UNIT”中的“STEP”置为“STEP”,“STOP”置为“RUN”状态。3 用二进制模拟开关置微地址MA5MA0。4 在MK24MK1开关上置微代码,24位开关对应24位显示灯,开关量置为“0”时灯亮,开关量为“1”时灯灭。5 启动时序电
10、路(按动启动按钮“START”),即将微代码写入到2816的相应地址对应的单元中。6 重复步骤,将所有的微代码写入2816中。B. 按如下步骤校验微代码1 将编程开关置为READ(校验)状态。2 将实验板上“STATE UNIT”中的“STEP”置为“STEP”,“STOP”置为“RUN”状态。3 用二进制模拟开关置微地址MA5MA0。4 启动时序电路(按动启动按钮“START”),读出微代码。观察显示灯MD24MD1的状态(灯亮为“0”,灭为“1”),检查读出的微代码是否与写入的相同。如果不同,则将开关置于PROM编程状态,重新执行)即可。C. 按如下步骤使用KWE微程序进行机器指令程序的装
11、入。1 使编程开关处于“RUN”,STEP为“STEP”状态,STOP为“RUN”状态。2 拨动总清开关CLR(010),微地址寄存器清零,程序计数器清零,然后使控制台SWB、SWA开关置为“0 1”,并按动一次START,微地址显示灯显示“010001”。3 再按动一次START,微地址灯显示“010100”,此时数据开关的内容置为要写入的机器指令。再按动两次START键后,即完成该条指令的写入,并且微地址显示灯显示“010001”。(注:由KWE的流程图可知,该流程每执行一次,将向PC寄存器所指向的存储器单元中写入一个字节的数据,并且将PC加1。)4 如果还需要向存储器中输入数据,则需重复
12、重新执行。D. 按如下步骤使用KRD微程序进行机器指令程序的检查。1 使编程开关处于“RUN”,STEP为“STEP”状态,STOP为“RUN”状态。2 拨动总清开关CLR(010),微地址寄存器清零,程序计数器清零,然后使控制台SWB、SWA开关置为“0 0”, 并按动一次启动开关START,微地址显示灯显示“010000”。3 再按动一次START,微地址灯显示“010010”,第三次按动STRAT,微地址灯显示为“010111”,再按动STRAT后此时输出单元的数码管显示为PC寄存器所指单元的内容。(注:由KRD的流程图可知,该流程每执行一次,将显示PC寄存器所指向的存储器单元中一个字节
13、的数据,并且将PC加1。)4 如果还需要检查存储器中其他单元的数据,则需重复重新执行。2) 联机读/写程序将微代码写入文本文件中,通过联机软件载入实验系统。3. 运行程序1) 本机运行A. 单步运行程序1 使编程开关处于“RUN”状态,STEP为“STEP”状态,STOP为“RUN”状态。2 拨动总清开关CLR(010),微地址寄存器清零,程序计数器清零。3 单步运行一条微指令,每按动一次START键,即单步运行一条微指令。对照微程序流程图,观察微地址显示灯是否与流程一致。4 当运行结束后,可检查存数单元(0BH)中的结果是否和理论计算结果一致。B. 连续运行程序1 使编程开关处于“RUN”状
14、态,STEP为“EXEC”状态,STOP为“RUN”状态。2 拨动总清开关CLR(010),微地址寄存器清零,程序计数器清零。3 按动START键,系统将连续运行程序,直至将STOP拨至“STOP”状态。4 当运行结束后,可检查存数单元(0BH)中的结果是否和理论计算结果一致。2) 联机运行联机运行程序时,进入软件界面,装载机器指令及微指令后,运行即图3:实验连接图六、实验总结:这次课程设计中,基于前几次实验中,对计算机的大致组成以及运行原理有了初步的了解,并且对实验板也比较熟悉了,所以按照实验连接图连线也比较上手了,经过那么多次实验,觉得连线最重要的就是认真,如果一开小差就会出错, 每连完一
15、条线之后,都要检查一遍,看是否连错,这告诉我们,做每一件事都要认认真真的完成,容不得一丝马虎,否则只会落得个事倍功半的效果。这次课程设计最重要的就是编写程序了,要想编写程序首次要对程序了解,知道每个助记符对应的机器码是什么意思,对应的二进制的每四位代表什么。在对程序理解的过程中,刚开始不知道程序的十六进制是如何通过助记符转换过来的,经过对指令格式的剖析才知道没个助记符对应的二进制,然后对刚编好的程序进行运行,通过观察CPU一般都是先取机器指令,然后编译,送往寄存器,然后再去指令,再编译,一直这样下去,直到停止为止,此次课程设计最大的收获就是,通过观察大致了解了CPU的运行方式,并且都指令也有了较大的了解,还懂得了合作和请教才是完成任务的最佳方法。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1