计算机组成原理课程设计报告完整版
本作品内容为计算机组成原理课程设计报告完整版,格式为 doc ,大小 1043968 KB ,页数为 27页
('计算机组成原理课程设计报告班级:06计算机6班姓名:李凯学号:20063007完成时间:2009年1月3日一、课程设计目的1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;3.培养综合实践及独立分析、解决问题的能力。二、课程设计的任务针对COP2000实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;之后编写实现乘法和除法的程序进行设计的验证。三、课程设计使用的设备(环境)1.硬件\uf06cCOP2000实验仪\uf06cPC机2.软件\uf06cCOP2000仿真软件四、课程设计的具体内容(步骤)1.详细了解并掌握COP2000模型机的微程序控制器原理,通过综合实验来实现该模型机指令系统的特点:COP2000模型机包括了一个标准CPU所具备所有部件,这些部件包括:运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。其中运算器和中断控制电路以及跳转控制电路用CPLD来实现,其它电路都是用离散的数字电路组成。微程序控制部分也可以用组合逻辑控制来代替。模型机为8位机,数据总线、地址总线都为8位,但其工作原理与16位机相同。相比而言8位机实验减少了烦琐的连线,但其原理却更容易被学生理解、吸收。模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数。指令码的最低两位用来选择R0-R3寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。模型机有24位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。24位控制位分别介绍如下:XRD:外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。EMWR:程序存储器EM写信号。EMRD:程序存储器EM读信号。PCOE:将程序计数器PC的值送到地址总线ABUS上。EMEN:将程序存储器EM与数据总线DBUS接通,由EMWR和EMRD决定是将DBUS数据写到EM中,还是从EM读出数据送到DBUS。IREN:将程序存储器EM读出的数据打入指令寄存器IR和微指令计数器uPC。EINT:中断返回时清除中断响应和中断请求标志,便于下次中断。ELP:PC打入允许,与指令寄存器的IR3、IR2位结合,控制程序跳转。MAREN:将数据总线DBUS上数据打入地址寄存器MAR。MAROE:将地址寄存器MAR的值送到地址总线ABUS上。OUTEN:将数据总线DBUS上数据送到输出端口寄存器OUT里。STEN:将数据总线DBUS上数据存入堆栈寄存器ST中。RRD:读寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。RWR:写寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。CN:决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。FEN:将标志位存入ALU内部的标志寄存器。X2:X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。X1:X0:COP2000中有7个寄存器可以向数据总线输出数据,但在某一特定时刻只能有一个寄存器输出数据.由X2,X1,X0决定那一个寄存器输出数据.X2X1X0输出寄存器000IN_OE外部输入门001IA_OE中断向量010ST_OE堆栈寄存器011PC_OEPC寄存器100D_OE直通门101R_OE右移门110L_OE左移门111没有输出WEN:将数据总线DBUS的值打入工作寄存器W中。AEN:将数据总线DBUS的值打入累加器A中。S2:S2、S1、S0三位组合决定ALU做何种运算。S1:S0:COP2000中的运算器由一片EPLD实现.有8种运算,通过S2,S1,S0来选择.运算数据由寄存器A及寄存器W给出,运算结果输出到直通门D。S2S1S0功能000A+W加001A-W减010AW或011A&W与100A+W+C带进位加101A-W-C带进位减110~AA取反111A输出A模型机的寻址方式分五种:①累加器寻址:操作数为累加器A,例如“CPLA”是将累加器A值取反,还有些指令是隐含寻址累加器A,例如“OUT”是将累加器A的值输出到输出端口寄存器OUT。②寄存器寻址:参与运算的数据在R0-R3的寄存器中,例如“ADDA,R0”指令是将寄存器R0的值加上累加器A的值,再存入累加器A中。③寄存器间接寻址:参与运算的数据在存储器EM中,数据的地址在寄存器R0-R3中,例如“MOVA,@R1”指令是将寄存器R1的值做为地址,把存储器EM中该地址的内容送入累加器A中。④存储器直接寻址:参与运算的数据在存储器EM中,数据的地址为指令的操作数。例如“ANDA,40H”指令是将存储器EM中40H单元的数据与累加器A的值做逻辑与运算,结果存入累加器A。⑤立即数寻址:参与运算的数据为指令的操作数。例如“SUBA,#10H”是从累加器A中减去立即数10H,结果存入累加器A。模型机的缺省的指令集分几大类:算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入/输出指令。该模型机微指令系统的特点(包括其微指令格式的说明等):模型机有24位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。微程序控制器由微程序给出24位控制信号,而微程序的地址又是由指令码提供的,也就是说24位控制信号是由指令码确定的。该模型机的微指令的长度为24位,其中微指令中只含有微命令字段,没有微地址字段。其中微命令字段采用直接按位的表示法,哪位为0,表示选中该微操作,而微程序的地址则由指令码指定。2。计算机中实现乘法和除法的原理(1)无符号乘法①实例演示(即,列4位乘法具体例子演算的算式):②硬件原理框图:③算法流程图:(2)无符号除法①实例演示(即,列4位除法具体例子演算的算式):②硬件原理框图:③算法流程图:3.对应于以上算法如何分配使用COP2000实验仪中的硬件(初步分配,设计完成后再将准确的使用情况填写在此处)乘法:寄存器R0:初值为0,运行时累加每次循环的结果,运行后R0中即为乘法的积。寄存器R1:存放被乘数。寄存器R2:存放乘数。除法:寄存器R0:存放被除数寄存器R1:存放除数寄存器R2:初值为0,每次循环如符合条件就将其左移并加1,否则仅左移,最终结果即为商寄存器R3:计数器。初值为0,左移时将其移至最高位为1,R3记录移动次数。作除法时,商每上一位时R3即自减1。因左移次数与最终右移次数相等,故当R3减至负数(FF)时即终止程序运行。4.在COP2000集成开发环境下设计全新的指令/微指令系统设计结果如表所示(可按需要增删表项)(1)新的指令集(设计两个不同指令集要分别列表)助记符机器码1机器码2指令说明ADDR?,A000001xx04–07将累加器A中的数加入到寄存器R中,不影响标志位ADDR?,#II000010xx08–0BII将立即数II加入到寄存器R中,不影响标志位ANDR?,#II000011xx0C–0FII将寄存器R中的数与立即数II按位与,并影响标志位CMPR?,A000100xx10–13作差比较寄存器R中数与累加器A中数的大小,并影响标志位CMPR?,#II000101xx14–17II作差比较寄存器R中数与立即数II的大小,并影响标志位MOVA,R?000110xx18–1B将寄存器R中的数放入累加器A中JMPMM000111xx1C–1FMM跳转到地址MMJCMM001000xx20–23MM若进位标志置1,则跳转到MM地址JZMM001001xx24–MM若零标志标置1,则跳转到MM地址27MOVR?,#II001010xx28–2BII将立即数II存放到寄存器R中SHLR?001011xx2C–2F寄存器R中的数不带进位向左移一位,不影响标志位SHRR?001100xx30–33寄存器R中的数不带进位向右移一位,不影响标志位SUBR?,A001101xx34–37从寄存器R中减去累加器A中的数,不影响标志位SUBR?,#II001110xx38–3BII从寄存器R中减去立即数II,影响标志位OVER001111xx3C–3F结束(2)新的微指令集助记符状态微地址微程序数据输出数据打入地址输出运算器移位控制\uf06dPCPC_FATCH_T000CBFFFF指令寄存器IRPC输出A输出写入+101FFFFFFA输出+102FFFFFFA输出+103FFFFFFA输出+1ADDR?,A04FFF7EF寄存器值R?寄存器WA输出+105FFFB98ALU直通寄存器R?加运算+106CBFFFF指令寄存器IRPC输出A输出写入+107FFFFFFA输出+1ADDR?,#II08FFF7F7寄存器值R?寄存器AA输出+109C7FFEF存贮器值EM寄存器WPC输出A输出+1+10AFFFB98ALU直通寄存器R?加运算+10BCBFFFF指令寄存器IRPC输出A输出写入+1ANDR?,#II0CFFF7F7寄存器值R?寄存器AA输出+10DC7FFEF存贮器值EM寄存器WPC输出A输出+1+10EFFFEFB标志位C,Z与运算+10FCBFFFF指令寄存器IRPC输出A输出写入+1CMPR?,A10FFFF8FALU直通寄存器WA输出+111FFF7F7寄存器值R?寄存器AA输出+112FFFEF9标志位C,Z减运算+113CBFFFF指令寄存器IRPC输出A输出+1CMPR?,#II14FFF7F7寄存器值R?寄存器AA输出+115C7FFEF存贮器值EM寄存器WPC输出A输出+1+116FFFEF9标志位C,Z减运算+117CBFFFF指令寄存器IRPC输出A输出写入+1MOVA,R?18FFF7F7寄存器值R?寄存器AA输出+119CBFFFF指令寄存器IRPC输出A输出写入+11AFFFFFFA输出+11BFFFFFFA输出+1JMPMM1CC6FFFF存贮器值EM寄存器PCPC输出A输出+1写入1DCBFFFF指令寄存器IRPC输出A输出写入+11EFFFFFFA输出+11FFFFFFFA输出+1JCMM20C6FFFF存贮器值EM寄存器PCPC输出A输出+1写入21CBFFFF指令寄存器IRPC输出A输出写入+122FFFFFFA输出+123FFFFFFA输出+1JZMM24C6FFFF存贮器值EM寄存器PCPC输出A输出+1写入25CBFFFF指令寄存器IRPC输出A输出写入+126FFFFFFA输出+127FFFFFFA输出+1MOVR?,#II28C7FBFF存贮器值EM寄存器R?PC输出A输出+1+129CBFFFF指令寄存器IRPC输出A输出写入+12AFFFFFFA输出+12BFFFFFFA输出+1SHLR?2CFFF7F7寄存器值R?寄存器AA输出+12DFFF9DFALU左移寄存器R?A输出左移+12ECBFFFF指令寄存器IRPC输出A输出写入+12FFFFFFFA输出+1SHRR?30FFF7F7寄存器值R?寄存器AA输出+131FFF9BFALU右移寄存器R?A输出右移+132CBFFFF指令寄存器IRPC输出A输出写入+133FFFFFFA输出+1SUBR?,A34FFFF8FALU直通寄存器WA输出+135FFF7F7寄存器值R?寄存器AA输出+136FFFA99ALU直通寄存器R?减运算+137CBFFFF指令寄存器IRPC输出A输出写入+1SUBR?,#II38FFF7F7寄存器值R?寄存器AA输出+139C7FFEF存贮器值EM寄存器WPC输出A输出+13AFFFA99ALU直通寄存器R?标志位C,Z减运算+13BCBFFFF指令寄存器IRPC输出A输出写入+1OVER3CCBFFFF指令寄存器IRPC输出A输出写入+15.用设计完成的新指令集编写实现无符号二进制乘法、除法功能的汇编语言程序(1)乘法4位乘法的算法流程图与汇编语言程序清单:MOVR0,#00HMOVR1,#09HMOVR2,#0AHBEGIN:ANDR2,#0FHJZEXITANDR2,#01HJZLOOPMOVA,R1ADDR0,ALOOP:SHLR1SHRR2JMPBEGINEXIT:OVER(2)除法4位除法的算法流程图与汇编语言程序清单:MOVR0,#0AAHMOVR1,#0DHMOVR2,#0HMOVR3,#0HANDR1,#0FHJZEXITENTER:CMPR1,#80HJCINCREJMPBEGININCRE:SHLR1ADDR3,#1HJMPENTERBEGIN:MOVA,R0CMPR1,AJCRIGHTSHLR2JMPDECRERIGHT:SHLR2ADDR2,#1HMOVA,R1SUBR0,ADECRE:SHRR1SUBR3,#1HJCEXITJMPBEGINEXIT:OVER6.上述程序的运行情况(跟踪结果)程序运行的过程:乘法:汇编指令程序地址机器码指令说明微程序PC\uf06dPC运行时寄存器或存储器的值MOVR0,#0H002800将立即数0H送入寄存器R0中C7FBFF+1+1EM:28CBFFFF+1写入EM:00R0:0MOVR1,#0FH02290F将立即数0FH送入寄存器R1中C7FBFF+1+1EM:29CBFFFF+1写入EM:09R1:09MOVR2,#0AH042A0A将立即数0AH送入寄存器R2中C7FBFF+1+1EM:2ACBFFFF+1写入EM:0AR2:0ABEGIN:ANDR2,#0FH060E0F测试寄存器R2中的数是否为0,并影响标志位FFF7F7+1EM:0ECFF7EF+1A:0AFFFEFB+1W:0FCBFFFF+1写入JZEXIT(JZ14)082414若零标志标置1,则跳转到EXIT标识的地址14C6FFFF写入+1EM:24CBFFFF+1写入ANDR2,#01H0A0E01将寄存器R2中的数与立即数01H按位与,并影响FFF7F7+1EM:0EC7FFEF+1+1A:0A标志位FFFEFB+1EM:01W:01CBFFFF+1写入JZLOOP(JZ10)0C2410若零标志标置1,则跳转到LOOP标识的地址10C6FFFF写入+1EM:24CBFFFF+1写入EM:10LOOP:SHLR1102D寄存器R1中的数不带进位向左移一位,不影响标志位FFF7F7+1EM:2DFFF9DF+1A:09CBFFFF+1写入R1:12SHRR21132寄存器R2中的数不带进位向右移一位,不影响标志位FFF7F7+1EM:32FFF9BF+1A:0ACBFFFF+1写入R2:05JMPBEGIN(JMP06)121C06跳转到地址BEGIN标识的地址06C6FFFF写入+1EM:1CCBFFFF+1写入EM:06BEGIN:ANDR2,#0FH060E0F测试寄存器R2中的数是否为0,并影响标志位FFF7F7+1EM:0ECFF7EF+1A:0AFFFEFB+1W:0FCBFFFF+1写入JZEXIT(JZ14)082414若零标志标置1,则跳转到EXIT标识的地址14C6FFFF写入+1EM:24CBFFFF+1写入EM:14ANDR2,#01H0A0E01将寄存器R2中的数与立即数01H按位与,并影响标志位FFF7F7+1EM:0EC7FFEF+1+1A:05FFFEFB+1EM:01W:01CBFFFF+1写入JZLOOP(JZ10)0C2410若零标志标置1,则跳转到LOOP标识的地址10C6FFFF写入+1EM:24CBFFFF+1写入EM:10MOVA,R10E19将寄存器R1中的数放入累加器A中FFF7F7+1EM:19CBFFFF+1写入A:12ADDR0,A0F04将累加器A中的数加入到寄存器R0中,不影响标FFF7EF+1EM:04FFFB98+1W:00CBFFFF+1写入R0:2D志位LOOP:SHLR1102D寄存器R1中的数不带进位向左移一位,不影响标志位FFF7F7+1EM:2DFFF9DF+1A:12CBFFFF+1写入R1:24SHRR21132寄存器R2中的数不带进位向右移一位,不影响标志位FFF7F7+1EM:32FFF9BF+1A:05CBFFFF+1写入R2:02JMPBEGIN(JMP06)121C06跳转到地址BEGIN标识的地址06C6FFFF写入+1EM:1CCBFFFF+1写入EM:06BEGIN:ANDR2,#0FH060E0F测试寄存器R2中的数是否为0,并影响标志位FFF7F7+1EM:0ECFF7EF+1A:02FFFEFB+1W:0FCBFFFF+1写入JZEXIT(JZ14)082414若零标志标置1,则跳转到EXIT标识的地址14C6FFFF写入+1EM:24CBFFFF+1写入EM:14ANDR2,#01H0A0E01将寄存器R2中的数与立即数01H按位与,并影响标志位FFF7F7+1EM:0EC7FFEF+1+1A:02FFFEFB+1EM:01W:01CBFFFF+1写入JZLOOP(JZ10)0C2410若零标志标置1,则跳转到LOOP标识的地址10C6FFFF写入+1EM:24CBFFFF+1写入EM:10LOOP:SHLR1102D寄存器R1中的数不带进位向左移一位,不影响标志位FFF7F7+1EM:2DFFF9DF+1A:24CBFFFF+1写入R1:48SHRR21132寄存器R2中的数不带进位向右移一位,不影响标志位FFF7F7+1EM:32FFF9BF+1A:02CBFFFF+1写入R2:01JMPBEGIN(JMP06)121C06跳转到地址BEGIN标识的地址06C6FFFF写入+1EM:1CCBFFFF+1写入EM:06BEGIN:ANDR2,#0FH060E0F测试寄存器R2中的数是否为0,并影响标志位FFF7F7+1EM:0ECFF7EF+1A:01FFFEFB+1W:0FCBFFFF+1写入JZEXIT(JZ14082414若零标志标置1,则跳转到EXIT标识的地址14C6FFFF写入+1EM:24CBFFFF+1写入EM:14ANDR2,#01H0A0E01将寄存器R2中的数与立即数01H按位与,并影响标志位FFF7F7+1EM:0EC7FFEF+1+1A:01FFFEFB+1EM:01W:01CBFFFF+1写入JZLOOP(JZ10)0C2410若零标志标置1,则跳转到LOOP标识的地址10C6FFFF写入+1EM:24CBFFFF+1+1EM:10MOVA,R10E04将寄存器R1中的数放入累加器A中FFF7F7+1EM:19CBFFFF+1写入A:48ADDR0,A0F04将累加器A中的数加入到寄存器R0中,不影响标志位FFF7EF+1EM:04FFFB98+1W:12CBFFFF+1写入R0:5ALOOP:SHLR1102D寄存器R1中的数不带进位向左移一位,不影响标志位FFF7F7+1EM:2DFFF9DF+1A:48CBFFFF+1写入R1:90SHRR21132寄存器R2中的数不带进位向右移一位,不影响标志位FFF7F7+1EM:32FFF9BF+1A:01CBFFFF+1写入R2:00JMPBEGIN(JMP06)121C06跳转到地址BEGIN标识的地址06C6FFFF写入+1EM:1CCBFFFF+1写入EM:06BEGIN:ANDR2,#0FH060E0F测试寄存器R2中的数是否为0,并影响标志位FFF7F7+1EM:0ECFF7EF+1A:00FFFEFB+1W:0FCBFFFF+1写入JZEXIT082414若零标志标置1,则跳转C6FFFF写入+1EM:24(JZ14)到EXIT标识的地址14CBFFFF+1写入EM:14EXIT:OVER1440结束CBFFFF+1写入EM:40除法:汇编指令程序地址机器码指令说明微程序PC\uf06dPC运行时寄存器或存储器的值MOVR0,#0AAH0028AA将立即数0AAH存放到寄存器R0中C7FBFF+1+1EM:28CBFFFF+1写入EM:AAR0:AAMOVR1,#0DH02290D将立即数0DH存放到寄存器R1中C7FBFF+1+1EM:29CBFFFF+1写入EM:0DR1:0DMOVR2,#0H042A00将立即数0存放到寄存器R2中C7FBFF+1+1EM:2ACBFFFF+1写入EM:00R2:00MOVR3,#0H062B00将立即数0存放到寄存器R3中C7FBFF+1+1EM:2BCBFFFF+1写入EM:00R3:00ANDR1,#0FH080DOF测试寄存器R1中的数是否为0,并影响标志位FFF7F7+1EM:0DC7FFEF+1A:0DFFFEFB+1W:0FCBFFFF+1写入EM:0FJZEXIT(JZ2A)0A242A若零标志标置1,则跳转到EXIT标识的地址2AC6FFFF写入+1EM:24CBFFFF+1写入EM:2AENTER:CMPR1,#80H0C1580作差比较寄存器R1中数与立即80H的大小,并影响标志位FFF7F7+1EM:15A:ODC7FFEF+1+1EM:15A:ODFFFEF9+1EM:80W:80CBFFFF+1写入JCINCRE(JC12)0E2012若进位标志置1,则跳转到INCRE标识的地址12C6FFFF写入+1EM:20CBFFFF+1写入EM:12INCRE:SHLR1122D寄存器R1中的数不带进位向左移一位,不影响标FFF7F7+1EM:2DA:0DFFF9DF+1志位CBFFFF+1写入R1:1AADDR3,#1H130B01将立即数1H加入到寄存器R中,不影响标志位FFF7F7+1EM:0BC7FFEF+1+1A:00FFFB98+1EM:01W:01CBFFFF+1写入R3:01JMPENTER(JMP0C)151C0C跳转到ENTER标识的地址0CC6FFFF写入+1EM:1CCBFFFF+1写入EM:0CENTER:CMPR1,#80H0C1580作差比较寄存器R1中数与立即80H的大小,并影响标志位FFF7F7+1EM:15C7FFEF+1+1A:1AFFFEF9+1EM:80W:80CBFFFF+1写入JCINCRE(JC12)0E2012若进位标志置1,则跳转到INCRE标识的地址12C6FFFF写入+1EM:20CBFFFF+1写入EM:12INCRE:SHLR1122D寄存器R1中的数不带进位向左移一位,不影响标志位FFF7F7+1EM:2DFFF9DF+1A:1ACBFFFF+1写入R1:34ADDR3,#1H130B01将立即数1H加入到寄存器R3中,不影响标志位FFF7F7+1EM:0BC7FFEF+1+1A:01FFFB98+1EM:01W:01CBFFFF+1写入R3:02JMPENTER(JMP0C)151C0C跳转到ENTER标识的地址0CC6FFFF写入+1EM:1CCBFFFF+1写入EM:0CENTER:CMPR1,#80H0C1580作差比较寄存器R1中数与立即80H的大小,并影响标志位FFF7F7+1EM:15C7FFEF+1+1A:34FFFEF9+1EM:80W:80CBFFFF+1写入JCINCRE(JC12)0E2012若进位标志置1,则跳转到INCRE标识的地址12C6FFFF写入+1EM:30CBFFFF+1写入EM:12INCRE:122D寄存器R1中的数不带进位向左移一位,不影响标FFF7F7+1EM:2DFFF9DF+1A:34SHLR1志位CBFFFF+1写入R1:68ADDR3,#1H130B01将立即数1H加入到寄存器R3中,不影响标志位FFF7F7+1EM:0BC7FFEF+1+1A:02FFFB98+1EM:01W:01CBFFFF+1写入R3:03JMPENTER(JMP0C)151C0C跳转到ENTER标识的地址0CC6FFFF写入+1EM:1CCBFFFF+1写入EM:0CENTER:CMPR1,#80H0C1580作差比较寄存器R1中数与立即80H的大小,并影响标志位FFF7F7+1EM:68C7FFEF+1+1A:15FFFEF9+1EM:80W:80CBFFFF+1写入JCINCRE(JC12)0E2012若进位标志置1,则跳转到INCRE标识的地址12C6FFFF写入+1EM:20CBFFFF+1写入EM:12INCRE:SHLR1122D寄存器R1中的数不带进位向左移一位,不影响标志位FFF7F7+1EM:2DFFF9DF+1A:68CBFFFF+1写入R1:D0ADDR3,#1H130B01将立即数1H加入到寄存器R3中,不影响标志位FFF7F7+1EM:0BC7FFEF+1+1A:03FFFB98+1EM:01W:01CBFFFF+1写入R3:04JMPENTER(JMP0C)151C0C跳转到ENTER标识的地址0CC6FFFF写入+1EM:1CCBFFFF+1写入EM:0CENTER:CMPR1,#80H0C1580作差比较寄存器R1中数与立即80H的大小,并影响标志位FFF7F7+1EM:15C7FFEF+1+1A:D0FFFEF9+1EM:80W:80CBFFFF+1写入JCINCRE(JC12)0E2012若进位标志置1,则跳转到INCRE标识的地址12C6FFFF写入+1EM:20CBFFFF+1写入EM:12JMPBEGIN101C17跳转到BEGIN标识的地C6FFFF写入+1EM:1C(JMP17)址17CBFFFF+1写入EM:17BEGIN:MOVA,R01718将寄存器R0中的数放入累加器A中FFF7F7+1EM:18CBFFFF+1写入A:AACMPR1,A1811作差比较寄存器R1中数与累加器A中数的大小,并影响标志位FFFF8F+1EM:11FFF7F7+1W:AAFFFEF9+1A:D0CBFFFF+1写入JCRIGHT(JC1D)19201E若零标志标置1,则跳转到RIGHT标识的地址1DC6FFFF写入+1EM:20CBFFFF+1写入EM:1ESHLR21B2E寄存器R2中的数不带进位向左移一位,不影响标志位FFF7F7+1EM:2EFFF9DF+1A:00CBFFFF+1写入R2:00JMPDECRE(JMP23)1C1C23跳转到DECREASE标识的地址23C6FFFF写入+1EM:1CCBFFFF+1写入EM:23DECRE:SHRR12331寄存器R1中的数不带进位向右移一位,不影响标志位FFF7F7+1EM:31FFF9BF+1A:D0CBFFFF+1写入R1:68SUBR3,#1H243B01从寄存器R3中减去立即数1H,并影响标志位FFF7F7+1EM:3BC7FFEF+1A:04FFFA99+1EM:01W:01CBFFFF+1写入R3:03JCEXIT(JC2A)26202A若进位标志置1,则跳转到EXIT标识的地址2AC6FFFF写入+1EM:20CBFFFF+1写入EM:2AJMPBEGIN(JMP17)281C17跳转到BEGIN标识的地址17C6FFFF写入+1EM:1CCBFFFF+1写入EM:17BEGIN:MOVA,R01718将寄存器R0中的数放入累加器A中FFF7F7+1EM:18CBFFFF+1写入A:AACMPR1,A1811作差比较寄存器R1中数FFFF8F+1EM:11与累加器A中数的大小,并影响标志位FFF7F7+1W:AAFFFEF9+1A:68CBFFFF+1写入JCRIGHT(JC1E)19201E若零标志标置1,则跳转到RIGHT标识的地址1DC6FFFF写入+1EM:20CBFFFF+1写入EM:1ERIGHT:SHLR21E2E寄存器R2中的数不带进位向左移一位,不影响标志位FFF7F7+1EM:2EFFF9DF+1A:00CBFFFF+1写入R2:00ADDR2,#1H1F0A01将立即数1H加入到寄存器R2中,不影响标志位FFF7F7+1EM:0AC7FFEF+1+1A:00FFFB98+1EM:01W:01CBFFFF+1写入R2:01MOVA,R12119将寄存器R1中的数放入累加器A中FFF7F7+1EM:19CBFFFF+1写入A:68SUBR0,A2234从寄存器R0中减去累加器A中的数,不影响标志位FFFF8F+1EM:31FFF7F7+1W:68FFFA99+1A:AACBFFFF+1写入R0:42DECREASE:SHRR12331寄存器R1中的数不带进位向右移一位,不影响标志位FFF7F7+1EM:31FFF9BF+1A:68CBFFFF+1写入R1:30SUBR3,#1H243B01从寄存器R3中减去立即数1H,并影响标志位FFF7F7+1EM:3BC7FFEF+1A:03FFFA99+1EM:01W:01CBFFFF+1写入R3:02JCEXIT(JC2A)26202A若进位标志置1,则跳转到EXIT标识的地址2AC6FFFF写入+1EM:20CBFFFF+1写入EM:2AJMPBEGIN(JMP17)281C17跳转到BEGIN标识的地址17C6FFFF写入+1EM:1CCBFFFF+1写入EM:17BEGIN:1718将寄存器R0中的数放入FFF7F7+1EM:18MOVA,R0累加器A中CBFFFF+1写入A:42CMPR1,A1811作差比较寄存器R1中数与累加器A中数的大小,并影响标志位FFFF8F+1EM:11FFF7F7+1W:42FFFEF9+1A:34CBFFFF+1写入JCRIGHT(JC1E)19201E若零标志标置1,则跳转到RIGHT标识的地址1EC6FFFF写入+1EM:20CBFFFF+1写入EM:1ERIGHT:SHLR21E1F寄存器R2中的数不带进位向左移一位,不影响标志位FFF7F7+1EM:2EFFF9DF+1A:01CBFFFF+1写入R2:02ADDR2,#1H1F0A01将立即数1H加入到寄存器R2中,不影响标志位FFF7F7+1EM:0AC7FFEF+1+1A:02FFFB98+1EM:01W:01CBFFFF+1写入R2:03MOVA,R12109将寄存器R1中的数放入累加器A中FFF7F7+1EM:19CBFFFF+1写入A:34SUBR0,A2234从寄存器R0中减去累加器A中的数,不影响标志位FFFF8F+1EM:34FFF7F7+1W:34FFFA99+1A:42CBFFFF+1写入R0:0EDECREASE:SHRR12331寄存器R1中的数不带进位向右移一位,不影响标志位FFF7F7+1EM:31FFF9BF+1A:34CBFFFF+1写入R1:1ASUBR3,#1H243B01从寄存器R3中减去立即数1H,并影响标志位FFF7F7+1EM:3BC7FFEF+1A:02FFFA99+1EM:01W:01CBFFFF+1写入R3:01JCEXIT(JC2A)26202A若进位标志置1,则跳转C6FFFF写入+1EM:20CBFFFF+1写入EM:2A到EXIT标识的地址2AJMPBEGIN(JMP17)281C17跳转到BEGIN标识的地址17C6FFFF写入+1EM:1CCBFFFF+1写入EM:17BEGIN:MOVA,R01718将寄存器R0中的数放入累加器A中FFF7F7+1EM:18CBFFFF+1写入A:0ECMPR1,A1811作差比较寄存器R1中数与累加器A中数的大小FFFF8F+1EM:11FFF7F7+1W:0EFFFEF9+1A:1ACBFFFF+1写入JCRIGHT(JC1E)19201E若零标志标置1,则跳转到RIGHT标识的地址1EC6FFFF写入+1EM:20CBFFFF+1写入EM:1ESHLR21B2E寄存器R2中的数不带进位向左移一位FFF7F7+1EM:2EFFF9DF+1A:03CBFFFF+1写入R2:06JMPDECREASE(JMP23)1C1C23跳转到DECRE标识的地址23C6FFFF写入+1EM:1CCBFFFF+1写入EM:23DECRE:SHRR12331寄存器R1中的数不带进位向右移一位FFF7F7+1EM:31FFF9BF+1A:1ACBFFFF+1写入R1:ODSUBR3,#1H243B01从寄存器R3中减去立即数1HFFF7F7+1EM:3BC7FFEF+1A:01FFFA99+1EM:01W:01CBFFFF+1写入R3:00JCEXIT(JC2A)26202A若进位标志置1,则跳转到EXIT标识的地址2AC6FFFF写入+1EM:20CBFFFF+1写入EM:2AJMPBEGIN(JMP17)281C17跳转到BEGIN标识的地址16C6FFFF写入+1EM:1CCBFFFF+1写入EM:17BEGIN:MOVA,R01718将寄存器R0中的数放入累加器A中FFF7F7+1EM:18CBFFFF+1写入A:0ECMPR1,A1811作差比较寄存器R1中数FFFF8F+1EM:11与累加器A中数的大小FFF7F7+1W:0EFFFEF9+1A:ODCBFFFF+1写入JCRIGHT(JC1E)19201E若零标志标置1,则跳转到RIGHT标识的地址1EC6FFFF写入+1EM:20CBFFFF+1写入EM:1ERIGHT:SHLR21E1F寄存器R2中的数不带进位向左移一位FFF7F7+1EM:2EFFF9DF+1A:06CBFFFF+1写入R2:0CADDR2,#1H1F0A01将立即数1H加入到寄存器R2中FFF7F7+1EM:0AC7FFEF+1+1A:0CFFFB98+1EM:01W:01CBFFFF+1写入R2:0DMOVA,R12119将寄存器R1中的数放入累加器A中FFF7F7+1EM:19CBFFFF+1写入A:ODSUBR0,A2234从寄存器R0中减去累加器A中的数FFFF8F+1EM:34FFF7F7+1W:0DFFFA99+1A:0ECBFFFF+1写入R0:01DECRE:SHRR12331寄存器R1中的数不带进位向右移一位FFF7F7+1EM:3FFF9BF+1A:0DCBFFFF+1写入R1:06SUBR3,#1H243B01从寄存器R3中减去立即数1HFFF7F7+1EM:3BC7FFEF+1A:00FFFA99+1EM:01W:01CBFFFF+1写入R3:FFJCEXIT(JC2A)26202A若进位标志置1,则跳转到EXIT标识的地址2AC6FFFF写入+1EM:2CBFFFF+1写入EM:2AEXIT:OVER2A20结束CBFFFF+1写入EM:407.设计结果说明调试运行程序时是否出现问题,是否有重新调整指令/微指令系统设计的情况出现?请在此做具体说明。在课程设计的开始我更多的只是考虑了程序功能的实现,没有考虑程序的时间空间效率,因此在后来的优化过程中对指令微指令系统设计做了部分调整,简要叙述如下:1.在设计开始时乘法的算法设计为一个初始值为4的计数器,每次加法操作后减一直至计数器为零结束,后来考虑到当乘数的操作位为零时,没有必要进行加零操作,于是设计了跳转指令及程序,由此想到乘数开始可能是零,所以又添加了在开始判断乘数是否为零的操作。关于这个操作,开始时设计了一个(TESR?)指令,让数据与零比较,后来考虑可以用(ANDR?#0FH)取代。除法指令一开始考虑老师推荐的加减交替算法,但后来考虑被除数需要位数大于八位才能实现该算法,不适合八位模型机,后改为模拟笔算算法。2.关于程序的可拓展性:8位被除数除以4位除数中的时候,因为如(0101)这样的四位数实际上只有3位有效,但同样属于4位数的范畴。此时如果被除数的有效位数与除数的有效位数之差大于4的时候,就会出现结果为5位或更多位的情况。如果一个算法只能计算8位除以4位结果也一定是4位的情况,那局限性也未免太大了。于是在思考、实验后增设一个计数器,在运算前对除数的最高位进行测试,如果是0,则左移1位,计数器加1。直至最高位非0再继续转入后续运算。因为按此算法,最后一次循环中被除数中减去的应该是除数本身,也就是说,除数左移的次数与后来的次数相同。于是在后面的除法运算中,商每上一位计数器则自减1,直到减为0。此时用标志位就可以很方便的判断出来,结束程序。这样一来,无论除数是多少位,甚至超过4位(不大于8位)时,提高了程序的性能,但是溢出判断功能显得难以实现。3.进而优化乘法算法:之前的乘法只能算被乘数和乘数均为4位(包括小于4位),结果为8位(包括小于8位)的情况,但如果有例如5位乘以3位结果是8位的情况就无法处理,优化之前移位4位后就停止,改动后我把结束条件改为了判断乘数后乘数是否为0,此时程序可以处理任何结果低于8位的无符号整数乘法。4.关于指令微指令的优化:设计开始时我设计了可能用到的指令微指令,在后来的优化过程中发现,一些指令可以被其他指令取代,这样减少了指令集中的指令数目,达到优化的目的,但是从时间空间效率综合考虑,并没有将指令集合优化到数目尽可能少的程度指令少提高了空间效率,但是将增加程序长度从而降低时间效率。五、本次课程设计的总结体会(不少于200字)主要总结学到的具体知识、方法及设计中的切身体会;包括列出在设计的各个阶段出现的问题及解决方法。两个星期的课程设计,使我收获了很多。在两周的时间里我复习了《计算机组成原理》课程尤其是指令系统和微程序设计的知识,在实践中我们对理论知识在得以加深理解和强化。尤其是微程序设计一部分,在完成了指令集的设计之后我对计算机的指令系统乃至整个计算机系统的运行有了新的认识,使我对计算机的认识从各个不见组成部分的系统级深入到寄存器级。正像蒋本珊教材中“不同对象观察的计算机硬件系统”一节所叙述的那样,在学习《计算机组成原理》课程之前,计算机对于我们来说只是一个或立或卧在那里的铁箱子,至于它内部的结构组成和工作原理是完全透明的,而学习了《计算机组成原理》课程后我们观察到的计算机硬件系统包括运算器,控制器,存储器,输入输出以及各个系统的工作原理。而在学习、进行了课程设计的实践后,我看到了系统级下寄存器级的工作原理,运行过程。本次课程设计不但使我们复习了计算机组成原理课程的内容,还让我们复习并应用了算法设计与分析以及汇编语言课程的内容,时我们加深了对计算机系统概念的理解。在设计的过程中我体会到了从“蛮力算法”的提出实现,经过分析优化得到时间空间效率相对好的程序,同时在设计的过程中复习了汇编语言课程内容,复习了乘法除法子程序,更深刻的体会到模型机用程序实现乘除法以及乘除法子程序的应用。希望学校学院能给我安排更多的此类实践课程,增强我们的动手实践能力,促进理论知识的消化吸收。最后感谢几位指导教师的悉心讲解和耐心知道,谢谢您!',)
提供计算机组成原理课程设计报告完整版会员下载,编号:1700828050,格式为 docx,文件大小为27页,请使用软件:wps,office word 进行编辑,PPT模板中文字,图片,动画效果均可修改,PPT模板下载后图片无水印,更多精品PPT素材下载尽在某某PPT网。所有作品均是用户自行上传分享并拥有版权或使用权,仅供网友学习交流,未经上传用户书面授权,请勿作他用。若您的权利被侵害,请联系963098962@qq.com进行删除处理。