文档库 最新最全的文档下载
当前位置:文档库 › 华中科技大学计算机学院C++实验报告 实验四

华中科技大学计算机学院C++实验报告 实验四

华中科技大学计算机学院C++实验报告 实验四
华中科技大学计算机学院C++实验报告 实验四

课程实验报告

课程名称:面向对象程序设计

实验名称:面向对象的整型队列编程

院系:计算机科学与技术

专业班级:CS1209班

学号:

姓名:

指导教师:李春花

2015 年01 月22 日

一、需求分析

1.题目要求

整型队列是一种先进后出的存储结构,对其进行的操作通常包括判断队列是否为空、向队列顶添加一个整型元素、出队列等。整型队列类型及其操作函数采用面向对象的C++语言定义,请将完成上述操作的所有函数采用C++编程,然后写一个main函数对队列的所有操作函数进行测试。

class QUEUE{

int *const elems; //申请内存用于存放队列的元素

const int max; //队列能存放的最大元素个数

int head, tail; //队列头和尾,队列空时head=tail;初始时head=tail=0 public:

QUEUE(int m); //初始化队列:最多m个元素

QUEUE(const QUEUE&s); //用队列s拷贝初始化队列

virtual operator int ( ) const; //返回队列的实际元素个数

virtual QUEUE& operator<<(int e); //将e入队列,并返回队列

virtual QUEUE& operator>>(int &e); //出队列到e,并返回队列

virtual QUEUE& operator=(const QUEUE&s); //赋s给队列,并返回被赋值的队列

virtual void print( ) const; //打印队列

virtual ~QUEUE( ); //销毁队列

};

2.需求分析

本题目用数组实现队列,需要预知需要空间的大小,会造成空间浪费或不够用;插入或删除不需要动态分配或删除内存,耗时很小;支持随机存取。

二、软件开发

使用CodeBlocks编译器进行编译及进行调试。

三、软件测试

1)总的界面如图1所示:

图1 2)进行入队列操作,如图2所示:

图2 3)进行出队列操作,如图3所示:

图3 4)返回队列的实际元素个数,如图4所示:

图4 5)将两个队列进行打印,如图5所示:

图5

四、过程和体会

课程设计的体会

通过本次实验让我对队列的构建以及对其进行一些列的操作有了更进一步的了解。

五、源码和说明

1.文件清单及其功能说明

main.c 是源程序文件

dsa.exe 是可执行文件

2.用户使用说明书

使用CodeBlocks进行编译及调试。

3.源代码

#include

#include

#include

#include

using namespace std;

class QUEUE{

int *const elems; //申请内存用于存放队列的元素

const int max; //队列能存放的最大元素个数

int head, tail;

public:

QUEUE(int m);

QUEUE(const QUEUE&s); //用队列s拷贝初始化队列

virtual operator int ( ) const //返回队列的实际元素个数

{

return (tail-head);

}

virtual QUEUE& operator<<(int e) //将e入队列,并返回队列

{

if((tail+1)%max==head)

{

cout<<"队列为满!!\n";

}

else

elems[tail]=e;

tail++;

return(*this);

}

virtual QUEUE& operator>>(int &e) //出队列到e,并返回队列

{

if(head==tail)

{

cout<<"队列为空!!\n";

}

else

e=elems[head];

head=(head++)/max;

return(*this);

}

virtual QUEUE& operator=(const QUEUE&s) //赋s给队列,并返回被赋值的队列{

head=s.head;

tail=s.tail;

return (*this);

}

virtual void print( ) const //打印队列

{

cout<<"最大容量:\t"<

cout<<"当前的容量:\t"<<(tail-head)<

cout<<"里面的元素为:\t";

for(int i=head;i<=(tail-head);i++)

{

cout<<"\t"<

}

cout<<"\n";

}

virtual ~QUEUE( ) //销毁队列

{

delete []elems;

if(elems==0)

cout<<"销毁队列成功!!\n";

else

cout<<"销毁队列没成功!\n";

}

};

QUEUE::QUEUE(int m=20):max(m),elems(new int[m])

{

tail=head=0;

}

QUEUE::QUEUE(const QUEUE&s):max(s.max),elems(s.elems)

{

head=tail=0;

}

void menu(void)

{

cout<<"\t*********************************************************************\n";

cout<<"\t 1.返回队列的实际元素个数";

cout<<"\t\t 2.将e入队列,并返回队列\n";

cout<<"\t 3.出队列到e,并返回队列";

cout<<"\t\t\t 4.赋s给队列,并返回被赋值的队列\n";

cout<<"\t 5.打印队列";

cout<<"\t\t\t\t 6.销毁队列\n";

cout<<"\t\t\t\t 0.退出程序\n";

cout<<"\t********************************************************************\n"; }

int main()

{

int m,op,x,e,e1,e2,e3;

cout<<"请输入最大容量m:";

cin>>m;

QUEUE qu1(m);

QUEUE qu2(qu1);

cout<<"两个队列初始化成功!";

getchar();getchar();

do

{

system("cls");

menu();

cout<<"请输入序号:";

cin>>op;

switch(op)

{

case 1:

x=qu1;

cout<<"实际元素个数为:\t"<

getchar();getchar();

break;

case 2:

cout<<"请输入想入队列的元素:";

cin>>e;

qu1<

getchar();getchar();

break;

case 3:

qu1>>e1;

cout<<"出队元素为:\t"<

getchar();getchar();

break;

case 4:

qu2=qu1;

getchar();getchar();

break;

case 5:

cout<<"qu1为:\n";

qu1.print();

getchar();

cout<<"qu2为:\n";

qu2.print();

getchar();

break;

case 6:

cout<<"请输入想销毁的队列1 OR 2:";

cin>>e3;

if(e3==0)

qu1.~QUEUE();

else

qu2.~QUEUE();

getchar();getchar();

break;

default :

cout<<"请重新输入:\n";

getchar();getchar();

break;

}

}while(op);

cout<<"******程序退出成功!!!******\n";

return 0;

}

计算机组成实验报告_LAB5

计算机组成实验五——简单的类MIPS单周期处理器实现 生命科学技术学院 5110809XXX 大豆比

目录 1OVERVIEW (1) 1.1实验名称 (1) 1.2实验目的 (1) 1.3实验范围 (1) 1.4注意事项 (1) 2实验描述 (2) 2.1新建工程 (2) 2.2顶层模块Top (5) 2.2.1模块描述 (5) 2.2.2新建模块源文件Top.v (5) 2.2.3定义信号线 (5) 2.2.4程序计数器PC (6) 2.2.5RESET (6) 2.2.6模块实例化,连接模块 (7) 2.2.7连接其他信号线 (8) 3仿真测试 (10) 3.1编写二进制测试程序 (10) 3.2初始化存储器 (10) 3.3编辑testbench文件 (11) 3.4仿真测试,观察波形 (11) 4下载验证 (12) 4.1修改Top.v中Top模块的输入输出端口 (12) 4.2编辑管脚约束文件top.ucf (12) 4.3时钟分频 (12) 4.4指定输入输出端口的意义 (13) 5实验感想与建议 (14) 5.1实验感想 (14) 5.2一些建议 (14) 6实验程序源代码 (15) 6.1Top.v (15) 6.2Ctr.v (18) 6.3Alu.v (21) 6.4AluCtr.v (22) 6.5data_memory.v (23) 6.6register.v (25) 6.7signext.v (27) 6.8inst_memory.v (27) 6.9timeDivider.v (28)

1.OVERVIEW1 1.1实验名称 简单的类MIPS单周期处理器实现-整体调试 1.2实验目的 完成单周期的类MIPS处理器 1.3实验范围 本次实验将覆盖以下范围 1、ISE的使用 2、Xilinx Spartan3E实验板的使用 3、使用VerilogHDL进行逻辑设计 4、仿真测试、下载验证 1.4注意事项 本实验的逻辑设计工具为Xilinx ISE13.4。

计算机组成原理实验报告

福建农林大学计算机与信息学院信息工程类实验报告系:计算机科学与技术专业:计算机科学与技术年级: 09级 姓名:张文绮学号: 091150022 实验课程:计算机组成原理 实验室号:___田405 实验设备号: 43 实验时间:2010.12.19 指导教师签字:成绩: 实验一算术逻辑运算实验 1.实验目的和要求 1. 熟悉简单运算器的数据传送通路; 2. 验证4位运算功能发生器功能(74LS181)的组合功能。 2.实验原理 实验中所用到的运算器数据通路如图1-1所示。其中运算器由两片74181

以并/串形式构成8位字长的ALU。运算器的输出经过一个三态门(74245)和数据总线相连,运算器的两个数据输入端分别由两个锁存器(74373)锁存,锁存器的输入连接至数据总线,数据开关INPUT DEVICE用来给出参与运算的数据,并经过一个三态门(74245)和数据总线相连,数据显示灯“BUS UNIT”已和数据总线相连,用来显示数据总线内容。 图1-2中已将用户需要连接的控制信号用圆圈标明(其他实验相同,不再说明),其中除T4为脉冲信号,其它均为电平信号。由于实验电路中的时序信号均已连至W/R UNIT的相应时序信号引出端,因此,在进行实验时,只需将W/R UNIT 的T4接至STATE UNIT的微动开关KK2的输出端,按动微动开关,即可获得实验所需的单脉冲,而S3,S2,S1,S0,Cn,LDDR1,LDDR2,ALU-B,SW-B各电平控制信号用SWITCH UNIT中的二进制数据开关来模拟,其中Cn,ALU-B,SW-B为低电平控制有效,LDDR1,LDDR2为高电平有效。 3.主要仪器设备(实验用的软硬件环境) ZYE1603B计算机组成原理教学实验系统一台,排线若干。 4.操作方法与实验步骤

计算机组成原理实验报告

重庆理工大学 《计算机组成原理》 实验报告 学号 __11503080109____ 姓名 __张致远_________ 专业 __软件工程_______ 学院 _计算机科学与工程 二0一六年四月二十三实验一基本运算器实验报告

一、实验名称 基本运算器实验 二、完成学生:张致远班级115030801 学号11503080109 三、实验目的 1.了解运算器的组成结构。 2.掌握运算器的工作原理。 四、实验原理: 两片74LS181 芯片以并/串形式构成的8位字长的运算器。右方为低4位运算芯片,左方为高4位运算芯片。低位芯片的进位输出端Cn+4与高位芯片的进位输入端Cn相连,使低4位运算产生的进位送进高4位。低位芯片的进位输入端Cn可与外来进位相连,高位芯片的进位输出到外部。 两个芯片的控制端S0~S3 和M 各自相连,其控制电平按表2.6-1。为进行双操作数运算,运算器的两个数据输入端分别由两个数据暂存器DR1、DR2(用锁存器74LS273 实现)来锁存数据。要将内总线上的数据锁存到DR1 或DR2 中,则锁存器74LS273 的控制端LDDR1 或LDDR2 须为高电平。当T4 脉冲来到的时候,总线上的数据就被锁存进DR1 或DR2 中了。 为控制运算器向内总线上输出运算结果,在其输出端连接了一个三态门(用74LS245 实现)。若要将运算结果输出到总线上,则要将三态门74LS245 的控制端ALU-B 置低电平。否则输出高阻态。数据输入单元(实验板上印有INPUT DEVICE)用以给出参与运算的数据。其中,输入开关经过一个三态门(74LS245)和内总线相连,该三态门的控制信号为SW-B,取低电平时,开关上的数据则通过三态门而送入内总线中。 总线数据显示灯(在BUS UNIT 单元中)已与内总线相连,用来显示内总线上的数据。控制信号中除T4 为脉冲信号,其它均为电平信号。 由于实验电路中的时序信号均已连至“W/R UNIT”单元中的相应时序信号引出端,因此,需要将“W/R UNIT”单元中的T4 接至“STATE UNIT”单元中的微动开关KK2 的输出端。在进行实验时,按动微动开关,即可获得实验所需的单脉冲。 S3、S2、 S1、S0 、Cn、M、LDDR1、LDDR2、ALU-B、SW-B 各电平控制信号则使用“SWITCHUNIT”单元中的二进制数据开关来模拟,其中Cn、ALU-B、SW-B 为低电平有效,LDDR1、LDDR2 为高电平有效。 对于单总线数据通路,作实验时就要分时控制总线,即当向DR1、DR2 工作暂存器打入数据时,数据开关三态门打开,这时应保证运算器输出三态门关闭;同样,当运算器输出结果至总线时也应保证数据输入三态门是在关闭状态。 运算结果表

计算机组成原理实验报告

《计算机组成原理》 实验报告 实验室名称:S402 任课教师:邹洋 小组成员:王娜任芬 学号:2010212121 2010212119

实验一_HAMMING码 (2) 实验二_乘法器 (7) 实验三_时序部件 (16) 实验四_CPU__算术逻辑单元实验 (24) 实验五_CPU__指令译码器实验 (32) 实验六_CPU_微程序控制器实验1 (43) 实验七_八_CPU实验 (59)

1 编码实验:Hamming码 1.1、实验目的 1、对容错技术有初步了解,理解掌握海明码的原理 2、掌握海明码的编码以及校验方法 1.2、实验原理 海明码是由Richard Hamming于1950年提出的,目前是被广泛采用的很有效的校验编码。它的特点是只要增加少数几个校验位,就能检测出多位出错,并能自动纠错。 Hamming码的实现原理是在数据中加入几个校验位,将数据代码的码距比较均匀的拉大,并把数据的每一个二进制位分配在几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化。这不但可以发现出错,还能指出是哪一位出错,为进一步自动纠错提供了依据。 假设校验位的个数为r,则它能表示2r个信息,用其中的一个信息指出“没有错误”,其余的2r-1个信息指出错误发生在哪一位。然而错误也可能发生在校验位,因此只有k=2r-1-r个信息能用于纠正被传送数据的位数,也就是说要满足关系: 2r≥k+r+1 若要能检测与自动校正一位错,并能发现两位错,此时校验位的位数r和数据位的位数k应满足下述关系:2r-1≥k+r 按上述不等式,可计算出数据位k与校验位r的对应关系,如表1.1所示: 表1.1 数据位k与校验位r的对应关系 k值最小的r值 1~3 4 4~10 5 11~25 6 26~56 7 57~119 8 若海明码的最高位号为m,最低位号为1,即H m H m-1…H2H1,则此海明码的编码规律通常是 1)校验位与数据位之和为m,每个校验位P i在海明码中被分在位号为2i-1的位置上,其余各位为数据位,并按从低向高逐位依次排列的关系分配各数据位。 2)海明码的每一位码H i(包括数据位和校验位本身)由多个校验位校验,其关系是被校验的每一位位号等于校验它的各校验位的位号之和。 3)在增大合法码的码距时,所有码的码距应尽量均匀增大,以保证对所有码的检错能力平衡提高。 下面具体看一下对一个字节进行海明编码的实现过程。 只实现一位纠错两位检错,由前面的表可以看出,8位数据位需要5位校验位,可表示为H13H12…H2H1。 五个校验位P5~P1对应的海明码位号分别为H13、H8、H4、H2和H1。P5只能放在H13位

计算机组成原理第四次实验报告

实验报告 专业班级: 姓 名: 机器号: 学 号: E-mail: 指导教师: 总成绩: 分步成绩: 出勤: 实验表现 实验报告: 实验五 模型机与机器指令执行实验 一 实验目的 1 实验目的 (1) 掌握控制器的工作原理 (2) 掌握由控制器、运算器、存储器、组成的模型机的工作原理 (3) 通过运行各种简单程序,掌握机器指令和微指令的关系 2 实验要求 (1) 做好实验预习和准备工作,掌握本次实验所用指令系统功能 (2) 将实验用汇编语言源文件编译成机器语言的目标文件 (3) 完成规定的实验内容 (4) 故障分析与排除 (5) 实验结束时完成实验报告,并将报告提交服务器。 二 实验原理 模型机的逻辑框图如图所示。其指令系统和微指令系统可参看资料。在本实验中,模型机作为一个整体工作。所有微程序的控制信号由微程序存储器uM 输出。而各寄存器,运算器的控制端口与uM 联接。 计算机组成原理 机 A W T D L R ST R3R2R1 R0 MAR keyin portout PC mem_a mem_d IR Control 24 ALU DBUS ABUS IA IBUS INT_CODE Display Input SRAM

ADD A,#106 071C01不带进位加法C7FFEF FFFE90 CBFFFF 07 08 08 1C 1D 1E EM=01 EM=CC,W=01 EM=06,A=01 RET08CC返回语句FEFF5F CBFFFF 09 04 CC CD EM=00 EM=06 JMP LOOP04 05AC02无条件跳转语句C6FFFF CBFFFF 05 02 AC AD EM=02 EM=BC 四思考题 1,简述IR寄存器的作用,IR0,IR1的作用。IR2,IR3的作用。 答:IR寄存器用来存放从主存储器读出的一条指令。 IR0:用来存放后续指令地址。 IR1:保存当前正在执行的一条指令 IR2:保存将被存储的下一个数据字节的地址。 IR3:保存当前CPU所访问的主存单元的地址。 2,简述跳转指令的执行过程。 答:首先从SRAM中取指令经IBUS存入IR寄存器,并且解析指令,然后将指令码存入μPC,根据μPC从μM中读出微指令,通过控制端口执行该组微指令,该组微指令有两条,所执行的操作为:以PC为地址从EM中读出数据并送到数据总线上,再将数据总线上的数据存入PC中。该组微指令执行完毕后,从PC中将下一条指令的地址输出到MAR,再从MAR输入到SRAM,从SRAM中读取下一条指令,该条指令就是跳转到的标号位置的指令。 实验六指令/微指令设计实验 一实验目的 1 掌握计算机各种指令的设计和执行过程; 2 掌握指令/微指令的设计方法。 二实验原理 COP2000计算机组成原理实验仪,可以由用户自己设计指令/微指令系统,这样用户可以在现有的指令系统上进行扩充,加上一些较常用的指令,也可重新设计一套完全不同的指令/微指令系统。 做为原理,我们建立一个有如下指令的系统: 指令助记符指令意义描述 LD A,#II将立即数装入累加器A ADD A,#II累加器A加立即数 GOTO MM无条件跳转指令 OUTA累加器A输出到端口 因为硬件系统需要指令机器码的最低两位做为R0-R3寄存器寻址用,所以指令机器码要忽略掉这两位。这四条指令的机器码分别为04H,08H,0CH,10H。其它指令的设计相同。 指令系统设计 1.打开COP2000组成原理实验软件,选择[文件|新建指令系统/微程序],观察软件下方的“指令系统”窗口,所有指令码都“未使用”。

c计算器实验报告

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 6.0中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在calculatorDlg.h中添加math.h头文件,然后添加public成员。 7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始化和完善各控件 的响应函数代码。

(3)程序清单: 添加的public成员: double tempvalue; //存储中间变量 double result; //存储显示结果的值 int sort; //判断后面是何种运算:1.加法 2.减法 3.乘法 4.除法 int append; //判断后面是否添加数字 成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = 0.0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0;

计算机组成原理 实验4

实验四模型机设计 1 实验目的 (1) 掌握一个简单CPU的组成原理。 (2) 在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机。 (3) 为其定义五条机器指令,编写相应的微程序,并上机调试掌握整机概念。 2 实验设备 PC机一台,TD-CMA实验系统一套。 3 实验原理 本实验要实现一个简单的CPU,并且在此CPU的基础上,继续构建一个简单的模型计算机。CPU由运算器(ALU)、微程序控制器(MC)、通用寄存器(R0),指令寄存器(IR)、程序计数器(PC)和地址寄存器(AR)组成,如图4-1所示。这个CPU在写入相应的微指令后,就具备了执行机器指令的功能,但是机器指令一般存放在主存当中,CPU必须和主存挂接后,才有实际的意义,所以还需要在该CPU的基础上增加一个主存和基本的输入输出部件,以构成一个简单的模型计算机。 图4-1 基本CPU构成原理图 除了程序计数器(PC),其余部件在前面的实验中都已用到,在此不再讨论。系统的程序计数器(PC)和地址寄存器(AR)集成在一片CPLD芯片中。CLR连接至CON单元的总清端CLR,按下CLR按钮,将使PC清零,LDPC和T3相与后作为计数器的计数时钟,当LOAD为低时,计数时钟到来后将CPU内总线上的数据打入PC。

T3 CLR 图4-2 程序计数器(PC)原理图 本模型机和前面微程序控制器实验相比,新增加一条跳转指令JMP,共有五条指令:IN(输入)、ADD(二进制加法)、OUT(输出)、JMP(无条件转移),HLT(停机),其指令格式如下(高4位为操作码): 助记符机器指令码说明 IN0010 0000IN R0 ADD0000 0000R0 + R0 R0 OUT0011 0000R0 OUT JMP addr1110 0000 ********addr PC HLT0101 0000停机 其中JMP为双字节指令,其余均为单字节指令,********为addr对应的二进制地址码。微程序控制器实验的指令是通过手动给出的,现在要求CPU自动从存储器读取指令并执行。根据以上要求,设计数据通路图,如图4-3所示。 本实验在前一个实验的基础上增加了三个部件,一是PC(程序计数器),另一个是AR(地址寄存器),还有就是MEM(主存)。因而在微指令中应增加相应的控制位,其微指令格式如表4-1所示。

计算机组成实验报告汇总

计算机组成与体系结构 实验报告

实验项目一 一、实验目的 通过了解高级语言源程序和目标机器代码的不同表示及其相互转换,深刻理解高级语言和机器语言之间的关系,以及机器语言和不同体系结构之间的关系。 二、实验要求: 在VC6.0中创建下列源程序 #include void main() { inti=100; int j=-1; int k; k=i+j; printf("%d",k); } 然后对该程序进行编译、链接,最终生成可执行目标代码。 三、实验报告 1.给出做实验的过程. 关键代码如下:

2.给出源程序(文本文件)的内容(用十六进制形式表示)。 3.给出可执行目标文件(二进制文件)的内容(用十六进制形式表示)。

4.VC6.0调试环境:设置断点、单步运行、变量的值(十进制、十六进制)、变量的地址、变量的存储。 断点设置如下:

变量的值十进制: 变量的值十六进制: 变量的地址:

5.VC 6.0反汇编:查看源程序对应的汇编程序、可执行目标程序的二进制编码、了解如何给变量分配内存、系统函数程序段的调用。 6.分析或回答下列问题。 (1)分析同一个源程序在不同机器上生成的可执行目标代码是否相同。 不相同。因为不同的机器硬件的组成不同,因此同一个源程序在不同的机器上生成的目标文件不同。 (2)你能在可执行目标文件中找出函数printf()对应的机器代码段吗?能的话,请标示出来。 不能。因为源程序中的printf函数在可执行文件中已转换为机器语言。被翻译的机器语言中有printf函数,但是不知道是从哪一段开始翻译的。 (3)为什么源程序文件的内容和可执行目标文件的内容完全不

计算机组成原理实验报告

实验报告书 实验名称:计算机组成原理实验 专业班级:113030701 学号:113030701 姓名: 联系电话: 指导老师:张光建 实验时间:2015.4.30-2015.6.25

实验二基本运算器实验 一、实验内容 1、根据原理图连接实验电路

3、比较实验结果与手工运算结果,如有错误,分析原因。 二、实验原理 运算器可以完成算术,逻辑,移位运算,数据来自暂存器A和B,运算方式由S3-S0以及CN来控制。运算器由一片CPLD来实现。ALU的输入和输出通过三态门74LS245连接到CPU内总线上。另外还有指示灯进位标志位FC和零标志位FZ。 运算器原理图: 运算器原理图 暂存器A和暂存器B的数据能在LED灯上实时显示。进位进位标志FC、零标志FZ 和数据总线D7…D0 的显示原理也是如此。 ALU和外围电路连接原理图:

ALU和外围电路连接原理图运算器逻辑功能表:

三、实验步骤 1、按照下图的接线图,连接电路。 2、将时序与操作台单元的开关KK2 置为‘单拍’档,开关KK1、KK3 置为‘运行’档。 3、打开电源开关,如果听到有‘嘀’报警声,说明有总线竞争现象,应立即关闭电源,重新检查接线,直到错误排除。然后按动CON 单元的CLR 按钮,将运算器的A、B 和FC、FZ 清零。 4、用输入开关向暂存器A 置数。 ①拨动CON 单元的SD27…SD20 数据开关,形成二进制数01100101 (或其它数值),数据显示亮为‘1’,灭为‘0’。 ②置LDA=1,LDB=0,连续按动时序单元的ST 按钮,产生一个T4 上沿,则将二进制数01100101 置入暂存器A 中,暂存器A 的值通过ALU 单元的 A7…A0 八位LED 灯显示。 5、用输入开关向暂存器B 置数。 ①拨动CON 单元的SD27…SD20 数据开关,形成二进制数10100111 (或其它数值)。 ②置LDA=0,LDB=1,连续按动时序单元的ST 按钮,产生一个T4 上沿,则将二进制数10100111 置入暂存器B 中,暂存器B 的值通过ALU 单元的 B7…B0 八位LED 灯显示。 6、改变运算器的功能设置,观察运算器的输出。置ALU_B=0 、LDA=0、LDB=0,然后按表2-2-1 置S3、S2、S1、S0 和Cn的数值,并观察数据总线LED 显示灯显示的结果。如置S3、S2、S1、S0 为0010 ,运算器作逻辑与运算,置S3、S2、

计算机组成原理实验

实验一基础汇编语言程序设计 一、实验目的: 1、学习和了解TEC-XP16教学实验系统监控命令的用法。 2、学习和了解TEC-XP16教学实验系统的指令系统。 3、学习简单的TEC-XP16教学实验系统汇编程序设计。 二、预习要求: 1、学习TEC-XP16机监控命令的用法。 2、学习TEC-XP16机的指令系统、汇编程序设计及监控程序中子程序调用。 3、学习TEC-XP16机的使用,包括开关、指示灯、按键等。 4、了解实验内容、实验步骤和要求。 三、实验步骤: 在教学计算机硬件系统上建立与调试汇编程序有几种操作办法。 第一种办法,是使用监控程序的A命令,逐行输入并直接汇编单条的汇编语句,之后使用G命令运行这个程序。缺点是不支持汇编伪指令,修改已有程序源代码相对麻烦一些,适用于建立与运行短小的汇编程序。 第二种办法,是使用增强型的监控程序中的W命令建立完整的汇编程序,然后用M命令对建立起来的汇编程序执行汇编操作,接下来用G命令运行这个程序。适用于比较短小的程序。此时可以支持汇编伪指令,修改已经在内存中的汇编程序源代码的操作更方便一些。 第三种办法,是使用交叉汇编程序ASEC,首先在PC机上,用PC机的编辑程序建立完整的汇编程序,然后用ASEC对建立起来的汇编程序执行汇编操作,接下来把汇编操作产生的二进制的机器指令代码文件内容传送到教学机的内存中,就可以运行这个程序了。适用于规模任意大小的程序。

在这里我们只采用第一种方法。 在TEC-XP16机终端上调试汇编程序要经过以下几步: 1、使教学计算机处于正常运行状态(具体步骤见附录联机通讯指南)。 2、使用监控命令输入程序并调试。 ⑴用监控命令A输入汇编程序 >A 或>A 主存地址 如:在命令行提示符状态下输入: A 2000↙;表示该程序从2000H(内存RAM区的起始地址)地址开始 屏幕将显示: 2000: 输入如下形式的程序: 2000: MVRD R0,AAAA ;MVRD 与R0 之间有且只有一个空格,其他指令相同 2002: MVRD R1,5555 2004: ADD R0,R1 2005: AND R0,R1 2006: RET ;程序的最后一个语句,必须为RET 指令 2007:(直接敲回车键,结束A 命令输入程序的操作过程) 若输入有误,系统会给出提示并显示出错地址,用户只需在该地址重新输入正确的指令即可。 ⑵用监控命令U调出输入过的程序并显示在屏幕上 >U 或>U 主存地址

《计算机组成原理》实验报告四

《计算机组成原理》 实 验 报 告 学院:数学与计算机学院 专业:软件工程 班级学号: 学生姓名: 实验日期: 2014-11-8 指导老师: 成绩评定: 西华大学数学与计算机学院计算机组成原理实验 室 实验四存储器和总线实验 一、实验目的 熟悉存储器和总线的硬件电路

二、实验要求 按照实验步骤完成实验项目,熟悉存储器的读、写操作,理解在总线上数据传输的方法。 三、实验说明 (一)存储器和总线的构成 1.总线由一片74LS245、一片74LS244组成,把整个系统分为内部总线和外部总线。二片74LS374锁存当前的数 据、地址总线上的数据以供LED显示。(如图8)

图8 总线布局图 2.存储器采用静态RAM(1片6264) 3.存储器的控制电路由一片74LS32和74LS08组成。如图9

图9 存储器控制电路布局图(二)存储器和总线的原理

1.总线的原理:由于本系统内使用8根地址线、8根数据线,所以使用一片74LS245作为数据总线,另一片 74LS244作为地址总线(如图10)。总线把整个系统分为内部数据、地址总线和外部数据、地址总线,由于数据总线需要进行内外部数据的交换,所以由BUS信号来控制数据的流向,当BUS=1时数据由内到外,当 BUS=0时数据由外到内。 图10 总线单元 2.由于本系统内使用8根地址线、8根数据线,所以6264的A8~A12接地,其实际容量为256个字节(如图11)。 6264的数据、地址总线已经接在总线单元的外部总线 上。存储器有3个控制信号:地址总线设置存储器地 址,RM=0时,把存储器中的数据读出到总线上;当 WM=0,并且EMCK有一个上升沿时,把外部总线上的数据写入存储器中。为了更方便地编辑内存中的数 据,在实验机处于停机状态时,可由监控来编辑其中的数据。

BCD计数器实验报告

程序代码: module counter(sa,sb,ma,mb,ha,hb,clk,clear,HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,clkout); input clk,clear; output sa,sb,ma,mb,ha,hb,HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,clkout; reg [3:0]sa,sb,ma,mb,ha,hb; reg [6:0]HEX0,HEX1,HEX2,HEX3,HEX4,HEX5; reg clkout; reg [30:0]i; always @(posedge clk) begin if(i===13499999) begin i=0; clkout=~clkout; end else i=i+1; end always @(posedge clear or negedge clkout) begin if(clear) begin sa<=4'b0; sb<=4'b0; ma<=4'b0; mb<=4'b0; ha<=4'b0; hb<=4'b0; end else if((ha==4)&(hb==2)) begin ha<=4'b0; hb<=4'b0; end else if(ha>9)

begin ha<=4'b0; hb<=hb+1; end else if((ma==9)&(mb==5)) begin ma<=4'b0; mb<=4'b0; ha<=ha+1; end else if(ma>9) begin ma<=4'b0; mb<=mb+1; end else if((sb==5)&(sa==9)) begin ma<=ma+1; sb<=4'b0; sa<=4'b0; end else if(sa==9) begin sb<=sb+1; sa<=4'b0; end else begin sa<=sa+1; end end always@(sa or HEX0) begin case(sa) 4'b0000: HEX0=7'b1000000; 4'b0001: HEX0=7'b1111001; 4'b0010: HEX0=7'b0100100; 4'b0011: HEX0=7'b0110000; 4'b0100: HEX0=7'b0011001; 4'b0101: HEX0=7'b0010010; 4'b0110: HEX0=7'b0000010;

计算机组成原理实验七

图16 启停单元布局图 序电路由1片74LS157、2片74LS00、4个LED PLS2、PLS3、PLS4)组成。当LED发光时 图17

图17 时序单元布局图 (二)启停、脉冲单元的原理 1.启停原理:(如图18) 启停电路由1片7474组成,当按下RUN按钮,信号输出RUN=1、STOP=0,表示当前实验机为运行状态。当按下STOP 按钮,信号RUN=0、STOP=1,表示当前实验机为停止状态。当 系统处于停机状态时,微地址、进位寄存器都被清零,并且可 通过监控单元来读写内存和微程序。在停止状态下,当HALT 时有一个高电平,同时HCK有一个上升沿,此时高电平被打入 寄存器中,信号输出RUN=1、STOP=0,使实验机处于运行状态。

图18 启停单元原理图 2.时序电路: 时序电路由监控单元来控制时序输出(PLS1、PLS2、PLS3、PLS4)。实验所用的时序电路(如图19)可产生4个等间隔的时序信号PLS1、PLS2、PLS3、PLS4。为了便于监控程序流程,由监控单元输出PO信号和SIGN脉冲来实现STEP(微单步)、GO (全速)和HALT(暂停)。当实验机处于运行状态,并且是微单步执行,PLS1、PLS2、PLS3、PLS4分别发出一个脉冲,全速执行时PLS1、PLS2、PLS3、PLS4脉冲将周而复始的发送出去。在时序单元中也提供了4个按钮,实验者可手动给出4个独立的脉冲,以便实验者单拍调试模型机。

图19 时序电路图 实验步骤 1.交替按下“运行”和“暂停”,观察运行灯的变化(运行:RUN 亮;暂停:RUN灭)。 2.把HALT信号接入二进制拨动开关,HCK接入脉冲单元的PLS1。按下表接线 接入开关位号 信号定 义 HCK PLS1孔 HALT H13孔 3.按启停单元中的停止按钮,置实验机为停机状态,HALT=1。 4.按脉冲单元中的PLS1脉冲按键,在HCK上产生一个上升

计算机组成原理实验报告

实验一 实验题目:运算器实验 实验目的:熟悉存储器和总线的硬件电路 实验要求:按照实验步骤完成实验项目,利用存储器和总线传输数据 实验器材:计算机组成原理实验仪 实验电路图/程序流程图: 实验步骤/程序源代码: 实验原理:实验中所用的运算器原理如图1所示。其中运算器由两片74LS181以并/川形式构成8位字长的ALU。运算器的输出经过有一个三态门(74LS245)和数据总线相连,运算器的两个数据输入端分别由两个锁存器锁存,锁存器的输入已连至数据总线,数据开关用来给出参与运算的数据,经一三态门和数据总线相连,数据显示灯已和数据总线相连,用来显示数据总线内容。 本实验装置的控制线应与相连,数据总线、时序电路产生的脉冲信号(T1-T4)、P(1)、P(2)、P(3)本实验装置已做连接,必须选择一档合适的时钟,其余均为电平控制信号。进行实验室,首先按动位于本实验装置右中则的复位按钮使系统进入初始待令状态,在LED显示器闪动出现“P”的环境下,按动增址命令键使LED显示器自左向右第一位显示提示符“H”,表示本装置已进入手动单元实验状态,在该状态下按动单步命令键,即可获得实验所需的单脉冲信号,而各电平控制信号用位于LED显示器左方的K25-K0二进制数据开关来模拟。在进行手动实验时,必须先预置开关电平:/Load=1,/CE=1,其余开关控制信号电平均置为0,这在以后手动实验时不再说明,敬请注意。 实验连接:按上图实验线路作以下连接: (1)八位运算器控制信号连接:位于实验装置左上方的控制信号(CTR-OUT UNIT)中的(S3、S2、S1、S0、M、/CN、LDDR1、LDDR2、LDCZY、C、B、A)与位于实验装置右中方的(CTR-IN UNIT)、位于实验装置左中方的(UPC UNIT)、位于右上方的(FL UNIT)做对应链接。 (2)完成上述连接,仔细检查无误后方可接通电源进入实验。 实验仪器工作状态设定 在闪动的“P”状态下按动“增址”命令键,使LED显示器自左向右第一位显示提示符“H”,

c计算器实验报告

c计算器实验报告集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、 乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和 单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在中添加头文件,然后添加public成员。 7)打开文件,在构造函数中,进行成员初始化和完善各控件的 响应函数代码。 (3)程序清单: 添加的public成员: double tempvalue; 法 2.减法 3.乘法 4.除法

int append; //判断后面是否添加数字 ●成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = ; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0; result=0; sort=0; append=0; } ●各控件响应函数代码: void CCalculatorDlg::OnButton1() //按钮“1” { // TODO: Add your control notification handler code here if(append==1)result=0;

计算机组成原理_实验报告四(含答案)

湖南科技学院 电子与信息工程学院 实验报告 课程名称: 姓名: 学号: 专业: 班级: 指导老师:

实验四微程序控制组成实验 一、实验目的及要求 1.将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机。 2.用微程序控制器控制模型计算机的数据通路。 3.执行给定的简单程序,掌握机器指令与微指令的关系,牢固建立计算机的整机概念。 二、实验电路 本次实验将前面几个实验中的所模块,包括运算器、存储器、通用寄存器堆等同微程序控制器组合在一起,构成一台简单的模型机。这是最复杂的一个实验,也将是最有收获的一个实验。 在前面的实验中,实验者本身作为“控制器”,完成了对数据通路的控制。而在本次实验中,数据通路的控制将交由微程序控制器来完成。实验机器从内存中取出一条机器指令到执行指令结束的一个指令周期,是由微程序完成的,即一条机器指令对应一个微程序序列。 实验电路大致如下面框图所示。其中控制器是控制部件,数据通路是执行部件,时序发生器是时序部件。需使用导线将各个部件控制信号与控制器相连。 三、实验主要仪器设备 1.TEC-5计算机组成实验系统1台 2.逻辑测试笔一支(在TEC-5实验台上) 四、实验任务 1.对机器指令组成的简单程序进行译码。将下表的程序按机器指令格式手工汇编成二进制机器代码, 此项任务请在预习时完成。 2. 3.使用控制台命令将寄存器内容初始化为:R0=11H,R1=22H,R2=0AAH。

4.使用控制台命令将任务1中的程序代码存入内存中(注意起始地址为30H),以及将内存地址为 11H的单元内容设置为0AAH。 5.用单拍(DP)方式执行一遍程序,执行时注意观察各个指示灯的显示并做好记录(完成实验表格), 从而跟踪程序执行的详细过程(可观察到每一条微指令的执行过程)。 6.用连续方式再次执行程序。这种情况相当于计算机正常的工作。程序执行到STP指令后自动停机。 读出寄存器中的运算结果,与理论值比较。 五、实验步骤和实验结果记录 1.程序译码。 2.实验接线(本实验接线比较多,需仔细) 只要把上表种同列的信号用线连接即可,一共接线33条。 接好线后,将编程开关拨到“正常位置”。合上电源,按CLR#按钮,使TEC-5实验实验系统处于初始状态。 3.实验任务3:使用控制台命令将寄存器内容初始化为:R0=11H,R1=22H,R2=0AAH的操作步骤及结果记录。 (1)掌握写寄存器WRF的原理和步骤(详见实验参考资料)。 (2)操作过程如下:

计算机组成原理实验报告

计算机组成原理实验报告 ——微程序控制器实验 一.实验目的: 1.能瞧懂教学计算机(TH-union)已经设计好并正常运行的数条基本指令的功能、格式及执 行流程。并可以自己设计几条指令,并理解其功能,格式及执行流程,在教学计算机上实现。 2.深入理解计算机微程序控制器的功能与组成原理 3.深入学习计算机各类典型指令的执行流程 4.对指令格式、寻址方式、指令系统、指令分类等建立具体的总体概念 5.学习微程序控制器的设计过程与相关技术 二.实验原理: 微程序控制器主要由控制存储器、微指令寄存器与地址转移逻辑三大部分组成。 其工作原理分为: 1、将程序与数据通过输入设备送入存储器; 2、启动运行后从存储器中取出程序指令送到控制器去识别,分析该指令要求什么事; 3、控制器根据指令的含义发出相应的命令(如加法、减法),将存储单元中存放的操作数据取出送往运算器进行运算,再把运算结果送回存储器指定的单元中; 4、运算任务完成后,就可以根据指令将结果通过输出设备输出 三.微指令格式: 其中高八位为下地址字段、其余各位为控制字段、 1)微地址形成逻辑 TH—UNION 教学机利用器件形成下一条微指令在控制器存储器的地址、 下地址的形成由下地址字段及控制字段中的CI3—SCC控制、当为顺序执行时,下地址字段不起作用、下地址为当前微指令地址加1;当为转移指令(CI3—0=0011)时,由控制信号SCC 提供转移条件,由下地址字段提供转移地址、 2)控制字段 控制字段用以向各部件发送控制信号,使各部件能协调工作。 控制字段中各控制信号有如下几类: ①对运算器部件为了完成数据运算与传送功能,微指令向其提供了24位的控制信号,包括:4位的A、B口地址,用于选择读写的通用积存器3组3位的控制码I8-I6、 I5-I3、I2-I6,用于选择结果处置方案、运算功能、数据来源。 3组共7位控制信号控制配合的两片GAL20V8 3位SST,用于控制记忆的状态标志位 2位SCI,用于控制产生运算器低位的进位输入信号 2位SSH,用于控制产生运算器最高,最地位(与积存器)移位输入信号 ②对内存储器I/O与接口部件,控制器主要向它们提供读写操作用到的全部控制信号,共3位,即MRW

计算机组成原理上机实验报告

《计算机组成原理实验》课程实验报告 实验题目组成原理上机实验 班级 1237-小 姓名 学号 时间 2014年5月 成绩

实验一基本运算器实验 1.实验目的 (1)了解运算器的组成原理 (2)掌握运算器的工作原理 2.实验内容 输入数据,根据运算器逻辑功能表1-1进行逻辑、移位、算术运算,将运算结果填入表1-2。 表 1-1运算器逻辑功能表 表1-2运算结果表

3.实验原理 本实验的原理如图1-1所示。 运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器 A 和暂存器 B,三个部件同时接受来自 A 和 B 的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如 ARM),各部件对操作数进行何种运算由控制信号S3…S0和 CN 来决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为 ALU 的输出。如果是影响进位的运算,还将置进位标志 FC,在运算结果输出前,置 ALU 零标志。ALU 中所有模块集成在一片 CPLD 中。 图 1-1 运算器原理图 逻辑运算部件由逻辑门构成,较为简单,而后面又有专门的算术运算部件设计实验,在此对这两个部件不再赘述。移位运算采用的是桶形移位器,一般采用交叉开关矩阵来实现,交叉开关的原理如图1-2所示。 图1-2中显示的是一个 4X4 的矩阵(系统中是一个 8X8 的矩阵)。每一个输入都通过开关与一个输出相连,把沿对角线的开关导通,就可实现移位功能,即: (1)对于逻辑左移或逻辑右移功能,将一条对角线的开关导通,这将所有的输入位与所使用的输出分别相连,而没有同任何输入相连的则输出连接 0。 (2)对于循环右移功能,右移对角线同互补的左移对角线一起激活。例如,在 4 位矩阵中使用‘右1’和‘左3’对角线来实现右循环 1 位。 (3)对于未连接的输出位,移位时使用符号扩展或是 0 填充,具体由相应的指令控制。使用另外的逻辑进行移位总量译码和符号判别。 运算器部件由一片 CPLD 实现。ALU 的输入和输出通过三态门 74LS245 连到 CPU 内总线上,另外还有指示灯标明进位标志 FC 和零标志 FZ。请注意:实验箱上凡丝印标注有马蹄形标记‘’,表示这两根排针之间是连通的。图中除 T4 和 CLR,其余信号均来自于 ALU 单元的排线座,实验箱中所有单元的 T1、T2、T3、T4 都连接至控制总线单元的 T1、T2、T3、T4,CLR 都连接至 CON 单元的 CLR 按钮。T4 由时序单元的 TS4 提供(时序单元的介绍见附录二),其余控制信号均由 CON 单元的二进制数据开关模拟给出。控制信号中除 T4 为脉冲信号外,其余均为电平信号,其中 ALU_B 为低有效,其余为高有效。 暂存器 A 和暂存器 B 的数据能在 LED 灯上实时显示,原理如图1-3 所示(以 A0 为例,其

JAVA计算器实验报告

实验:计算器java程序 班级:XXXXXXX 姓名:XXXXX 学号:XXXXXXXX 实验地点:XXXXX 一、实验目的: 通过制作一个计算器让我们了解到组件的运用以及如何制作一个窗口,怎么样使用各种布局管理器,怎么样注册事件的监听,以及怎么样设置按钮或者说组件的监听程序,学会使用java语言的语法规则,掌握接口的使用,了解组建的背景颜色的设置等方法。 二、实验要求: 1.编写一个java计算器程序; 2. 运用组件的方法来布局窗口,运用接口,事件监听程序来完成计算器的功能。 三,实验步骤 1、新建一个类,注册各种组件; 2、获取窗格;设置布局管理器; 3、为各个组件注册监听程序; 4、设置组件的事件监听程序; 5、运行程序,对结果进行截图; 四,设计思路: 1.界面设置布置模块: 使用了awt,swing的类里面的方法来完成界面的布置。其中,容器布置选择了BorderLayout方法来布置面板,选择了GirdLayout方法来布置按钮。 文本区域接收字符从数字按钮的监听中获得。按钮是常规思路添加到面板上。并为按钮注册监听。 2.监听程序思路: 使用tf.getText()+"n"来实现获得文本区域显示按钮字符串,n等于所设置监听的数字按钮。tf.setText()来保存并输出获得的字符串。

使用Double.parseDouble()实现文本区域字符串转换成Double 型数据来完成计算。把ft.setText()中的字符转换成数字。 使用biaozhi==n。的方法来获得启发值。完成运算符按钮的监听。构造方法,运用biaozhi=n,来完成加减乘除小数点的不同运算。 运算后获得结果flag3。ft.setText()获得值显示在文本区域上3.数字按钮输入使用循环会更加简单,减少了十个数字按钮的逐个输入,添加,注册监听 for (int i=0;i<=9;i++){ btn[i]=new Button(String.valueOf(i)); centerPanel.add(btn[i]); btn[i].addActionListener(); } 五,程序实现: package yyy; import java.awt.BorderLayout;//导入边界布局管理器类 import java.awt.Button; import java.awt.GridLayout;//导入网格布局管理器类 import java.awt.TextField;//导入文本区域类 import java.awt.event.ActionEvent;//导入事件类 import java.awt.event.ActionListener;//导入事件监听者类 import javax.swing.JButton;//导入按钮类 import javax.swing.JFrame;//导入窗体 import javax.swing.JPanel;//导入面板 public class jisuanqi8{ //新建对象,在构造函数中进行初始化 JFrame f;//新建窗体对象 JButton buttonzero,buttondot,buttonequal;//新建按钮“0”“.”“=”

相关文档
相关文档 最新文档