您好,欢迎访问三七文档
大连理工大学本科实验报告课程名称:计算机组成原理实验学院(系):软件学院专业:软件工程班级:090学号:200992学生姓名:2011年6月18日大连理工大学实验报告学院(系):软件学院专业:软件工程班级:090姓名:学号:200992实验台:实验时间:2011.实验室:C-108成绩:指导教师签字:实验一:微程序控制计算机实验1.实验目的:了解微程序控制计算机的工作原理及实现方法、初步学会程序的流程图画法及程序的模块化设计、调试方法。2.实验平台:硬件平台:复旦大学FD-MCES教学平台;软件平台:自己做汇编和Unidebbuger调试软件3.实验要求:(任务)1)建立指令集文件(*.DEF指令系统)2)建立微程序文件(*.M19)3)编写二位乘法程序,通过调试观察汇编指令在微程序控制计算机中的实施过程,学会程序设计中的流程图,模块化设计及调试方法。ORG0STRT:JKBSTRTLDA8001HMOVR3,AL1:JKBL1LDA8001HMOVR2,A;输入第一个两位数L2:JKBL2LDA8001HMOVR5,AL3:JKBL3LDA8001HMOVR4,A;输入第二个两位数L31:JPBL31MOVA,#4STA8002H;打印*号L4:JPBL4MOVA,#0AHSTA8002HL5:JPBL5MOVA,R2STA8002HL6:JPBL6MOVA,#10HADDA,R3STA8002H;输出第一个两位数L7:JPBL7MOVA,#9STA8002H;打印=号L8:JPBL8MOVA,#0AHSTA8002HL9:JPBL9MOVA,R4STA8002H;输出第二个两位数L10:JPBL10MOVA,#10HADDA,R5STA8002H;打印两个操作数L11:MOVA,R3ADDA,R2ADDA,R3ADDA,R3ADDA,R3ADDA,R3ADDA,R3ADDA,R3ADDA,R3ADDA,R3ADDA,R3MOVR3,A;将第一个两位数放到一个寄存器中MOVA,R5ADDA,R4ADDA,R5ADDA,R5ADDA,R5ADDA,R5ADDA,R5ADDA,R5ADDA,R5ADDA,R5ADDA,R5MOVR5,A;把第二个两位数放到一个寄存器中,使用的方法是将R5个R3相加等于这两位数相乘MOVR7,#0MOVR6,#0JMPL13R3与R5的相乘,个十位放在R6里,千百位放在R7里L12:MOVR0,#100ADDA,R0MOVR6,AL13:MOVA,R6ADDA,R3MOVR6,AMOVA,R5MOVR0,#1SUBA,R0JCL14;判断R5是否小于0,是则结束循环加MOVR5,AMOVA,R6MOVR0,#100SUBA,R0JCL12;判断R6是否大于100,若大于则R7+1,否则跳到L12,把多减的100还给R6MOVR6,AMOVA,R7MOVR0,#1ADDA,R0MOVR7,AJMPL13;循环操作L14:MOVA,R6SUBA,R3JCOVER1;因为多加了一次R3但是为了防止相减之后借位(该情况有可能发生在实际的最后一次R6为90多再加一个两位数后超过100而把百位数给R7了,代表R7多加1了,需要还给R6用以减去最后一次多减的)MOVR6,A下面是分离并打印部分L15:JPBL15MOVA,#0AHSTA8002HL16:JPBL16MOVA,#0AHSTA8002H;相乘,R6为个十位,R7为千百位SPR:MOVA,R6MOVR0,#10MOVR2,#0MOVR3,#1CIRC:SUBA,R0JCOVER;个十位分离,r1用来放十位数字MOVR1,AMOVA,R2ADDA,R3MOVR2,AMOVA,R1JMPCIRCOUT:JPBOUTSTA8002HMOVA,R2L22:JPBL22STA8002HJMPQIANOVER:ADDA,R0MOVR1,AJMPOUT;恢复运算结果,跳转到打印个位QIAN:MOVA,R7MOVR0,#10MOVR2,#0MOVR3,#1CIRC2:SUBA,R0JCOVER2;千百位分离,r1用来放百位数字MOVR1,AMOVA,R2ADDA,R3MOVR2,AMOVA,R1JMPCIRC2OUT2:JPBOUT2MOVA,R2SUBA,R3JCOUT3;判断千位是否为零,不是则继续打印MOVA,R1STA8002HMOVA,R2L33:JPBL33MOVR0,#10HADDA,R0STA8002HJMPSTRT;打印千位OUT3:JPBOUT3MOVA,R1MOVR0,#10HADDA,R0STA8002HJMPSTRTOVER2:ADDA,R0MOVR1,AJMPOUT2;恢复运算结果,跳转到打印百位OVER1:MOVR0,#100ADDA,R0MOVR6,AMOVA,R7MOVR0,#1SUBA,R0MOVR7,AJMPL154)实验原理图:要求将CPU的各信号加方向标,延伸IR(指令寄存器)下面如何接微程序控制部分以及各部件的控制端口与微指令发出口的联结。5)实验原理:要求通过一条具体汇编指令说明本实验计算机的工作原理及实现方法(从PC=0、MPC=0形成开始说起,为什么程序可以连续执行?)指令:ADDA,RiPC=0,执行ADD命令,PC置为1,将A中数据存入ALU(累加器),当Ri数据到来,ALU把两个数据相加,结果由OB到达数据总线DB,再送回A中。因为此时,PC=1,所以它会继续执行下一条指令。6)实验操作步骤流程图。该流程图应包括以下几个部分:(可以设为不是第一次使用,但要注意操作过程的实际情况而非理想情况)通过自己做汇编建立汇编指令集载入成功后编写汇编程序右击生成的cpu图标并program提示成功打开桌面的Unidebugger.exe,启动通用调试器,并修改系统参数打开impact下载cpu目标程序bit文件并调试下载汇编指令和微程序并调试用试验箱输入数据完成实验7)二位乘法程序流程图:要求分成3个部分(1)数据输入、运算式打印部分(2)乘积运算部分(3)数据位的分离与打印结果部分3.体会、意见、建议这个实验是一个很有压力的实验,感觉比较难。必须充分的理解并掌握了打印机和汇编工具才能有效的进行实验。另外老师的讲解很不错,很详细,解决了大部分的疑惑。更重要的一点是这是一个题量不小的程序,将我们分为几个人一组是一个很有创新的举动(目前来讲),不仅仅使我们能够减轻负担,还参与了集体分工的活动,也着实认识到了编程规范和注解的重要性,和自己在实际运作中的不足。将四个数分别存入任选的四个寄存器中打印*号,空格打印第一操作数的个位十位并换行打印=号打印空格,第二操作数的个位十位并换行进行寄存器运算,处理好进位以及加和关系打印结果数据大连理工大学实验报告学院(系):软件学院专业:软件工程班级:090姓名:学号:200992实验台:实验时间:2011.实验室:C-108成绩:指导教师签字:实验二:监控程序与汇编实验4.实验目的:(1)了解教学计算机的指令格式、指令编码、选择的寻址方式和具体功能。(2)了解汇编语言的语句与机器语言的指令之间的对应关系,了解伪指令在汇编过程中的作用,学习用汇编语言设计程序的过程和方法。(3)学习教学机监控程序的功能、监控命令的使用方法,体会软件系统在计算机组成中的地位和作用。2.实验平台硬件平台:清华大学TEC-XP实验箱的MACH部分软件平台:监控程序pec16.exe3.实验要求:(任务)(1)使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容;1)R↙;显示寄存器的内容2)RR0↙;修改寄存器R0的内容,被修改的寄存器与所赋值之间可以无空格,也可有一个或数个空格主机显示:寄存器原值:在该提示符下输入新的值0036再用R命令显示寄存器内容,则R0的内容变为0036。3)D2000↙会显示从2000H地址开始的连续128个字的内容;连续使用不带参数的D命令,起始地址会自动加128(即80H)。4)E2000↙:屏幕将显示2000H地址单元原有的内容,然后输入你将要修改的内容(如输入2000,将依次改变地址单元2001–2005的内容为:1111,2222,3333,4444,5555)。(2)使用A命令写一小段汇编程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况;1)在命令行提示符状态下输入:A2000↙;表示程序从2000H(内存RAM起始地址)开始屏幕将显示:2000:输入如下形式的程序:2000:MVRDR0,AAAA;MVRD与R0之间有且只有一个空格2002:MVRDR1,55552004:ADDR0,R12005:ANDR0,R12006:RET;程序的最后一个语句,必须为RET指令2007:(直接敲回车键,结束A命令输入程序的操作过程)G2000↙程序运行结束后,可以看到程序的运行结果,屏幕显示各寄存器的值,其中R0和R1的值均为5555H,说明程序运行正确。用P或T命令,单步执行这段程序,观察指令执行果在命令行提示符状态下输入:T2000↙寄存器R0被赋值为AAAAHT↙寄存器R1被赋值为5555HT↙做加法运算,和放在R0,R0的值变为FFFFHT↙做与运算,结果放在R0,R0的值变为5555H用P命令执行过程同上。其中T总是执行单条指令,但执行P命令时,则把每一个CALL语句连同被调用的子程序一次执行完成。T、P命令每次执行后均显示所有通用寄存器及状态寄存器的内容,并反汇编出下一条将要执行的指令。(3)要求根据所学知识编写:从键盘输入一个数字,并对其检测是否是0-9的数字,如果是则计算该值到10的累加和,如果不是则重新输入。(2040)MVRDR2,0030MVRDR3,0039(2044)IN81SHRR0SHRR0JRNC2044IN80MVRDR1,00FFANDR0,R1CMPR0,R2JRNC2053DECR0,R2MVRRR1,R0MVRDR2,0009MVRRR3,R0(2066)INCR3ADDR1,R3CMPR3,R2JRNZ2066RET4.体会、意见、建议这次实验是相对简单一点的,我感觉重点在于程序设计的步骤以及对指令jrnz的理解程度。但是感觉是实验之间的间隔实在太长,忘却的东西太多,希望教务能好好考虑安排。大连理工大学实验报告学院(系):软件学院专业:软件工程班级:09姓名:学号:实验台:实验时间:2011.实验室:成绩:指导教师签字:实验三:脱机运算器实验1.实验目的:(1)理解运算器芯片Am2901的功能和内部组成,运行中使用的控制信号及各自的控制作用;(2)理解4片Am2901构成16位运算器的具体方案,各数据位信号、各控制位信号的连接关系;(3)使用24位微型开关中的23位控制信号确定运算与处理功能。2.实验平台硬件平台:清华大学TEC-XP实验箱的MACH部分3.实验要求:(任务)(1)了解TEC-XP运算器基本组件2901的工作原理;4位的算逻运算部件ALU,输出为F,两路输入R和S,最低位进位信号Cn。实现R+S、S-R、R-S;三种算术运算,R∨S、R∧S、R∧S、R⊕S、R⊕S五种逻辑运算。16个4位通用寄存器组成的寄存器组。双端口(A和B)控制读出、单端口(B)控制写入。通过A和B指定被读写的寄存器;4位的Q寄存器,实现硬件乘除法指令和对本身内容完成左右移位,能接收ALU输出。输出送到ALU的S输入端。(2)了解TEC-XP实验箱是如何使用4片2901构成16位运算器;(3)了解并掌握24位控制开关相应的序列所实现的控制功能;编码I8~I6I5~I3I2~I0REGQY功能RS000FFR+SAQ001FS-RAB010F→BAR-S0Q011F→BFR∪S0B100F/2→BQ/2FR∩S0A101F/2→BF/R∩SDA1102F→B2QFR⊕SDQ1112F→BF/(R⊕S)D0A/B口地址:源与目的操作数的寄存器编号;I8-I0:3组3位分别选择操作数来源、操
本文标题:机组实验报告
链接地址:https://www.777doc.com/doc-3746928 .html